Академический Документы
Профессиональный Документы
Культура Документы
INTRODUCCIN
A LA
PROGRAMACIN
1
Programacin I Por Jos Rodolfo Queca
Introduccin
La Computadora
Las computadoras facturan nuestros alimentos, despachan combustible, entregan dinero en el
cajero automtico, encienden y apagan la calefaccin, controlan como andan sus automviles.
Hay diferentes clases de computadoras para diferentes propsitos. Ellas son tan variadas en
su tamao, costo y habilidad.
Concepto
Una computadora es un dispositivo electrnico que ejecuta las instrucciones en un programa.
Programa de computadora
Para decirlo simplemente, un programa es un conjunto de instrucciones detalladas que le
dirn a la computadora que hacer exactamente, paso a paso.
Un programa puede ser tan corto como de una sola lnea de cdigo, o tan largo como de varios
millones de lneas de cdigo (esperemos que los ms extensos realicen una cantidad de cosas
complejas y diferentes!).
2
Programacin I Por Jos Rodolfo Queca
Lenguajes
La programacin 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 accin.
Diferentes lenguajes de computacin han sido escritos, para a su vez escribir con ellos los
cada vez ms complejos programas de computacin. 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 ms bajo nivel. Compuesto de 0 y 1.
de
Mquina
3
Programacin I Por Jos Rodolfo Queca
17 40
18 C0
19 00
000101000100010001000100001000101010111110
000001110101000111110000100010000010101010
Lenguaje Son cdigos o abreviaturas para las instrucciones del lenguaje de mquina.
En un lenguaje Asembler se le asigna un cdigo a cada instruccin en lenguaje
Asembler de mquina. De esta manera, en lugar de tener que recordar una cadena de
(Assembly) ceros y unos, el programador slo tendr que recordar cdigos 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 continuacin 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 cdigo. Note que cada
pequeo paso debe ser codificado y que todo esto solo sirve para mostrar dos
caracteres!
4
Programacin I Por Jos Rodolfo Queca
PROGRAM IDEXMP
INTEGER BUS_NUM
BUS_NUM = 99
WRITE(*,*) ' TAKE BUS ', BUS_NUM
END
El ejemplo que sigue acepta dos nmeros a los que multiplica y los muestra
junto con el resultado de la operacin. Vea el punto de PROCEDURE DIVISION
para notar donde se hizo el clculo.
$ 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.
5
Programacin I Por Jos Rodolfo 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;
}
Java Java es un nuevo lenguaje popular, utilizado para escribir tanto aplicaciones
completas como pequeos applets para las pginas 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 versin de MS Word escrita para su sistema
operativo particular.
6
Programacin I Por Jos Rodolfo Queca
El siguiente ejemplo dibuja un cuadrado en una pgina HTML (Hyper Text Markup
Language) y cuenta el nmero 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;
}
}
Los Algoritmos
Los Algoritmos nos permiten desarrollar o disear la solucin de un problema informtico, y
se la puede definir de la siguiente manera:
Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural,
pseudocdigo, diagramas de flujo y lenguajes de programacin entre otros.
Lenguaje Natural
En un lenguaje as, usted escribira sus declaraciones en lenguaje corriente como frases
normales. Por ejemplo usted escribira: Quines son los vendedores con ventas que superen
los $20.000 durante el mes pasado?
Pseudocdigo
INICIO
Diagramas de Flujo.
a, b, c
p ( a b c) / 2
FIN
Los diagramas de flujo son descripciones grficas de algoritmos; usan smbolos
conectados con flechas para indicar la secuencia de instrucciones ISO(Organizacin
Internacional para la estandarizacin).
Los diagramas de flujo son usados para representar algoritmos pequeos, ya que
abarcan mucho espacio y su construccin es laboriosa. Por su facilidad de lectura son
usados como introduccin a los algoritmos, descripcin de un lenguaje y
descripcin de procesos a personas ajenas a la computacin.
Variables
Estas variables, pueden ser caracteres, nombres, combinaciones que permiten temporalmente
guardar informacin para su manipulacin posteriormente;
La computadora carece de razonamiento, realizara las tareas que el programador instruye que
haga, ella la hace, de acuerdo a nuestro raciocinio
8
Programacin I Por Jos Rodolfo Queca
Por tanto:
Pensemos que datos necesita para realizar una tarea
y donde las guardara, para que luego nos muestre
el resultado en pantalla..
Para:
LECTURA
Para que la computadora peda los datos mediante teclado:
PROCESOS O CALCULOS
Sentencias de Control
Estructuras algortmicas
Pero antes mostramos los diagramas necesarios para realizar el diseo de algoritmos
grficos(Diagrama de flujo)
9
Programacin I Por Jos Rodolfo Queca
Diagramas de Flujo
Los diagramas de flujo son descripciones graficas de algoritmos, los cuales iniciamos
mostrando los mas comunes:
SUBPROGRAMA SUBPROGRAMAS --
CONECTORES ---
Estructuras Secuenciales
10
Programacin I Por Jos Rodolfo Queca
Ejemplo 1: Algoritmo:
: Diagrama de Flujo:
INICIO
1 Inicio
s ab
4 Que la comp. Calcule s=a+b
6 Fin
FIN
Ejemplo 2: Algoritmo:
Realizar un algoritmo para que encuentre el rea de un circulo, dado el radio
de la circunferencia ingresado por teclado
INICIO
Inicio
Leer r
A = 3,1416 * r * r r
Escribir A
Fin
A 3.1416 * r * r
FIN
11
Programacin I Por Jos Rodolfo Queca
Ejemplo 3: Algoritmo:
Realizar un algoritmo para que encuentre el rea de un tringulo rectngulo, dado los
lados de dicho triangulo ingresado por teclado:
INICIO
Pseudocdigo: Diagrama de Flujo:
Inicio
Leer a, b a, b
A=(a*b)/2
a *b
Imprimir A A
Fin 2
Ejemplo 4: Algoritmo:
FIN
Realizar un algoritmo para que convierta grados Fahrenheit a Celsius, dado los
grados F(Fahrenheit) ingresado por teclado: INICIO
Inicio F
Leer F
C=(5/9)*(F 32)
5
C F 32
Imprimir C 9
Fin
Realizar un algoritmo para que encuentre el rea de un tringulo, dado los lados
del tringulo ingresado por teclado:
INICIO
Pseudocdigo: Diagrama de Flujo:
a, b, c
Inicio
Leer a, b, c
p = (a+b+c)/2 1
p ( a b c)
2
area p * ( p a)( p b)( p c)
Imprimir rea
Fin area p * ( p a)( p b)( p c)
rea
12
FIN
Programacin I Por Jos Rodolfo Queca
Ejemplo 6: Algoritmo:
Sabemos que para obtener las races X, Y; por los mtodos de igualacin,
sustitucin, eliminacin determinantes, etc.,la ecuacin:
aX + bY = c INICIO
dX + eY= f
Inicio
Leer a, b, c, d, e, f a,b,c,d,e,f
a* f c*d
Y
a*e b*d
X, Y
FIN
13
Programacin I Por Jos Rodolfo Queca
Estructuras Condicionales.
Para resolver problemas ms 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 condicin, entonces se ejecuta la instruccin el bloque de
instrucciones; en caso contrario, no se ejecutan.
No cumple Si cumple
Condicin
Sentencias Sentencias
Ejemplo 7: 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)
Si no Edad
Escriba (Es Mayor)
Fin si
Fin
No Si
Edad < 18
Mayor Menor
FIN
Ejemplo 8: 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 Si
Nota < 51
Fin
Aprob Reprob
FIN 14
Programacin I Por Jos Rodolfo Queca
Ejemplo 9: Algoritmo:
Desarrolle un algoritmo que le permita leer un valor cualquiera N y escribir si dicho
nmero 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
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 mltiplo de Z)
Sino
Escriba(N no es mltiplo de Z)
Fin si No Si
Fin Res(N/Z)=0
N Mltiplo Z no es mltiplo
FIN
15
Programacin I Por Jos Rodolfo Queca
Inicio W, Z, N
Leer W, Z, N
If (Residuo(W/N)=0 y Residuo(Z/N)=0) entonces
Escriba (N es comn divisor de W y Z)
Sino
Escriba(N no es comn 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
Ejemplo 13: Algoritmo:
Desarrolle un algoritmo que le permita leer un valor
INICIO
cualquiera N y escribir si dicho nmero es comn mltiplo
de M y P. M y P tambin 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 comn mltiplo de M y P)
Si no
Escriba(N no es comn mltiplo 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
FIN
Ejemplo 14: Algoritmo:
Desarrolle un algoritmo que le permita leer dos valores
(A y B) y que escriba cual de los dos valores ledos 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
FIN
16
Programacin I Por Jos Rodolfo Queca
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
Sino A>B y A>C
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
FIN
17
Programacin I Por Jos Rodolfo Queca
INICIO
a, b, c
No Si
a>b
No Si No Si
b>c a>c
Mayor
FIN
Opcin
18
Programacin I Por Jos Rodolfo Queca
INICIO
1 = Lunes
2 = Martes da
3 = Mircoles
4 = Jueves
5 = Viernes
6 = Sbado
7 = Domingo
Segn sea el
da
1 2 3 4 5 6 7
Realizar un algoritmo que dado un nmero entre 1 y 12 imprima a que estacin del ao
pertenece.
12
1 Verano INICIO
2
3
4 Otoo
5
6 Mes
7 Invierno
8
9
10 Primavera
11
Segn sea el
Mes
FIN 19
Programacin I Por Jos Rodolfo Queca
Ejemplo:
Si deseramos ingresar notas de n alumnos (n puede ser: 1, 3, 6, 20, 51, 80, 200 sea
cualquier valor), podra uno definir todas las variables para esas cantidades?. Por cierto
eso podra ser posible, pero seria apropiado hacerlo?, Es por esta y varias razones que
nacieron las sentencias repetitivas.
Sentencias
Sentencias
Sentencias
Realizar un algoritmo Que use una sentencia repetitiva para imprimir nmeros 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
20
Programacin I Por Jos Rodolfo Queca
Realizar un algoritmo que use una sentencia repetitiva para imprimir nmeros desde 1 hasta
n, los nmeros pares empezando del 2, n ser ingresado por teclado.
INICIO
se incrementara enuno cada vez que retorne
n
2 4 6 8 10
I=1 n
FIN
Realizar un algoritmo que use una sentencia repetitiva para imprimir nmeros desde 1 hasta
n, los nmeros impares empezando del 1, n ser ingresado por teclado.
INICIO
se incrementara enuno cada vez que retorne
n 1 3 5 7 9
I=1 n
FIN
21
Programacin I Por Jos Rodolfo Queca
Realizar un algoritmo que use una sentencia repetitiva para imprimir nmeros desde 1 hasta
n, los nmeros pares empezando del 2, n ser ingresado por teclado.
INICIO
se incrementara enuno 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
Realizar un algoritmo que use una sentencia repetitiva para imprimir nmeros desde 1 hasta
n, los nmeros impares empezando del 1, n ser ingresado por teclado.
INICIO
se incrementara enuno cada vez que retorne
n 1 3 5 7 9
I=1 n
FIN
22
Programacin I Por Jos Rodolfo Queca
Sentencia Mientras:
Sentencias
Sintaxis:
Mientras <Condicion>
<Sentencias>
Fin Mientras
Realizar un algoritmo Que use una sentencia repetitiva para imprimir nmeros 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
23
Programacin I Por Jos Rodolfo Queca
Realizar un algoritmo que use una sentencia repetitiva para imprimir nmeros desde 1 hasta
n, los nmeros 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
Realizar un algoritmo que use una sentencia repetitiva para imprimir nmeros desde 1 hasta
n, los nmeros 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
24
Programacin I Por Jos Rodolfo Queca
Sentencias
Sintaxis:
Hacer
<Sentencias>
Mientras <Condicion>
Realizar un algoritmo que use una sentencia repetitiva para imprimir nmeros desde 1 hasta
n, n ingresada por teclado
INICIO
1 2 3 4 5..
n
I=0
I=I+1
Si No
I<=n
FIN
25
Programacin I Por Jos Rodolfo Queca
Realizar un algoritmo que use una sentencia repetitiva para imprimir nmeros desde 1 hasta
n, los nmeros 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
Ejemplo 30: Algoritmo:
Realizar un algoritmo que use una sentencia repetitiva para imprimir nmeros desde 1 hasta
n, los nmeros 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 26
Programacin I Por Jos Rodolfo Queca
Realizar un algoritmo que use una sentencia repetitiva para imprimir nmeros desde 1 hasta
n, los nmeros 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
27
Programacin I Por Jos Rodolfo Queca
* * * * * para N = 5 INICIO
* * * *
* * *
* * N
*
I=N 1
J=1I
Salto d Lnea
INICIO
A=1
I=1 n
A/2*A
A=A+1
FIN
28
Programacin I Por Jos Rodolfo Queca
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
* / * / * / * /* / * /* / * /* / * /
para N trminos
29
Programacin I Por Jos Rodolfo Queca
INICIO
I=1 N
Residuo(I/2)=1
Nota > 51
/ *
FIN
* * * * * para N = 5
* * * * * INICIO
* * * * *
* * * * *
* * * * * N
I=1 N
J=1 N
Salto d Lnea
FIN
30
Programacin I Por Jos Rodolfo Queca
INICIO
Ejemplo 37: Algoritmo:
Salto d Lnea
31
Programacin I Por Jos Rodolfo Queca
* * * * * para N = 5
* * * *
* * *
* *
*
J>=I
Espacio
* * * * * INICIO
* *
* *
* * N
* * * * *
I=1 N
J=1 N
Espacio *
Salto d Lnea
I
32
FIN
Programacin I Por Jos Rodolfo Queca
A=1
B=1
I=1 n
A/2*I
C=A+B
A=B
B=C
FIN
INICIO
J -J
Salto d Lnea
FIN
33
Programacin I Por Jos Rodolfo Queca
1 2 3 4 5 N=5 INICIO
6 7 8 9
10 11 12 N
13 14
15 A = 1
I=N1
J=1 I
A=A+1
Salto d Lnea
I
INICIO
Ejemplo 44: Algoritmo: FIN
N
Imprimir en pantalla el siguiente ejemplo,
N ser ingresada por teclado.
I=1N
1
2 2
3 3 3 J=1 I
4 4 4 4
5 5 5 5 5
J
Salto d Lnea
FIN
34
Programacin I Por Jos Rodolfo Queca
-1
2 -2 I=1N
3 3 -3
4 -4 4 -4
J=1 I
-5 5 5 5 -5
J -J
Salto d Lnea
Realizar un Diagrama de Flujo que cuente los dgitos de un numero N, el valor de N ser
ingresado por teclado.
Ejemplo: INICIO
N = 456 N = 123234
3 dgitos 6 dgitos N
Cont=0
A = Residuo(N/10)
N = N/10
Cont = Cont +1
Si No
N<>0
Cont
FIN
35
Programacin I Por Jos Rodolfo Queca
Realizar un Diagrama de Flujo que rote los dgitos de un nmero, 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
36
Programacin I Por Jos Rodolfo 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[2] = 3
1
a[4] = 1
Columna 2
Columna 3
Columna 1
37
Programacin I Por Jos Rodolfo Queca
Ingresamos valores a algunas de las casillas de este arreglo:
a[1][3] = 5
a[2][2] = 3
5
3
a[3][2] = 1
1
a[5][0] = 9
9
2
Ejemplo 48: Algoritmo:
Realizar un algoritmo que use una sentencia repetitiva para ingresar valores en un arreglo
de n casillas nmeros 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 obtendra:
INICIO
I=0 n-1
a[ I ] = I+1
FIN
38
Programacin I Por Jos Rodolfo 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[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
39
Programacin I Por Jos Rodolfo 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
nom
a[ I ] = nom
I=0 n-1
a[ I ]
FIN
40
Programacin I Por Jos Rodolfo Queca
Realizar un algoritmo que use sentencias repetitivas para ingresar valores en un arreglo de
4 filas y 4 columnas.
Ejemplo:
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
41
Programacin I Por Jos Rodolfo 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.
A B C
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
42
Programacin I Por Jos Rodolfo Queca
Codificacin
Etapas de la Programacin
Para llegar a tener una secuencia de instrucciones que den solucin a un problema es
necesario ejecutar varias etapas.
Etapa de Solucin general: Escribir la serie de pasos que sean necesarios para dar
solucin al problema. Estos pasos se pueden desarrollar a travs de un Diagrama de flujo
(Utilizando smbolos) a travs de un seudo lenguaje (Utilizando Lenguaje
comn). 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
solucin da solucin 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 Programacin
Lenguaje de programacin, 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 programacin como ser: Turbo C,
Visual Basic.NET, C#.NET, J#.NET de visual Studio 2005.
43
Programacin I Por Jos Rodolfo Queca
Lenguaje C
C (Informtica), lenguaje de programacin desarrollado en 1972 por el estadounidense Dennis
Ritchie en los Laboratorios Bell. Debe su nombre a que su predecesor inmediato haba sido
llamado lenguaje de programacin B. Aunque muchos consideran que C es un lenguaje
ensamblador ms independiente de la mquina que un lenguaje de alto nivel
Definicin de funciones.
int main(void)
{
Declaracin de variables propias del programa principal (o sea, locales a main).
Programa principal.
return 0;
}
Definicin de funciones.
void main(void)
{
Declaracin de variables propias del programa principal (o sea, locales a main).
Programa principal.
}
44
Programacin I Por Jos Rodolfo Queca
Codificacin al lenguaje C:
TERMINAL {} INICIO / FIN
cin>>a;
a, b, c cin>>b; Lectura p/teclado
cin>>c;
D = a+b+c
S = 4*D D = a+b+c;
S= 4*D;
D cout<<D; Impresion en
Pantalla
Tiene D Bolivianos
cout<<Tiene cout <<D cout<<Bolivianos;
D>0 If (D > 0)
{
< Sentencias >;
}
Sentencias
f (D > 0) Si,
{
D>0 < Sentencias >
}
Else
{
Sentencias Sentencias < Sentencias >;
}
do
{
Sentencias
< Sentencias >; Hacer Mientras
45
Programacin I Por Jos Rodolfo Queca
Ejemplo 53:
Realizar la codificacin en C del siguiente diagrama de flujo.
#include<iostream.h>
void main(void)
INICIO {
int a,b,s;
cin>>a;
a, b cin>>b;
s ab s = a + b;
s cout<<s;
FIN }
Ejemplo 54:
Realizar la codificacin en C del siguiente diagrama de flujo.
#include<iostream.h>
void main(void)
INICIO {
Double r,A;
cin>>r;
r
A 3.1416 * r * r A = 3.1416* r * r ;
A cout<<A;
FIN }
46
Programacin I Por Jos Rodolfo Queca
Ejemplo 55:
Realizar la codificacin en C del siguiente diagrama de flujo.
#include<iostream.h>
void main(void)
INICIO
{
int Nota;
Nota
cin>>Nota;
Si
Nota < 51 If (Nota<51)
cout<<Reprobo;
Aprob Reprob else
cout<<Aprobo;
FIN }
Ejemplo 56:
Realizar la codificacin en C del siguiente diagrama de flujo.
#include<iostream.h>
INICIO
void main(void)
{
a, b, c
Double a,b,c,D,X,I,X1,X2;
cin>>a>>b>>c;
D=b*b-4*a*c D = b*b-4* a * c ;
No Si
D<0 If (D<0)
D=D*(-1);
X1=(-b+sqrt(D))/(2*a) D=D*(-1) X=-b/(2*a);
X2=(-b-sqrt(D))/(2*a) X=-b/(2*a)
I=sqrt(D)/(2*a)
I=sqrt(D)/(2*a);
cout<<X<<I;
X1, X2 else
X1=(-b+sqrt(D))/(2*a);
X, I
X2=(-b-sqrt(D))/(2*a);
cout<<X1<<X2;
}
FIN
47
Programacin I Por Jos Rodolfo Queca
Operadores:
48
Programacin I Por Jos Rodolfo Queca
Lenguaje Java
JAVA (informtica), lenguaje de programacin orientado a objetos desarrollado por la empresa
Sun Microsystems en 1995 y que se ha extendido ampliamente en World Wide Web. Es un lenguaje
de alto nivel y propsito general similar a C++, con marcadas caractersticas de seguridad y
transportabilidad. Este lenguaje define una mquina virtual independiente de la plataforma
donde se ejecuta, que procesa programas, llamados Applets, descargados desde el servidor
Web.
49
Programacin I Por Jos Rodolfo Queca
a = Integer.parseInt(entrada.readLine());
a, b, c b = Integer.parseInt(entrada.readLine()); Lectura p/teclado
c = Integer.parseInt(entrada.readLine());
D = a+b+c
S = 4*D D = a+b+c;
S= 4*D;
D>0 If (D > 0)
{
< Sentencias >;
}
Sentencias
f (D > 0) Si,
{
D>0 < Sentencias >
}
Else
{
Sentencias Sentencias < Sentencias >;
}
do
{
Sentencias
< Sentencias >; Hacer Mientras
50
Programacin I Por Jos Rodolfo Queca
Ejemplo 57:
Realizar la codificacin en J# del siguiente diagrama de flujo
import java.io.*;
package Ejemplo1;
s
System.out.println (s);
FIN }
}
Ejemplo 58:
Realizar la codificacin en J# del siguiente diagrama de flujo
import java.io.*;
package Ejemplo1;
No Si if(Nota<51)
Nota < 51
System.out.println (Reprobo);
else
Aprob Reprob System.out.println (Aprobo);
FIN
}
}
51
Programacin I Por Jos Rodolfo Queca
Operadores:
Aplicacin de Consola
package Ejemplo;
/**
* Descripcin breve de Program
*/
public class Program
{
public static void main(String[] args)
{
//
// TODO: Agregar aqu el cdigo para iniciar la aplicacin
//
}
}
52
Programacin I Por Jos Rodolfo Queca
Lenguaje C#
C#, en informtica (lase ce sharp), nombre dado a un nuevo lenguaje de programacin,
derivado del C/C++, con la finalidad de proporcionar un mtodo sencillo de creacin de
aplicaciones de propsito general y con programacin orientada a objetos (POO).
53
Programacin I Por Jos Rodolfo Queca
x = Console.ReadLine();a = int.Parse(x);
a, b, c x = Console.ReadLine();b = int.Parse(x); Lectura p/teclado
x = Console.ReadLine();c = int.Parse(x);
D = a+b+c
S = 4*D D = a+b+c;
S= 4*D;
D Console.WriteLine(D); Impresion en
Console.WriteLine(Tiene + D+Bolivianos); Pantalla
Tiene D Bolivianos
D>0 If (D > 0)
{
< Sentencias >;
}
Sentencias
f (D > 0) Si,
{
D>0 < Sentencias >
}
Else
{
Sentencias Sentencias < Sentencias >;
}
do
{
Sentencias
< Sentencias >; Hacer Mientras
54
Programacin I Por Jos Rodolfo Queca
Ejemplo 59:
Realizar la codificacin en C# del siguiente diagrama de flujo
using System;
using System.Collections.Generic;
using System.Text;
public class Program
{
INICIO public static void main(String[] args)
{
String x;
Int a,b,s;
a, b x = Console.ReadLine();
a = int.Parse(x);
x = Console.ReadLine();
b = int.Parse(x);
s ab
s=a+b;
s
Console.WriteLine(s);
FIN }
}
Ejemplo 60:
Realizar la codificacin en C# del siguiente diagrama de flujo
using System;
using System.Collections.Generic;
using System.Text;
public class Program
{
public static void main(String[] args)
INICIO {
String x;
int Nota;
x = Console.ReadLine();
Nota Nota = int.Parse(x);
No Si If(Nota<=51)
Nota < 51
Console.WriteLine(Reprobo);
Aprob Reprob
Else
Console.WriteLine(Aprobo);
FIN }
}
55
Programacin I Por Jos Rodolfo Queca
Operadores:
Aplicacin de Consola
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
}
}
}
56
Programacin I Por Jos Rodolfo Queca
Lenguaje Basic
BASIC, en informtica, acrnimo de Beginners All-purpose Symbolic Instruction Code (Cdigo
de Instrucciones Simblicas de Uso General para Principiantes). Se trata de un lenguaje de
programacin de alto nivel desarrollado por los estadounidenses John Kemeny y Thomas Kurtz
en el Dartmouth College a mediados de la dcada de 1960.
Sub Main()
End Sub
End Module
57
Programacin I Por Jos Rodolfo 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
Else
do
Sentencias
< Sentencias > Hacer Mientras
58
Programacin I Por Jos Rodolfo Queca
Ejemplo 61:
Realizar la codificacin 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, b a = CInt(x)
x = Console.ReadLine()
b = CInt(x)
s ab s = a + b
s Console.WriteLine(s)
End Module
Ejemplo 62:
Realizar la codificacin 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
59
Programacin I Por Jos Rodolfo Queca
Operadores:
Aplicacin de Consola
Module Module1
Sub Main()
End Sub
End Module
60
Programacin I Por Jos Rodolfo Queca
Lenguaje PHP
PHP acrnimo de Hypertext Processor es un lenguaje interpretado de alto nivel embebido en
pginas HTML
61
Programacin I Por Jos Rodolfo Queca
Codificacin al lenguaje C:
TERMINAL {} INICIO / FIN
$a = 4;
a, b, c $b = 3; Lectura
$c = 4; (Asignacin)
D = a+b+c
S = 4*D $D = $a+$b+$c;
$S = 4*$D;
D Print($D); Impresin en
Pantalla
Tiene D Bolivianos
Print(Tiene .$D. Bolivianos);
do
{
Sentencias
< Sentencias >; Hacer Mientras
62
Programacin I Por Jos Rodolfo Queca
Ejemplo 53:
Realizar la codificacin en C del siguiente diagrama de flujo.
INICIO
a, b
s ab
FIN
Ejemplo 54:
Realizar la codificacin en C del siguiente diagrama de flujo.
INICIO
A 3.1416 * r * r
FIN
63
Programacin I Por Jos Rodolfo Queca
Ejemplo 56:
Realizar la codificacin en C del siguiente diagrama de flujo.
INICIO
a, b, c
D=b*b-4*a*c
No Si
D<0
X1=(-b+sqrt(D))/(2*a) D=D*(-1)
X2=(-b-sqrt(D))/(2*a) X=-b/(2*a)
I=sqrt(D)/(2*a)
X1, X2
X, I
FIN
Operadores:
64
Programacin I Por Jos Rodolfo Queca
Operaciones aritmticas
Operacin Sintaxis A B Resultado
Redondeos
tipo Sintaxis A Resultado
65
Programacin I Por Jos Rodolfo Queca
Ejemplo 72:
Realizar la codificacin del algoritmo en el lenguaje PHP
INICIO
a, b, c
1
p ( a b c)
2
rea
FIN
66
Programacin I Por Jos Rodolfo Queca
Ejemplo 74:
Realizar la codificacin del algoritmo en el lenguaje PHP
INICIO
Nota
Sino Si
Nota < 51
Aprob Reprob
FIN
Ejemplo 76:
Realizar la codificacin del algoritmo en el lenguaje PHP
INICIO
mes
FIN
67
Programacin I Por Jos Rodolfo Queca
using System;
Ejemplo 64: Codificacin:C# using System.Collections.Generic;
using System.Text;
INICIO
namespace ConsoleApplication1
N {
class Program
{
I=N 1 static void Main(string[] args)
{
J=1I
int n;
n=int.Parse(Console.ReadLine());
for(int i=n;i>=1;i--)
*
{
for(int j=1;j<=i;j++)
J {
Console.Write("* ");
Salto d Lnea
}
Console.WriteLine ();
}
I }
}
}
FIN
68
Programacin I Por Jos Rodolfo Queca
FIN
Realizar un algoritmo que dado un nmero entre 1 y 7 imprime el da. Y Codifquelo en:
INICIO
1 = Lunes
2 = Martes da
3 = Mircoles
4 = Jueves
5 = Viernes
6 = Sbado
7 = Domingo
Segn sea el
da
1 2 3 4 5 6 7
FIN
69
Programacin I Por Jos Rodolfo Queca
Java:
Codificacin en el lenguaje Java
import java.io.*;
public class Program
{
public static void main(String[] args) throws IOException
{
int dia;
BufferedReader e = new BufferedReader(new InputStreamReader(System.in));
dia = Integer.parseInt(e.readLine());
switch (dia)
{
case 1: System.out.print("Lunes"); break;
case 2: System.out.print("Martes"); break;
case 3: System.out.print("Miercoles"); break;
case 4: System.out.print("Jueves"); break;
case 5: System.out.print("Viernes"); break;
case 6: System.out.print("Sabado"); break;
case 7: System.out.print("Domingo"); break;
default : System.out.print("No es un dia de la semana"); break;
}
System.in.read();
}
}
C#:
Codificacin en el lenguaje C sharp
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int dia;
dia = int.Parse(Console.ReadLine());
switch (dia)
{
case 1: Console.Write ("Lunes"); break;
case 2: Console.Write ("Martes"); break;
case 3: Console.Write ("Miercoles"); break;
case 4: Console.Write ("Jueves"); break;
case 5: Console.Write ("Viernes"); break;
case 6: Console.Write ("Sabado"); break;
case 7: Console.Write ("Domingo"); break;
default : Console.Write ("No es un dia de la semana"); break;
}
Console.Read();
}
}
}
70
Programacin I Por Jos Rodolfo Queca
Realizar la codificacin del algoritmo que use una sentencia repetitiva para ingresar
Nombres en un arreglo de n casillas, y visualizar los datos Ingresados. Ej.:
INICIO
I=0 n-1
nom
a[ I ] = nom
I=0 n-1
a[ I ]
FIN
71
Programacin I Por Jos Rodolfo Queca
import java.io.*;
public class Program
{
public static void main(String[] args) throws IOException
{
String []v=new String [20];
int n;
String nom;
BufferedReader e = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(e.readLine());
for (int i = 1; i <= n; i++)
{
nom = e.readLine();
v[i] = nom;
}
for (int i = 1; i <= n; i++)
{
System.out.println(v[i]);
}
System.in.read();
}
}
C#:
Codificacin en el lenguaje C sharp
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
String []v=new String [20];
int n;
String nom;
n =int.Parse (Console.ReadLine());
for (int i = 1; i <= n; i++)
{
nom = Console.ReadLine();
v[i] = nom;
}
for (int i = 1; i <= n; i++)
{
Console.WriteLine (v[i]);
}
Console.Read();
}
}
} 72
Programacin I Por Jos Rodolfo Queca
#include <iostream.h>
#include <stdio.h>
void main(void)
{
int n,i;
cout<<"n=";cin>>n;
char v[5][30];
for (i=0;i<n;i++)
{
gets(v[i]);
}
cout <<"\tCarga realizada..."<<endl;
for (i=0;i<n;i++)
{
cout<<"Nombres "<<(i+1)<<" es : "<<v[i]<<endl;
}
}
#include <iostream.h>
#include <stdio.h>
void main(void)
{
int n,i;
cout<<"n=";cin>>n;
char nombres[5][30], apellidos[5][30];
for (i=0;i<n;i++)
{
cout<<"Estudiante "<<(i+1)<<": "<<endl;
cout<<"Ingrese el Nombre: ";
gets(nombres[i]);
cout<<"Ingrese el Apellido : ";
gets(apellidos[i]);
cout<<" "<<endl;
}
cout << "\t\tCarga realizada..."<<endl;
for (i=0;i<n;i++)
{
cout<<"Estudiante "<<(i+1)<<" es : "<<nombres[i]<<" "<<apellidos[i]<<endl;
}
}
73
Programacin I Por Jos Rodolfo Queca
INICIO
num_dias
Aos=0; Meses=0;
Semanas=0
import java.io.*;
Dias > 365 public class Program
{
public static void main(String[] args) throws IOException
{
Aos = Aos+1 int num_dias, Dias = 0,Anios=0,Meses=0,Semanas=0;
Dias = Dias - 365 BufferedReader e =
e = new BufferedReader(new InputStreamReader(System.in));
num_dias = Integer.parseInt(e.readLine());
Dias = num_dias;
while (Dias > 365)
{
Anios = Anios + 1;
Dias > 30
Dias = Dias - 365;
}
while (Dias > 30)
{
Meses =Meses + 1
Meses = Meses + 1;
Dias = Dias - 30 Dias = Dias - 30;
}
while (Dias > 7)
{
Semanas = Semanas + 1;
Dias = Dias - 7;
Dias > 7 }
System.out.print("En "+num_dias+" Dias Hay "+ Anios+" Aos, "+Meses+" Meses y
"+Semanas+" Semanas");
System.in.read();
Semanas =Semanas + 1 }
Dias = Dias - 7 }
En n+num_dias +
Dias Hay +Anios+
Aos+Meses+ Meses y
+ Dias+Dias
FIN
74
Programacin I Por Jos Rodolfo Queca
INICIO
NA
No Si
NA >100
No Si PA = 65
NA > 50
No Si PA = 70
NA > 30
PA = 4000 / NA PA = 95
TOT = PA*NA
PA, TOT
FIN
75
Programacin I Por Jos Rodolfo Queca
Codificacin:
import java.io.*;
public class Program
{
public static void main(String[] args) throws IOException
{
int NA;
double PA,TOT;
BufferedReader e =
e = new BufferedReader(new InputStreamReader(System.in));
NA = Integer.parseInt(e.readLine());
if (NA> 100)
{
PA = 65;
}
else
{
if (NA > 50)
{
PA = 70;
}
else
{
if (NA > 30)
{
PA = 95;
}
else
{
PA = 4000 / NA;
}
}
}
TOT = PA * NA;
System.out.print("EL Pago por Alumno "+PA+" y el Total por el viaje es "+ TOT);
System.in.read();
}
}
Ejemplo 70:
La poltica de la compaa telefnica COTEL es: Chismea + x -. Cuando se realiza una
llamada, el cobro es por el tiempo que sta dura, de tal forma que los primeros cinco
minutos cuestan 1.00 Bs. c/u, los siguientes tres, 80 Centavos c/u, los siguientes dos
minutos, 70 Centavos c/u, y a partir del dcimo minuto, 50 Centavos c/u.
Adems, se carga un impuesto de 3% cuando es domingo, y si es da hbil, en turno
matutino, 15%, y en turno vespertino, 10%. Realice un algoritmo para determinar cunto debe
pagar por cada concepto una persona que realiza una llamada. Represntelo en diagrama de
flujo.
Al analizar el problema se puede identificar que ser necesario conocer como datos la
duracin de la llamada, as como el da y turno en que se realiza. Con base en esto se podr
determinar cul ser el pago que se efectuar por el tiempo que dura la llamada y el
impuesto que deber pagar en funcin del da y del turno en que se realiza. Se muestran las
variables que se van a utilizar.
TI TIEMPO ENTERO
DI TIPO DE DIA STRING
TU TURNO STRING
PAG PAGO POR EL TIEMPO REAL
IM IMPUESTO REAL
TOT TOTAL QUE SE VA A PAGAR REAL
76
Programacin I Por Jos Rodolfo Queca
INICIO
TI, DI, TU
No Si
TI < 5
No Si PAG = TI * 1
TI < 8
No Si
DI = DOM
No Si IM = PAG * 0.05
TU =M
TOT = PAG + IM
FIN
77
Programacin I Por Jos Rodolfo Queca
Codificacin:
import java.io.*;
public class Program
{
public static void main(String[] args) throws IOException
{
int TI;
double PAG,IM,TOT;
String DI, TU;
BufferedReader e =
e = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Tiempo=");
TI = Integer.parseInt(e.readLine());
System.out.print("Tipo de Dia Domingo [D]=");
DI = e.readLine();
System.out.print("Turno Maana[M]=");
TU = e.readLine();
if (TI<5)
{
PAG = TI*1;
}
else
{
if (TI<8)
{
PAG = (TI-5)*0.8+5;
}
else
{
if (TI<=10)
{
PAG=(TI-8)*0.7+7.4;
}
else
{
PAG = (TI - 8) * 0.7 + 7.4;
}
}
}
if (DI == "D")
{
IM = PAG * 0.05;
}
else
{
if (TU == "M")
{
IM = PAG * 0.15;
}
else
{
IM = PAG * 0.10;
}
}
TOT = PAG * IM;
System.out.print("EL Pago po Tiempo es "+PAG+" el Impuesto "+ IM +" y el Total a Pagar "+TOT);
System.in.read();
}
}
78
Programacin I Por Jos Rodolfo Queca
Ejemplo 71:
Una compaa de viajes cuenta con tres tipos de autobuses (A, B y C), cada uno tiene un precio por kilmetro
recorrido por persona, los costos respectivos son Bs. 2.0, Bs. 2.5 y Bs. 3.0. Se requiere determinar el costo total y
por persona del viaje considerando que cuando ste se presupuesta debe haber un mnimo de 20 personas, de lo
contrario el cobro se realiza con base en este nmero lmite.
Con la informacin correspondiente se puede establecer las variables que se van a utilizar
INICIO
No Si
TI =A
No Si CK = 2
TI =B
CK = 3 CK = 2.5
No Si
NPR < 20
NP = 20 NP = NPR
TO = NP*CK*KM
CP = TO / NPR
CP, TO
FIN
79
Programacin I Por Jos Rodolfo Queca
Codificacin:
import java.io.*;
public class Program
{
public static void main(String[] args) throws IOException
{
int KM,NPR,NP;
double CK,CP,TO;
String TI;
BufferedReader e =
e = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Tipo de Autobus [A B C]=");
TI = e.readLine();
System.out.print("Kilometros por Recorrer =");
KM = Integer.parseInt(e.readLine());
System.out.print("Num de Personas Real=");
NPR = Integer.parseInt(e.readLine());
if (TI=="A")
{
CK = 2;
}
else
{
if (TI == "B")
{
CK = 2.5;
}
else
{
CK = 3;
}
}
if (NPR < 20)
{
NP=NPR;
}
else
{
NP = 20;
}
TO = NP*CK*KM;
CP=TO/NPR;
System.out.print("EL Costo por Persona es "+CP+" y El Costo Total del Viaje "+ TO);
System.in.read();
}
}
80
Programacin I Por Jos Rodolfo Queca
Ejemplo 72:
Realizar un programa que use funciones para convertir un logaritmo de base a base 10 en C++
#include <iostream.h>
#include <conio.h>
#include <math.h>
Ejemplo 73:
Realizar un programa en visual Basic.net para leer una Nota e imprimir Aprobado o Reprobado
dependiendo la Nota, nota mnima de aprobacin 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
81
Programacin I Por Jos Rodolfo 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#,
82
Programacin I Por Jos Rodolfo Queca
Controles Comunes:
Label, TextBox, CommandButton, CheckBox
En Visual Studio hay un conjunto de controles
comunes que son usados en la gran mayora de
aplicaciones. En la siguiente tabla se muestra el
uso normal de estos controles:
Control
Label (Etiqueta)
Control
TextBox (Cuadro de texto)
Control
CommandButton (Botn)
Comenzar o terminar un proceso. Cuando el usuario pulsa este botn, se produce el evento
Click.
Control
CheckBox (Casilla de activacin)
83
Programacin I Por Jos Rodolfo Queca
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 aadir datos
CONTROLES MS USUALES
La propiedades ms importantes del botn de comando son su text, que es lo que aparece
escrito en l, las referentes a su posicin 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 carcter (&) antes de una de sus letras, dicha letra
aparece subrayyada en el botn (como la E en el botn Ejecutar de la figura anexa). Esto
quiere decir que, como es habitual en Windows, dicho botn puede activarse con el teclado
por medio de la combinacin Alt+letra subrayada. Esta caracterstica es comn 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();
C# Basic.net Java#
button1.Text= "&Suma"; Suma.Text= "&Suma" button1.set_Text("&Suma");
84
Programacin I Por Jos Rodolfo Queca
C# Basic.net Java#
Boolean v; Dim v As Boolean boolean v;
v=radioButton1.Checked; v=RadioButton1.Checked v=radioButton1.get_Checked();
El control CheckBox de los formularios Windows Forms indica si una condicin determinada
est activada o desactivada. Se utiliza habitualmente para presentar al usuario una
seleccin de tipo S/No o Verdadero/Falso. Puede utilizar grupos de casillas de verificacin
para mostrar mltiples opciones entre las cuales el usuario puede elegir una o ms.
El control casilla de verificacin es similar al control botn de opcin, puesto que los dos
se utilizan para indicar una seleccin realizada por el usuario. Slo difieren en que en un
grupo de botones de opcin no se puede seleccionar ms de un botn de opcin. Sin embargo,
en un grupo de casillas de verificacin es posible seleccionar tantas casillas de
verificacin como se desee.
Puede conectar una casilla de verificacin a elementos de una base de datos mediante enlaces
simples de datos. Tambin puede agrupar varias casillas de verificacin por medio del
control GroupBox. Esto resulta til para mejorar la apariencia visual y para el diseo de la
interfaz de usuario, puesto que permite mover juntos los controles agrupados por el
diseador de formularios.
85
Programacin I Por Jos Rodolfo Queca
Indeterminate. En el estado indeterminado, el cuadro se muestra con un aspecto atenuado para
indicar que la opcin 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();
Etiquetas (Labels)
Los controles Label de formularios Windows Forms se utilizan para mostrar texto o imgenes
que el usuario no puede editar. Se utilizan para identificar objetos en un formulario; por
ejemplo, para proporcionar una descripcin de lo que har cierto control si se hace clic en
l o para mostrar informacin en respuesta a un evento o proceso en tiempo de ejecucin de
la aplicacin. Por ejemplo, puede utilizar etiquetas para agregar ttulos descriptivos a
cuadros de texto, cuadros de lista, cuadros combinados, etc. Tambin puede escribir cdigo
que cambie el texto que muestra una etiqueta en respuesta a eventos en tiempo de ejecucin.
Por ejemplo, si la aplicacin 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 tambin para crear
teclas de acceso para otros controles. Una tecla de acceso permite al usuario seleccionar el
otro control si presiona simultneamente 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 tambin puede configurarse como control de slo lectura. Los cuadros
de texto pueden mostrar varias lneas, ajustar el texto al tamao del control y agregar
formato bsico. 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.
86
Programacin I Por Jos Rodolfo Queca
Ejemplo 1: Obtiene el texto de la caja de texto y convertirlo en tipo de dato Entero o Real
(Double Float).
C# Basic.net Java#
C# - Basic.net - Java#
int A; Dim A As Integer
A = int.Parse(s); A = Val(s) int A = Integer.parseInt(s);
double A; Dim A As Double Double x = Double.valueOf(s);
A = double.Parse(s); A = Val(s) double A = x.doubleValue();
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 ms. Si el nmero total de elementos supera el nmero que
se puede mostrar, se agrega automticamente 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 nmero de
elementos. La propiedad SelectionMode determina cuntos elementos de la lista pueden
seleccionarse a la vez.
Para agregar o eliminar los elementos en un control ListBox, utilice el mtodo Add, Insert,
Clear o Remove. Tambin puede agregar elementos a la lista mediante la propiedad Items en
tiempo de diseo.
87
Programacin I Por Jos Rodolfo 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.
Para agregar o eliminar los elementos en un control ComboBox, utilice el mtodo Add, Insert,
Clear o Remove. Tambin puede agregar elementos a la lista mediante la propiedad Items en el
diseador.
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
mtodo Insert:.
C# checkedListBox1.Items.Insert(0, "Copenhagen");
88
Programacin I Por Jos Rodolfo Queca
Los formularios se usan en la navegacin habitual por pginas web (i.e. Cuando entramos en
nuestro correo web, iniciamos sesin en youtube para subir un vdeo, buscamos una pgina con
google, o nos identificamos en facebook para acceder a nuestra red social,... siempre
estamos enviando datos mediante los campos de un formulario.
Los formularios de una pgina web se disean como el resto de la pgina, empleando HTML
(Lenguaje de Etiquetas de HiperTexto).
El elemento <form> cuenta con muchos atributos pero basta con utilizar 2 de ellos: action y
method. Atributo action: indica al servidor a qu pgina debe desplazarse cuando el usuario
pulsa el botn de envo del formulario. Es decir, indica qu pgina recibir la informacin
del formulario.
Atributo method: controla la forma en que se enva la informacin al servidor y existen dos
mtodos, GET y POST. Con GET se enva la informacin introducida por el usuario adjuntndola
a la URL despus del signo ?. Con POST se envan los valores introducidos en el formulario
en el cuerpo de la solicitud HTTP.
El cdigo siguiente crea un formulario WEB ... que an no contiene ningn campo. Cuando
aadamos los campos normales en un formulario, el archivo respuesta1.php, recibir
mediante el mtodo POST los valores introducidos en el formulario.
<form action="respuesta1.php"method="post">
</form>
Campos de texto
89
Programacin I Por Jos Rodolfo Queca
Tambin llamados cuadros de texto, son probablemente los controles ms conocidos en
cualquier formulario. Se crean por medio del elemento <input> y estableciendo el atributo
type en text.
Botones de envo
Los botones de envo se usan siempre en todos los formularios. Son necesarios para enviar la
informacin del formulario a la pgina web receptora. Se crean por medio del elemento
<input> y estableciendo el atributo type en submit . El texto que aparece sobre el botn se
indica mediante el atributo value.
Ejemplo Formularios:
90
Programacin I Por Jos Rodolfo Queca
PROGRAMACIN I
91
Programacin I Por Jos Rodolfo Queca
Ejemplo 72:
Realizar la codificacin del algoritmo en el lenguaje C# (C Sharp)
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
INICIO {
double a, b, c, p, area;
a, b, c a = double.Parse(Console.ReadLine());
b = double.Parse(Console.ReadLine());
c = double.Parse(Console.ReadLine());
1
p ( a b c)
2 p = (a + b + c)/2;
rea
Console.Write("El Area es:" + area);
Console.Read();
FIN
}
}
}
92
Programacin I Por Jos Rodolfo Queca
Ejemplo 73:
Realizar la codificacin del algoritmo en el lenguaje Java
import java.io.*;
public class Program
{
public static void main(String[] args) throws IOException
{
INICIO double a, b, c, p, area;
BufferedReader e;
e = new BufferedReader(new InputStreamReader(System.in));
a, b, c
Double x = Double.valueOf(e.readLine());
a = x.doubleValue();
x = Double.valueOf(e.readLine());
1 b = x.doubleValue();
p ( a b c)
2 x = Double.valueOf(e.readLine());
c = x.doubleValue();
System.in.read();
FIN }
}
93
Programacin I Por Jos Rodolfo Queca
Ejemplo 74:
Realizar la codificacin del algoritmo en el lenguaje C# (C Sharp)
namespace ConsoleApplication1
{
INICIO class Program
{
static void Main(string[] args)
Nota {
double Nota;
Sino Si
Nota < 51 Nota = double.Parse(Console.ReadLine());
FIN Console.Read();
}
}
}
Ejemplo 75:
Realizar la codificacin del algoritmo en el lenguaje Java
import java.io.*;
public class Program
{
public static void main(String[] args) throws IOException
{
double Nota;
INICIO BufferedReader e;
e = new BufferedReader(new InputStreamReader(System.in));
System.in.read();
FIN
}
}
94
Programacin I Por Jos Rodolfo Queca
Ejemplo 76:
Realizar la codificacin del algoritmo en el lenguaje Java
import java.io.*;
public class Program
INICIO {
public static void main(String[] args) throws IOException
{
int mes;
mes BufferedReader e;
e = new BufferedReader(new InputStreamReader(System.in));
mes = Integer.parseInt(e.readLine());
switch (mes)
{
case 6:case 7: case 8: System.out.print("Invierno"); break;
Segn sea la edad case 9:case 10: case 11: System.out.print("Primavera"); break;
case 12: case 1:case 2: System.out.print("Verano"); break;
case 3:case 4:case 5: System.out.print("Otoo"); break;
6,7,8 9,10,11 12,1,2 3,4,5 default : System.out.print("No es un mes del ao"); break;
Defecto }
Invierno Primavera Verano Otoo No es un
System.in.read();
mes
}
}
FIN
Ejemplo 77:
Realizar la codificacin del algoritmo en el lenguaje C# (C Sharp)
namespace ConsoleApplication1
{
INICIO class Program
{
static void Main(string[] args)
{
mes int mes;
mes = int.Parse(Console.ReadLine());
switch (mes)
{
case 6:case 7: case 8: Console.Write("Invierno"); break;
case 9:case 10: case 11: Console.Write("Primavera"); break;
Segn sea la edad case 12: case 1:case 2: Console.Write("Verano"); break;
case 3:case 4:case 5: Console.Write("Otoo"); break;
default: Console.Write("No es un mes del ao"); break;
6,7,8 9,10,11 }
12,1,2 3,4,5 Defecto Console.Read();
}
Invierno Primavera Verano Otoo No es un }
mes }
FIN
95
Programacin I Por Jos Rodolfo Queca
Ejemplo 78:
INICIO Realizar la codificacin del algoritmo en el lenguaje Java
n import java.io.*;
public class Program
{
I=0 n-1 public static void main(String[] args) throws IOException
{
BufferedReader e;
nom e = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Ingrese n:");
int n = Integer.parseInt(e.readLine());
a[ I ] = nom String nom;
String [] a;
a = new String[30];
for (int i = 0; i <= n - 1; i++)
I {
System.out.print("A[" + i + "]=");
nom = e.readLine();
a[i] = nom;
I=0 n-1 }
System.out.println("IMPRIMIR DATOS");
for (int i = 0; i <= n - 1; i++)
a[ I ] {
System.out.println("A[" + i + "]="+a[i]);
}
System.in.read();
I
}
}
FIN
Ejemplo 79:
Realizar la codificacin del algoritmo en el lenguaje C# (C Sharp)
INICIO
n
namespace ConsoleApplication1
{
class Program
I=0 n-1 {
static void Main(string[] args)
{
nom Console.Write("Ingrese n:");
int n = int.Parse(Console.ReadLine());
String nom;
a[ I ] = nom String [] a;
a = new String[30];
for (int i = 0; i <= n - 1; i++)
{
I Console.Write("A[" + i + "]=");
nom = Console.ReadLine();
a[i] = nom;
}
I=0 n-1 Console.Write("IMPRIMIR DATOS\n");
for (int i = 0; i <= n - 1; i++)
{
a[ I ] Console.WriteLine("A[" + i + "]="+a[i]);
}
Console.ReadLine();
I }
}
}
FIN
96
Programacin I Por Jos Rodolfo Queca
ESTRUCTURA DE JAVA
ESTRUCTURA DE C#
97
Programacin I Por Jos Rodolfo Queca
Todas las sentencias del algoritmo deben poder realizarse de manera precisa en un tiempo
finito. Si un algoritmo cumple esas condiciones, entonces puede expresarse utilizando slo
estos tres tipos de estructura:
Una estructura de datos es una forma de organizar un conjunto de datos elementales (un dato
elemental es la mnima informacin que se tiene en el sistema) con el objetivo de facilitar
la manipulacin de estos datos como un todo o individualmente.
Arrays (Arreglos)
Vectores
Matrices
Estructuras de datos dinmicas (en las cuales su tamao puede ser cambiado en tiempo
de ejecucin).
Listas Enlazadas
Listas Simples
Listas Dobles
Listas Circulares
98
Programacin I Por Jos Rodolfo Queca
Ejemplos Java#
Ejemplo 70: 1
12
Genere la siguiente serie: 123 n=5
1234
import java.io.*; 12345
public class Program
{
public static void main(String[] args)
{
int n;
BufferedReader entrada = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Ingrese un Valor Entero: ");
System.out.flush();
n = Integer.parseInt(entrada.readLine());
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= i; j++)
System.out.print(" " + j);
System.out.println();
}
}
}
Ejemplo 71:
Realizar un programa que despliegue en pantalla, que dado 2 nmeros determine si es
divisible el primer valor por el segundo.
36 es divisible entre 6
import java.io.*;
public class Program
{
public static void main(String[] args) throws IOException
{
int n, d;
String cn, cd;
BufferedReader entrada = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Ingrese un Valor Entero: ");
System.out.flush();
n = Integer.parseInt(entrada.readLine());
d = Integer.parseInt(entrada.readLine());
if (n % d == 0)
System.out.println(n + " Es divisible por " + d);
else
System.out.println(n + " No es divisible por " + d);
entrada.readLine();
}
}
Ejemplo 72:
Realizar un programa que despliegue en pantalla, dado tres valores reales el mayor de ellos.
35.25 25.25 -15.15
99
Programacin I Por Jos Rodolfo Queca
import java.io.*;
public class Program
{
public static void main(String[] args) throws IOException
{
double x, y, z;
BufferedReader entrada = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Ingrese el primer numero Real: ");
Double d = Double.valueOf(entrada.readLine());
x = d.doubleValue();
Ejemplos C#
Ejemplo 73: 1
12
Genere la siguiente serie: 123 n=5
using System;
1234
using System.Collections.Generic; 12345
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int n;
Console.Write ("Ingrese un Valor Entero: ");
n = int.Parse(Console.ReadLine ());
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= i; j++)
Console.Write(" " + j);
Console.WriteLine ();
}
Console.Read();
}
}
}
100
Programacin I Por Jos Rodolfo Queca
Ejemplo 74:
Realizar un programa que despliegue en pantalla, que dado 2 nmeros determine si es
divisible el primer valor por el segundo.
36 es divisible entre 6
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int n, d;
String cn, cd;
Console.Write ("Ingrese un Valor Entero: ");
n = int.Parse(Console.ReadLine ());
Console.Write("Ingrese otro Valor Entero: ");
d = int.Parse(Console.ReadLine ());
if (n % d == 0)
Console.Write(n + " Es divisible por " + d);
else
Console.Write(n + " No es divisible por " + d);
Console.Read();
}
}
}
Ejemplo 75:
Realizar un programa que despliegue en pantalla, dado tres valores reales el mayor de ellos.
35.25 25.25 -15.15
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
double x, y, z;
Console.Write ("Ingrese el primer numero Real: ");
x = double.Parse (Console.ReadLine());
Ejemplo 77:
Realizar un programa que despliegue en pantalla, que dado 2 nmeros determine si es
divisible el primer valor por el segundo.
36 es divisible entre 6
#include <iostream.h>
#include <string.h>
#include <ctype.h>
void main(void)
{
int n, d;
cout << "Ingrese un Valor Entero: " << endl;
cin >>n;
cout << "Ingrese otro Valor Entero: " << endl;
cin >>d;
if (n % d == 0)
cout << " Es divisible por " << d;
else
cout << " No es divisible por " << d;
}
getch();
}
Ejemplo 78:
Realizar un programa que despliegue en pantalla, dado tres valores reales el mayor de ellos.
35.25 25.25 -15.15
#include <iostream.h>
#include <string.h>
#include <ctype.h>
void main(void)
{
double x, y, z;
cout << "Ingrese un primer numero real: " << endl;
cin >>x;
cout << "Ingrese un segundo numero real: " << endl;
cin >>y;
cout << "Ingrese un tercer numero real: " << endl;
cin >>z;
102
Programacin I Por Jos Rodolfo Queca
double mayor;
if (x > y)
if (x > z)
mayor = x;
else
mayor = z;
else
if (y > z)
mayor = y;
else
mayor = z;
cout <<" El mayor de los valores de " << x << " , " << y << " y " << z << " es: "<< mayor;
getch();
}
Arrays (Arreglos)
Ejemplos: Inicializar y utilizar arreglos.
C# C++ Java#
char [,]grafo; #define MAX_VERT 3 char grafo[][];
grafo = new char[MAX_VERT,MAX_VERT]; grafo=new char[MAX_VERT][MAX_VERT];
char grafo[MAX_VERT][MAX_VERT];
char []visitado; char visitado[];
visitado=new char[MAX_VERT]; char visitado[MAX_VERT]; visitado=new char[MAX_VERT];
#include <iostream.h>
int grafo[][];
int [,]grafo; #include <stdio.h> int visitado[];
grafo = new int[MAX_VERT,MAX_VERT];
char nombres[5][30], apellidos[5][30]; grafo= new int[MAX_VERT][MAX_VERT];
int v[] = new int[10];
gets(nombres[i]); visitado = new int[MAX_VERT];
cout<<(i+1)<<" es : "<<nombres[i]<<endl; int v[] = new int[10];
string[] tablaCadenas = {"Manolo", "Paco" , "Pepe"}; char *tablaCadenas[] = {"Manolo", "Paco" , "Pepe"}; String[] tablaCadenas ={"Manolo","Paco","Pepe" };
int[] source = {0,1,2,3,4,5}; int[] source = { 0, 1, 2, 3, 4, 5 };
int[] tabla = new int[] {5,1,4,0}; int source[] = {1,2,3,4,5} ; int[] tabla = new int[] { 5, 1, 4, 0 };
103
Programacin I Por Jos Rodolfo Queca
Ejemplo 79:
Realizar un programa 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.
C++ Java#
import java.io.*;
public class Program
#include <iostream.h> {
public static void main(String[] args) throws IOException
void main() {
{ int A[][],B[][],C[][];
int A[10][10],B[10][10],C[10][10]; int n, i, j;
int n, i, j; BufferedReader en=new BufferedReader (new InputStreamReader (System.in));
cout<<"n="; A = new int[10][10];
cin>>n; B = new int[10][10];
cout<<"Ingrese los valores de la matriz A"<<endl; C = new int[10][10];
for (i = 1;i<=n;i++) System.out.print("n=");
for (j = 1;j<=n;j++) n = Integer.parseInt(en.readLine());
cin>>A[i][j]; System.out.println("Ingrese los valores de la matriz A");
cout<<"Ingrese los valores de la matriz B"<<endl; for (i = 1;i<=n;i++)
for (i = 1;i<=n;i++) for (j = 1;j<=n;j++)
for (j = 1;j<=n;j++) A[i][j] = Integer.parseInt(en.readLine());
cin>>B[i][j]; System.out.println("Ingrese los valores de la matriz B");
for (i = 1;i<=n;i++) for (i = 1;i<=n;i++)
for (j = 1;j<=n;j++) for (j = 1;j<=n;j++)
C[i][j] = A[i][j] + B[i][j]; B[i][j] = Integer.parseInt(en.readLine());
cout<<"La matriz C:"<<endl; for (i = 1;i<=n;i++)
for (i = 1; i <= n; i++) for (j = 1;j<=n;j++)
{ C[i][j] = A[i][j] + B[i][j];
for (j = 1; j <= n; j++) System.out.println("La matriz C:");
cout<<C[i][j]<<" "; for (i = 1; i <= n; i++)
cout<<endl; {
} for (j = 1; j <= n; j++)
} System.out.print(C[i][j] + " ");
System.out.println();
}
}
}
C#
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int [,]A;
int [,]B;
int [,]C;
int n, i, j;
A = new int[10,10];
B = new int[10,10];
C = new int[10,10];
Console.Write("n=");
String en=Console.ReadLine();
n = int.Parse(en);
Console.WriteLine("Ingrese los valores de la matriz A");
for (i = 1;i<=n;i++)
for (j = 1;j<=n;j++)
A[i, j] = int.Parse(Console.ReadLine());
Console.WriteLine("Ingrese los valores de la matriz B");
for (i = 1;i<=n;i++)
for (j = 1;j<=n;j++)
B[i,j] = int.Parse(Console.ReadLine());
for (i = 1;i<=n;i++)
for (j = 1;j<=n;j++)
C[i,j] = A[i,j] + B[i,j];
Console.WriteLine("La matriz C:");
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
Console.Write(C[i,j] + " ");
Console.WriteLine();
}
}
}
}
104
Programacin I Por Jos Rodolfo Queca
105
Programacin I Por Jos Rodolfo Queca
Ejemplo 80:
Realizar un programa que resuelva un sistema de ecuaciones 3x3 por el mtodo de gauss
#include <iostream.h>
void main()
{
float a[3][4];
int j,i,k;
float b;
float x[3],aux[3][4];
/* Introduccin de datos */
cout<<"\n Primera ecuacin\n ";
for (j=0;j<=3;j++)
{
if (j==3)
{
cout<<"\tTrmino independiente: \t";
cin>>a[0][3];
break;
};
cout<<"\tCoeficiente de x"<<j+1<<" ";
cin>>a[0][j];
}
cout<<"\n";
cout<<"\n Segunda ecuacin\n ";
for (j=0;j<=3;j++)
{
if (j==3)
{
cout<<"\tTrmino independiente: \t";
cin>>a[1][3];
break;
};
cout<<"\tCoeficiente de x"<<j+1<<" ";
cin>>a[1][j];
}
cout<<"\n";
cout<<"\n Tercera ecuacin\n ";
for (j=0;j<=3;j++)
{
if (j==3)
{
cout<<"\tTrmino independiente: \t";
cin>>a[2][3];
break;
};
cout<<"\tCoeficiente de x"<<j+1<<" ";
cin>>a[2][j];
}
cout<<"\n";
107
Programacin I Por Jos Rodolfo Queca
for (j=i;j<=3;j++) a[i][j]=a[i][j]/b;
for (j=i+1;j<=2;j++)
{
b=a[j][i];
for (k=i+1;k<=3;k++) a[j][k]=a[j][k]-a[i][k]*b;
}
}
for (k=0;k<=2;k++)
{
i=2-k;
b=0;
for (j=i+1;j<=2;j++) b=b+a[i][j]*x[j];
x[i]=a[i][3]-b;
}
a[1][0]=0;
a[2][0]=0;
a[2][1]=0;
108
Programacin I Por Jos Rodolfo Queca
Programacin convencional
Ante cualquier problema debemos seguir los siguientes pasos: anlisis del problema,
diseo del algoritmo y resolucin a travs del computador. Estos tres pasos
constituyen lo que se llama la programacin convencional imprimiendo en ella
objetivos tales como la concrecin, la legibilidad, la depuracin de errores y la
facilidad en la modificacin.
Programacin estructurada
El principio fundamental de la programacin estructurada es que en todo momento el
programador pueda mantener el programa dentro de la cabeza. Esto se consigue con:
Secuencial:
Ejecuta una sentencia detrs de otra.
Condicional:
Se evala una expresin y, dependiendo del resultado, se decide la
siguiente sentencia a ejecutar.
Iterativa:
Repetimos un bloque de sentencias hasta que sea verdadera una
determinada condicin.
Programacin modular
La programacin modular es uno de los mtodos de diseo ms flexibles y
potentes para mejorar la productividad de un programa.
109
Programacin I Por Jos Rodolfo Queca
Ventajas
Mantencin, modificacin y documentacin
Escritura y testing
Reutilizacin
Independencia de fallas
Desventajas
Separacin de mdulos.
Memoria y tiempo de ejecucin
MODULO
A medida que avanza el tiempo, los problemas que se espera que un computador
resuelva se vuelven ms y ms complejos. As, es en realidad muy extrao que se
pueda disear un algoritmo simple que resuelva un problema real hoy en da, por lo
que es necesario plantearse algn tipo de subdivisin que haga el problema
abordable, en sub-problemas manejables.
Los subprogramas pueden ser vistos como un mini programa encargado de resolver
algortmicamente un sub-problema que se encuentra englobado dentro de otro
mayor.
Las siguientes tablas recogen los miembros expuestos por el tipo Math.
110
Programacin I Por Jos Rodolfo Queca
Nombre Descripcin
Nombre Descripcin
111
Programacin I Por Jos Rodolfo Queca
Realizar un programa para encontrar la raz cuadrada de x. x puede ser ingresado por
teclado
import java.io.*;
public class Program
{
public static void main(String[] args) throws IOException
{
double R, x;
x = 4;
R = Math.sqrt(x);
System.out.print("La raiz cuadrada es:"+R);
System.in.read();
}
}
Realizar un programa para encontrar x elevado a la cuarta. x puede ser ingresado por
teclado
import java.io.*;
public class Program
{
public static void main(String[] args) throws IOException
112
Programacin I Por Jos Rodolfo Queca
{
double R, x;
x = 2;
R = Math.pow(x,4);
System.out.print("El numero elevado a la cuarta es:"+R);
System.in.read();
}
}
Realizar un programa para encontrar el coseno de x. x puede ser ingresado por teclado
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
double R, x;
x = 60;
R = Math.Cos(x*Math.PI/180);
Console.Write("El coseno de 60 grados es:"+R);
Console.Read();
}
}
}
113
Programacin I Por Jos Rodolfo Queca
import java.io.*;
public class Program
{
public static void main(String[] args) throws IOException
{
double R, x;
x = -2;
R = Math.abs(x);
System.out.print("El Valor absoluto de -2 es:" + R);
System.in.read();
}
}
Funciones:
Encargados de realizar un clculo computacional y generar un resultado (normalmente
calculado en funcin de los datos recibidos) utilizable directamente:
cuerpo_de_la_funcin
dentificador Valor
End Function
Procedimientos:
Encargados de resolver un problema computacional. Se les enva los datos necesarios
y produce unos resultados que devuelve al lugar donde ha sido requerido:
cuerpo_de_la_funcin
End Sub
114
Programacin I Por Jos Rodolfo Queca
Funciones:
En los lenguajes de programacin para iniciar la definicin de una funcin. El aspecto de
una definicin de funcin:
logbase = log10(b);
resultado = log10(x)/logbase;
return resultado;
}
115
Programacin I Por Jos Rodolfo Queca
Programa que Obtenga el cubo de un nmero mediante una funcin llamada cubo, dado un valor x
ingresado por el teclado.
Java#
import java.io.*;
public class Program
{
public static void main(String[] args) throws IOException
{
double R, x;
x = 2;
R = cubo(x);
System.out.print(x+" Elevado al cubo es "+R);
System.in.read();
}
static double cubo(double x)
{
double z;
z = x * x * x;
return z;
}
}
C#
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
double R, x;
x = 2;
R = cubo(x);
Console.Write(x+" Elevado al cubo es "+R);
Console.Read();
}
static double cubo(double x)
{
double z;
z = x * x * x;
return z;
}
}
}
C++
116
Programacin I Por Jos Rodolfo Queca
PHP
117
Programacin I Por Jos Rodolfo Queca
}
}
}
C++ ---------------------------------------------------------------
PHP
Procedimientos
Un procedimiento, es una funcin que no devuelve valor alguno. Los
procedimientos provocan efectos laterales, como imprimir un mensaje por pantalla, modificar
variables globales o modificar el valor de sus parmetros.
Los procedimientos se declaran como funciones con tipo de retorno void. Mira este ejemplo:
#include <stdio.h>
void saludos(void)
{
printf ("Hola, mundo.\n");
}
En un procedimiento puedes utilizar la sentencia return, pero sin devolver valor alguno.
Cuando se ejecuta una sentencia return, finaliza inmediatamente la ejecucin del
procedimiento.
118
Programacin I Por Jos Rodolfo Queca
Realizar un programa que use mtodos, mtodo que imprima en pantalla un
saludo.
Java#:
import java.io.*;
public class Program
{
public static void main(String[] args) throws IOException
{
saludoBienvenida();
e.readLine();
}
static void saludoBienvenida()
{
System.out.println("Hola");
System.out.println("Procedimiento llamado saludoBienvenida");
System.out.println("que contiene tres sentencias ");
}
}
C#:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
saludoBienvenida();
Console.Read();
}
static void saludoBienvenida()
{
Console.WriteLine("Hola");
Console.WriteLine("Procedimiento llamado saludoBienvenida");
Console.WriteLine("que contiene tres sentencias ");
}
}
}
C++:
119
Programacin I Por Jos Rodolfo Queca
PHP
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
int edad;
Console.Write("Ingresa tu Edad:");
edad = int.Parse(Console.ReadLine());
CalculO(edad);
Console.Read();
}
static void CalculO(int ed)
{
if (ed<18)
Console.WriteLine("Tienes "+ed+" aos eres MENOR DE EDAD");
else
Console.WriteLine("Tienes " + ed + " aos eres MAYOR DE EDAD");
}
120
Programacin I Por Jos Rodolfo Queca
}
}
C++:
PHP
121
Programacin I Por Jos Rodolfo Queca
Java#:
import java.io.*;
public class Program
{
public static void main(String[] args)throws IOException
{
int x;
x = 5;
GeneraSerie(x);
System.in.read();
}
static void GeneraSerie(int x)
{
int fila,col;
for(fila=1;fila<=x;fila++)
{
for (col = 1; col <= x;col++)
{
System.out.print("* ");
}
System.out.println(); //salto de linea
}
}
}
C#:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
int x;
x = 5;
GeneraSerie(x);
Console.Read ();
}
static void GeneraSerie(int x)
{
int fila,col;
for(fila=1;fila<=x;fila++)
{
for (col = 1; col <= x;col++)
{
Console.Write("* ");
}
Console.WriteLine(); //salto de linea
}
}
}
}
C++:
122
Programacin I Por Jos Rodolfo Queca
PHP
123
Programacin I Por Jos Rodolfo Queca
Ejemplos Varios:
Ejemplo 87: Funciones:
Realizar un programa que use mtodos que retorne el rea del crculo dado el
radio.
import java.io.*;
public class Program
{
public static void main(String[] args) throws IOException
{
double x;
BufferedReader e = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Ingrese el Radio: ");
Double d = Double.valueOf(e.readLine());
x = d.doubleValue();
double y=circulo(x);
System.out.println("El area:" + y);
e.readLine();
}
static double circulo(double r)
{
return r * r * 3.141592;
}
}
Ejemplos Java#
Ejemplo 88:
Realizar un programa que use mtodos que halle la solucin de las races de
la ecuacin de segundo grado. Ax2 + Bx+ C=0
import java.io.*;
public class Program
{
public static void main(String[] args) throws IOException
{
double a, b, c;
System.out.print("A=");
a = Lee();
System.out.print("B=");
b = Lee();
System.out.print("C=");
c = Lee();
proceso(a, b, c);
System.in.read();
}
static double Lee() throws IOException
{
double xx;
BufferedReader e = new BufferedReader(new InputStreamReader(System.in));
Double x;
x = Double.valueOf(e.readLine());
xx = x.doubleValue();
return xx;
}
static void proceso(double A, double B, double C)
{
double d,x1,x2,r,im;
d=B*B-4*A*C;
if (d<0)
{
d=d*(-1);
r=(-B)/(2*A);
im=(Math.sqrt(d))/(2*A);
System.out.println("X1=" +r+"+"+im+"i");
System.out.println("X2=" +r+"-"+im+"i");
124
Programacin I Por Jos Rodolfo Queca
}
else
{
x1=(-B+Math.sqrt(d))/(2*A);
x2=(-B-Math.sqrt(d))/(2*A);
System.out.println("X1="+x1);
System.out.println("X2="+x1);
}
}
}
Ejemplos C#
Ejemplo 89:
Realizar un programa que use mtodos, mtodo que imprima en pantalla un
saludo.
using System;
using System.Collections.Generic;
using System.Text;
namespace Ejemplo1
{
class Program
{
static void Main(string[] args)
{
saludoBienvenida();
Console.Read();
}
static void saludoBienvenida()
{
Console.WriteLine ("Hola");
Console.WriteLine("Mtodo llamado saludoBienvenida");
Console.WriteLine("que contiene tres sentencias ");
}
}
}
Ejemplo 90:
Realizar un programa que use mtodos que retorne el rea del crculo dado el
radio.
using System;
using System.Collections.Generic;
using System.Text;
namespace Ejemplo1
{
class Program
{
static void Main(string[] args)
{
double x;
Console.Write("Introduzca el Radio:");
x = double.Parse(Console.ReadLine());
double y = circulo(x);
imprime(y);
Console.Read();
}
static double circulo(double r)
{
return r * r * 3.141592;
}
static void imprime(double y)
{
Console.WriteLine("El area:" + y);
}
}
}
125
Programacin I Por Jos Rodolfo Queca
Ejemplo 91:
Realizar un programa que use mtodos que halle la solucin de las races de
la ecuacin de segundo grado. Ax2 + Bx+ C=0
import java.io.*;
public class Program
{
public static void main(String[] args) throws IOException
{
double a, b, c;
System.out.print("A=");
a = Lee();
System.out.print("B=");
b = Lee();
System.out.print("C=");
c = Lee();
proceso(a, b, c);
System.in.read();
}
static double Lee() throws IOException
{
double xx;
BufferedReader e = new BufferedReader(new InputStreamReader(System.in));
Double x;
x = Double.valueOf(e.readLine());
xx = x.doubleValue();
return xx;
}
static void proceso(double A, double B, double C)
{
double d,x1,x2,r,im;
d=B*B-4*A*C;
if (d<0)
{
d=d*(-1);
r=(-B)/(2*A);
im=(Math.sqrt(d))/(2*A);
System.out.println("X1=" +r+"+"+im+"i");
System.out.println("X2=" +r+"-"+im+"i");
}
else
{
x1=(-B+Math.sqrt(d))/(2*A);
x2=(-B-Math.sqrt(d))/(2*A);
System.out.println("X1="+x1);
System.out.println("X2="+x1);
}
}
}
#include<iostream.h>
#include<conio.h>
void saludo()
{
cout<<"Hola"<<endl;
cout<<"Mtodo llamado saludoBienvenida"<<endl;
cout<<"que contiene tres sentencias ";
}
void main(void)
{
saludo();
getch();
126
Programacin I Por Jos Rodolfo Queca
}
Ejemplo 93:
Realizar un programa que use mtodos que retorne el rea del crculo dado el
radio.
#include<iostream.h>
#include<conio.h>
double circulo(double r)
{
return r * r * 3.141592;
}
void imprime(double y)
{
cout<<"El area:"<<y;
}
void main(void)
{
double x;
cout<<"Introduzca el radio:";
cin>>x;
double y=circulo(x);
imprime(y);
getch();
}
Ejemplo 94:
Realizar un programa que use mtodos que halle la solucin de las races de
la ecuacin de segundo grado. Ax2 + Bx+ C=0
#include<iostream.h>
#include<conio.h>
#include<math.h>
double Lee()
{
double x;
cin>>x;
return x;
}
void proceso(double A,double B, double C)
{
double d,x1,x2,r,im;
d=B*B-4*A*C;
if (d<0)
{
d=d*(-1);
r=(-B)/(2*A);
im=(sqrt(d))/(2*A);
cout<<"X1="<<r<<"+"<<im<<"i"<<endl;
cout<<"X2="<<r<<"-"<<im<<"i"<<endl;
}
else
{
x1=(-B+sqrt(d))/(2*A);
x2=(-B-sqrt(d))/(2*A);
cout<<"X1="<<x1<<endl;
cout<<"X2="<<x2<<endl;
}
}
void main(void)
{
double a,b,c;
cout<<"Ingrese a:";
a=Lee();
cout<<"Ingrese b:";
b=Lee();
cout<<"Ingrese c:";
c=Lee();;
proceso(a,b,c);
getch();
}
127
Programacin I Por Jos Rodolfo Queca
Ejemplo 95:
Realizar un programa que use procedimientos que segn un men realice las
tares de sumar, Logaritmo, obtenga la raz cuadrada y tenga la opcin de
salir del programa.
#include <iostream.h>
#include <math.h>
void suma();
void raiz();
void logaritmo();
void ayuda();
void main(void)
{
char c[1];
c[1]='x';
while(c[0] != 'T')
{
cout<<"\n ===============================";
cout<<"\n Pulsa S, para SUMAR";
cout<<"\n Pulsa R, para RAIZ CUADRADA";
cout<<"\n Pulsa L, para LOGARITMO";
cout<<"\n Pulsa A, para AYUDA";
cout<<"\n Pulsa T, para TERMINAR \n";
cin>>c;
if (c[0]=='S') suma();
if (c[0]=='R') raiz();
if (c[0]=='L') logaritmo();
if (c[0]=='A') ayuda();
}
}
void suma()
{
float a,b;
cout<<"\n Ingrese los numeros: \n";
cin>>a>>b;
cout<<"\n La suma de "<<a<<" y "<<b<<" es :"<<a+b;
}
void raiz()
{
float x;
cout<<"\n Radicando: \n";
cin>>x;
cout<<"\n Raiz cuadrada de "<<x<<" es: "<<sqrt(x);
}
void logaritmo()
{
float l;
cout<<"\n Logaritmo de : \n";
cin>>l;
cout<<"\n El logaritmo neperiano de "<<l<<" es: "<<log(l);
}
void ayuda()
{
cout<<"\n Es bastante que me pidas ayuda,";
cout<<"\n pero aqu la tienes:";
cout<<"\n\n\n Pulsa S, para SUMAR";
cout<<"\n Pulsa R, para RAIZ CUADRADA";
cout<<"\n Pulsa L, para LOGARITMO";
cout<<"\n Pulsa A, para AYUDA";
cout<<"\n Pulsa T, para TERMINAR \n";
}
128
Programacin I Por Jos Rodolfo Queca
Ejemplo 96:
Realizar un programa que use procedimientos para que ingrese una cadena
unida, el procedimiento determina la longitud de la cadena.
#include <iostream.h>
void main()
{
int longit;
char palabra[25];
cout<<"\n Escribe una palabra de 25 caracteres como mximo: ";
cin>>palabra;
longit=cuenta(palabra);
cout<<"\n\n Longitud de "<<palabra<<" es: "<<longit;
}
Ejemplo 97:
Realizar un programa que use procedimientos. Ingresando dos nmeros determine el
procedimiento el Mximo Comn Divisor
#include <iostream.h>
int MCD(int,int);
void main()
{
int a,b;
int mcd;
cout<<"\n Nmero: "; cin>>a;
cout<<"\n Nmero: "; cin>>b;
mcd=MCD(a,b);
cout<<"\n\n El MCD de "<<a<<" y "<<b<<" es: "<<mcd;
}
Ejemplo 98:
Realizar un programa que use procedimientos. Ingresando un nmero hexadecimal en mayscula
determine el procedimiento el nmero decimal.
129
Programacin I Por Jos Rodolfo Queca
#include <iostream.h>
#include<math.h>
#include<string.h>
#include<conio.h>
void main()
{
char hexa[10];
float numero;
clrscr();
cout<<"Numero hexadecimal (maysculas): ";
cin>>hexa;/*gets(hexa);*/
cout<<"\nCadena= "<<hexa;
numero=hex_dec(hexa);
cout<<"\nEn decimal es :"<<numero;
}
for (j=0;i>0;j++,i--)
{
letra=cadena[i-1];
cout<<"\n Letra= "<<letra;
switch(letra)
{
case '1':temp=(1*pow(16,j)); break;
case '2':temp=(2*pow(16,j)); break;
case '3':temp=(3*pow(16,j)); break;
case '4':temp=(4*pow(16,j)); break;
case '5':temp=(5*pow(16,j)); break;
case '6':temp=(6*pow(16,j)); break;
case '7':temp=(7*pow(16,j)); break;
case '8':temp=(8*pow(16,j)); break;
case '9':temp=(9*pow(16,j)); break;
case '0':temp=(0*pow(16,j)); break;
case 'A':temp=(10*pow(16,j)); break;
case 'B':temp=(11*pow(16,j)); break;
case 'C':temp=(12*pow(16,j)); break;
case 'D':temp=(13*pow(16,j)); break;
case 'E':temp=(14*pow(16,j)); break;
case 'F':temp=(15*pow(16,j)); break;
}
decimal+=temp;
}
return(decimal);
}
Ejemplo 99:
Realizar un programa que use procedimientos. Ingresando dos palabras el procedimiento unir
las cadenas de palabras.
#include<string.h>
#include <conio.h>
#include<iostream.h>
130
Programacin I Por Jos Rodolfo Queca
void main()
{
char palabra1[10];
char palabra2[10];
char palabra3[20];
cout<<"palabra1= ";
cin>>palabra1;
cout<<"palabra2= ";
cin>>palabra2;
copia(palabra2,palabra1);
cout<<"palabra1+palabra2= "<<palabra1;
getch();
}
131
Programacin I Por Jos Rodolfo Queca
Salto d Lnea
132
Programacin I Por Jos Rodolfo Queca
CLASIFICACION Y BUSQUEDA
Introduccin.
El ordenamiento es una labor comn que realizamos continuamente. Pero se ha preguntado qu
es ordenar? No? Es que es algo tan corriente en nuestras vidas que no nos detenemos a
pensar en ello. Ordenar es simplemente colocar informacin de una manera especial basndonos
en un criterio de ordenamiento.
Ordenacin.
En la computacin el ordenamiento de datos tambin cumple un rol muy importante, ya sea como
un fin en s o como parte de otros procedimientos ms complejos. Se han desarrollado muchas
tcnicas en este mbito, cada una con caractersticas especficas, y con ventajas y
desventajas sobre las dems. Aqu voy a mostrarle algunas de las ms comunes, tratando de
hacerlo de una manera sencilla y comprensible.
Burbuja
Este mtodo utiliza una tcnica donde los valores ms pequeos suben a la parte
superior del arreglo (burbuja), mientras que los valores mayores se hunden en la
parte inferior del arreglo.
Ejemplo: Ordenar ascendentemente la lista 50, 20, 40, 80, 30 por el mtodo de
burbuja.
133
Programacin I Por Jos Rodolfo Queca
o En la iteracin 1 se comparan elementos adyacentes (a[0], a[1]), (a[1], a[2]),
(a[n-2], a[n-1]). Se realizan n-1 comparaciones.
o Por cada pareja (a[j], a[j+1]), se intercambian los valores si a[j]> a[j+1].
o Al final de la iteracin 1, el elemento mayor de la lista est situado en a[n-
1].
o En la iteracin 2 se realizan las mismas comparaciones e intercambios,
terminando con el elemento de segundo mayor valor en a[n-2].
o El proceso termina con la iteracin n-1, en la que el elemento ms pequeo se
almacena en a[0].
Algoritmo
Repetir con i desde 1 hasta N
Repetir con j desde 0 hasta N-i
Si A[j+1]<A[j]
Tempo=A[j]
A[j]=A[j+1]
A[j+1]=temp
Fin Si
Fin Repetir
Fin Repetir
Ejemplo 100:
Realizar un programa que use procedimientos. Para Ordenar un Arreglo.
using System;
using System.Collections.Generic;
using System.Text;
namespace Ejemplo
{
class Program
{
static void Main(string[] args)
{
int[] v = { 45, 15, 2, 48, 14, 5 };
int i,j, aux;
Console.WriteLine("Vector desordenado ");
for(i=0;i<=v.Length-1;i++)
{
Console.Write(" "+ v[i]);
}
134
Programacin I Por Jos Rodolfo Queca
Insercin
Este mtodo es similar al proceso tpico de ordenar tarjetas de nombres (p.e. cartas
de una baraja) por orden alfabtico, que consiste en insertar un nombre en su
posicin correcta dentro de una lista que ya est ordenada.
Como primer paso, el elemento a[0] se considera ordenado, es decir la lista inicial
consta de un elemento. Despus se inserta a[1] en la posicin correcta; delante o
detrs de a[0], dependiendo de si es menor o mayor. Se vuelve a realizar el proceso
hasta a[n-1] [1],[2],[3],[4].
Ejemplo: Ordenar ascendentemente la lista 50, 20, 40, 80, 30 por el mtodo de
insercin. a[0] a[1] a[2] a[3] a[4]
Ejemplo 101:
Realizar un programa que use procedimientos. Para Ordenar un Arreglo.
using System;
using System.Collections.Generic;
using System.Text;
namespace Ejemplo
{
class Program
{
static void Main(string[] args)
{
int[] v = { 45, 15, 2, 48, 14, 5 };
int i,j, aux;
Console.WriteLine("Vector desordenado ");
for(i=0;i<=v.Length-1;i++)
{
Console.Write(" "+ v[i]);
}
135
Programacin I Por Jos Rodolfo Queca
for (i = 1;i <= v.Length-1; i++)
{
aux=v[i];
j = i - 1;
while(j>=0 && aux<v[j])
{
v[j+1]=v[j];
j--;
}
v[j+1]=aux;
}
Console.WriteLine("\nVector Ordenado");
for (i = 0; i <= v.Length - 1; i++)
{
Console.Write(" " + v[i]);
}
Console.Read();
}
}
}
Seleccin.
136
Programacin I Por Jos Rodolfo Queca
Ejemplo 101:
Realizar un programa que use procedimientos. Para Ordenar un Arreglo.
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int[] v = {11,9,17,5,14};
int i;
Console.WriteLine("Vector desordenado ");
for (i = 0; i <= v.Length - 1; i++)
{
Console.Write(" " + v[i]);
}
int n = v.Length;
Seleccion(v, n);
Console.WriteLine("\nVector Ordenado");
imprime(v, n);
Console.Read();
}
static void imprime(int[] v, int n)
{
Console.WriteLine();
for (int i = 0; i < n; i++)
{
Console.Write(" " + v[i]);
}
}
static void Seleccion(int[] v, int n)
{
int minimo, i, j;
int aux;
for(i=0;i<n;i++)
{
minimo = i;
for (j = i + 1; j < n; j++)
{
if (v[j]<v[minimo])
minimo = j;
}
aux=v[i];
v[i]=v[minimo];
v[minimo]=aux;
}
}
}
}
137
Programacin I Por Jos Rodolfo Queca
Shell
Este mtodo se basa en realizar comparaciones entre elementos no consecutivos,
separados por saltos o intervalos mayores que 1. Estos saltos sufrirn sucesivos
decrementos. Es un mtodo elaborado que resulta ms eficiente cuando las listas son
grandes.
Ejemplo 102:
Realizar un programa que use procedimientos. Para Ordenar un Arreglo.
using System;
using System.Collections.Generic;
using System.Text;
namespace Ejemplo
{
class Program
{
static void Main(string[] args)
{
int[] v = { 45, 15, 2, 48, 14, 5 };
int i,j,k, aux,incre;
Console.WriteLine("Vector desordenado ");
for(i=0;i<=v.Length-1;i++)
{
Console.Write(" "+ v[i]);
}
incre = v.Length / 2;
while (incre > 0)
{
for (i = incre; i < v.Length ; i++)
{
j = i;
aux = v[i];
while ((j >= incre)&&(v[j-incre]>aux))
{
v[j]=v[j-incre];
j=j-incre;
}
v[j] = aux;
}
incre /= 2;
}
Console.WriteLine("\nVector Ordenado");
for (i = 0; i <= v.Length - 1; i++)
{
Console.Write(" " + v[i]);
}
Console.Read();
138
Programacin I Por Jos Rodolfo Queca
}
}
}
Con Procedimientos:
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int[] v = { 50, 20, 40, 80, 30};
int i, j, k, aux, incre;
Console.WriteLine("Vector desordenado ");
for (i = 0; i <= v.Length - 1; i++)
{
Console.Write(" " + v[i]);
}
int n = v.Length;
shell(v, n);
Console.WriteLine("\nVector Ordenado");
imprime(v,n);
Console.Read();
}
static void imprime(int[] v,int n)
{
for (int i = 0; i <n; i++)
{
Console.Write(" " + v[i]);
}
}
static void shell(int[] v, int n)
{
int incre, i, j, aux;
incre = n / 2;
while (incre > 0)
{
for (i = incre; i < n; i++)
{
j = i;
aux = v[i];
while ((j >= incre) && (v[j - incre] > aux))
{
v[j] = v[j - incre];
j = j - incre;
}
v[j] = aux;
}
incre = incre/2;
}
}
}
}
139
Programacin I Por Jos Rodolfo Queca
Quicksort
El mtodo consiste en:
o Dividir el array (arreglo) en dos particiones, una con todos los elementos
menores a un cierto valor especfico y otra con todos los mayores que l.
Dicho valor es uno cualquiera, tomado arbitrariamente, del vector, y recibe
la denominacin de pivote.
Ejemplo 102:
Realizar un programa que use procedimientos. Para Ordenar un Arreglo.
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int[] v = { 50, 20, 40, 80, 30 };
int i;
Console.WriteLine("Vector desordenado ");
for (i = 0; i <= v.Length - 1; i++)
{
Console.Write(" " + v[i]);
}
int n = v.Length;
Quick(v, 0,n-1);
Console.WriteLine("\nVector Ordenado");
imprime(v, n);
140
Programacin I Por Jos Rodolfo Queca
Console.Read();
}
static void imprime(int[] v, int n)
{
Console.WriteLine();
for (int i = 0; i < n; i++)
{
Console.Write(" " + v[i]);
}
}
static void Quick(int[] v, int a,int b)
{
int Aux;
int f = a;
int t = b;
int p=(f + t) / 2;
int pivot = v[p];
do
{
while (v[f] < pivot)
{
f++;
}
while (v[t] > pivot)
{
t--;
}
if (f <= t)
{
Aux = v[f];
v[f] = v[t];
v[t] = Aux;
imprime(v, v.Length);
f++; t--;
}
} while (f <= t);
if (a < t)
{
Quick(v, a, t);
}
if (f < b)
{
Quick(v, f, b);
}
}
}
}
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
#include <math.h>
#include <stdlib.h>
#define max 100
#define MAX 100
/*PARTE DEL METODO DE MERGE SORT */
struct lista
{
int numero;
struct lista *sig;
};
typedef struct lista LISTATYPE;
typedef LISTATYPE * LISTAPTR;
void main(void)
{
int op;
//"205=""201=" ""186="
textcolor(WHITE);
textbackground(BLUE);
do
{
clrscr();
gotoxy(15,1);cout<<" \n";
gotoxy(15,2);cout<<" METODOS DE ORDENAMIENTO \n";
gotoxy(15,3);cout<<" \n\n\n";
gotoxy(15,5);cout<<" \n";
gotoxy(15,6);cout<<"1.- METODO DE BURBUJA \n";
gotoxy(15,7);cout<<"2.- METODO SHELL SORT \n";
gotoxy(15,8);cout<<"3.- METODO QUICK SORT \n";
gotoxy(15,9);cout<<"4.- METODO DE SELECCION DIRECTA \n";
gotoxy(15,10);cout<<"5.- METODO DE RADIX \n";
gotoxy(15,11);cout<<"6.- METODO DE MERGE SORT (o MEZCLA) \n";
gotoxy(15,12);cout<<"7.- METODO DE SHAKE SORT (o SACUDIDA) \n";
gotoxy(15,13);cout<<"8.- METODO DEL HEAP SORT (o MONTICULO) \n";
gotoxy(15,14);cout<<"9.- METODO INSORT (o INSERCION DIRECTA) \n";
gotoxy(15,16);cout<<"0.- SALIR \n\n\n";
gotoxy(15,17);cout<<" \n";
gotoxy(15,18);cout<<" PROGRAMADO POR: JAIRO ROSAS.P.\n\n";
gotoxy(15,20);printf("OPCION A SELECCIONAR :");cin>>op;
switch(op)
{
case 1: BURBUJA(); break;
case 2: SHELL(); break;
case 3: QUICK(); break;
case 4: SELDIR(); break;
case 5: RADIX(); break;
case 6: MERGES(); break;
case 7: SHAKE(); break;
case 8: MONTICULO(); break;
case 9: INSORT(); break;
//201//188//200 //187//205//186//
default:
clrscr();gotoxy(26,11);textcolor(BLINK+YELLOW);
cprintf("[SALIENDO DEL SISTEMA (M.O)]");
cout<<"\n\t\t\tPresione una tecla para Salir....";
break;
}
}while(op!=0);
getch();
return 0;
}
// BURBUJA.
void BURBUJA()
{
int i,n,m,j,A[max];
clrscr();
142
Programacin I Por Jos Rodolfo Queca
cout<<"******METODO DE LA BURBUJA******\n\n";
cout<<"CUANTOS NUMERO DESEAS ORDENAR : ";cin>>n;cout<<"\n";
for(i=0;i<n;i++)
{
cout<<"CAPTURANDO "<<"["<<i<<"] : ";cin>>A[i];
}
for(i=0;i<n;i++)
{
for(j=0;j<n-1;j++)
{
if(A[i]>A[j])
{
m=A[i];
A[i]=A[j];
A[j]=m;
}
}
}
cout<<"\nNUMEROS ORDENADOS\n-----------------\n";
for(i=0;i<n;i++)
{
cout<<"A["<<i<<"] : "<<A[i]<<"\n";
}
getch();
return;
}
//SHELL SORT.
void SHELL()
{
int A[MAX],n;
int cont,pasos,temp,i;
clrscr();
cout<<"******ORDENACION POR SHELL SORT******\n\n";
cout<<"CUANTOS NUMEROS DESEAS ORDENAR : ";cin>>n;cout<<"\n";
for(i=0;i<n;i++)
{
cout<<"CAPTURANDO ["<<i<<"] : ";cin>>A[i];
}
for(cont=n/2;cont!=0;cont/=2)
for(pasos=1;pasos!=0;)
{
pasos=0;
for(i=cont;i<n;i++)
if(A[i-cont]>A[i])
{
temp=A[i];
A[i]=A[i-cont];
A[i-cont]=temp;
pasos++;
}
}
cout<<"\nNUMEROS ORDENADOS\n--------------------\n";
for(i=0;i<n;i++)
{
cout<<"A["<<i<<"] : "<<A[i]<<"\n";
}
getch();
return;
}
//SELECCION DIRECTA.
void SELDIR()
{
int i,n,k,j,A[max],menor;
clrscr();
cout<<"******ORDENACION POR SELECCION DIRECTA******\n\n";
cout<<"CUANTOS NUMEROS DESEAS ORDENAR : ";cin>>n;cout<<"\n";
for(i=0;i<n;i++)
{
cout<<"CAPTURANDO ["<<i<<"] : ";cin>>A[i];
}
for(i=0;i<=n-1;i++)
{
menor=A[i];
143
Programacin I Por Jos Rodolfo Queca
k=i;
for(j=i+1;j<n;j++)
{
if(A[j]<menor)
{
menor=A[j];
k=j;
}
}
A[k]=A[i];
A[i]=menor;
}
cout<<"\nNUMEROS ORDENADOS\n--------------------\n";
for(i=0;i<n;i++)
{
cout<<"A["<<i<<"] :"<<A[i]<<"\n";
}
getch();
return;
}
//QUICK SORT.
void quicksort (int A[], int inf, int sup)
{
int elem_div = A[sup];
int temp ;
int i = inf - 1, j = sup;
int cont = 1;
if (inf >= sup)
return;
while (cont)
{
while (A[++i] < elem_div);
while (A[--j] > elem_div);
if (i < j)
{
temp = A[i];
A[i] = A[j];
A[j] = temp;
}
else
cont = 0;
}
temp = A[i];
A[i] = A[sup];
A[sup] = temp;
quicksort (A, inf, i - 1);
quicksort (A, i + 1, sup);
}
void QUICK()
{
int A[MAX],n;
clrscr();
cout<<"******ORDENAMIENTO QUICKSORT******\n\n";
cout<<"CUANTOS NUMEROS DESEAS ORDENAR : ";cin>>n;cout<<"\n";
for (int i=0;i<n; i++)
{
printf("A[%i]: ", i+1);
scanf("\t%d",&A[i]);
}
quicksort (A, 0, n-1);
mostrar (A,n);
getch();
144
Programacin I Por Jos Rodolfo Queca
}
//RADIX
void RADIX()
{
clrscr();
int x[50] = {NULL}, i;
static int n;
int Veces;
cout<<"******ORDENACION POR RADIX******\n";
printf("\nCUANTOS NUMEROS DESEAS ORDENAR : ");
cin>>Veces;
cout<<"\nINGRESE LOS "<<Veces<<" NUMEROS.\n\n";
for (n = 0;n<Veces; n++)
if (!scanf("%d",&x[n])) break;
if (n)
radixsort (x, n);
cout<<"\n";
cout<<"La ORDENACION RADIX DE "<<Veces<<" ELEMENTOS:\n\n";
for (i = 0; i < n; i++)
printf("A[%d] : %d \n",i,x[i]);
getch();
return;
}
145
Programacin I Por Jos Rodolfo Queca
}
for (i = 0; i < n; i++)
{
x[i] = node[first].info;
first = node[first].next;
}
}
clrscr();
CreaLista(&inicio);
MS(0,MAX-1,&inicio);
printf("\n\nNUMEROS ORDENADOS\n-------------------\n");
AVerLaLista(inicio);
FreeLista(&inicio);
getch();
return;
}
146
Programacin I Por Jos Rodolfo Queca
mezcla(ini,m,m1,fin,&(*inicio));
}
}
void mezcla (int ini, int m, int m1, int fin, LISTAPTR *inicio)
{
LISTAPTR ci, cj;
int i, j, k= 0, kC[MAX];
ci= cj= *inicio;
for (i=k; i<ini; i++,ci=ci->sig);
for (j=k; j<m1; j++ ,cj=cj->sig);
kC[k]= k;
while (i<=m || j<=fin)
{
if (i > m)
{
kC[k]= cj->numero;
j++;
cj= cj->sig;
}
else
if (j > fin)
{
kC[k]= ci->numero;
i++;
ci= ci->sig;
}
else
if (ci->numero < cj->numero)
{
kC[k]= ci->numero;
i++;
ci= ci->sig;
}
else
{
kC[k]= cj->numero;
j++;
cj= cj->sig;
}
k++;
}
for (ci=*inicio,i=k-k; i<ini; i++,ci=ci->sig);
for (k=0; i<=fin; i++, k++,ci=ci->sig)
ci->numero= kC[k];
}
147
Programacin I Por Jos Rodolfo Queca
}
der=intercambio-1;
}
}
void mostrarshake(int A[],int x)
{
int i,n;
cout<<"\nNUMEROS ORDENADOS\n-------------------\n";
for (i=0; i<x; i++)
printf ("\nA[%i] = %i", i, A[i]);
printf ("\n\n\t");
getch();
}
void SHAKE()
{
int A[MAX],n;
clrscr();
cout<<"\t\t\t****ORDENAMIENTO SHAKE SORT****\n\n\n";
cout<<"CUANTOS NUMEROS DESEAS ORDENAR : ";cin>>n;cout<<"\n";
for (int i=0;i<n;i++)
{
printf("A[%i]: ",i);
scanf("\t%d",&A[i]);
}
shakesort(A,n);
mostrarshake (A,n);
getch();
return;
}
void INSORT()
{
int x,aux,k,n,A[MAX];
clrscr();
cout<<"******METODO DE INSERCION DIRECTA (O INSORT)******\n\n";
cout<<"CUANTOS NUMEROS DESEAS ORDENAR : ";cin>>n;cout<<"\n";
for(x=0;x<n;x++)
{
cout<<"CAPTURANDO "<<"["<<x<<"] : ";cin>>A[x];
}
for(x=0;x<n;x++)
{
aux=A[x];
k=x-1;
while(k>=0 && aux<A[k])
{
A[k+1]=A[k];
k--;
}
A[k+1]=aux;
}
cout<<"\n NUMEROS ORDENADOS\n--------------------\n";
for(x=0;x<n;x++)
{
cout<<" A["<<A[x]<<"]\n";
}
getch();
return;
}
148
Programacin I Por Jos Rodolfo Queca
}
arr_num_items = n;
for(i=arr_num_items; i>1; i--)
{
SortHeap(arr, i - 1);
}
printf("\nNUMEROS ORDENADOS\n----------------\n");
for (i = 0; i < arr_num_items; i++)
printf("%d\n",arr[i]);
getch();
return;
}
//sort heap
void SortHeap(int arr[], int arr_ubound)
{
int i,o;
int lChild, rChild, mChild, root, temp;
root = (arr_ubound-1)/2;
for(o=root;o>=0;o--)
{
for(i=root;i>=0;i--)
{
lChild = (2*i)+1;
rChild = (2*i)+2;
if ((lChild <= arr_ubound) && (rChild <= arr_ubound))
{
if(arr[rChild] >= arr[lChild])
mChild = rChild;
else
mChild = lChild;
}
else
{
if(rChild > arr_ubound)
mChild = lChild;
else
mChild = rChild;
}
if (arr[i] < arr[mChild])
{
temp = arr[i];
arr[i] = arr[mChild];
arr[mChild] = temp;
}
}
}
temp = arr[0];
arr[0] = arr[arr_ubound];
arr[arr_ubound] = temp;
return;
}
149
Programacin I Por Jos Rodolfo Queca
Bsqueda
Una bsqueda es el proceso mediante el cual podemos localizar un elemento con un valor
especfico dentro de un conjunto de datos. Terminamos con xito la bsqueda cuando el
elemento es encontrado
Secuencial o lineal.
Una de la operacin ms comn empleada con los arreglos es la bsqueda de elementos,
y la tcnica ms elemental empleada para realizar este trabajo es la bsqueda
secuencial. La bsqueda secuencial es una tcnica en la cual se toma un valor clave
(Elemento a buscar) y se empieza a comparar con todos los dems elementos, registro
por registro, el resultado de la comparacin es el ndice o posicin del elemento y
en caso de no encontrar valor, el resultado puede definirse como nulo.
Ejemplo 104:
Realizar un programa que use procedimientos. Para Buscar un elemento en un
Arreglo.
import java.io.*;
public class Program
{
public static void main(String[] args)throws IOException
{
int[] a = { 1, 2, 5, 7, 8, 9, 11, 12 };
for (int I = 0; I < a.length; I++)
System.out.println("A["+I+"]="+a[I]);
System.out.println();
int Elem_bus = 12,p;
p = busquedaS(a, Elem_bus);
if (p >= 0)
{
System.out.print("El elemento " + Elem_bus + " esta en ");
System.out.println("la posicion " + p);
}
else
{
System.out.print("El eiemento no se Encuentra.");
}
System.in.read();
}
150
Programacin I Por Jos Rodolfo Queca
static int busquedaS(int[] a, int c)
{
int ind = 0;
int encontrado = -1;
while (encontrado < 0 && ind < a.length)
{
if (a[ind] == c)
encontrado = ind;
else
ind = ind + 1;
}
return encontrado;
}
}
De Otra forma:
import java.io.*;
public class Program
{
public static void main(String[] args) throws IOException
{
int[] a = {1,2,5,7,8,9,11,12};
for (int I = 0; I < a.length; I++)
System.out.println(a[I]);
System.out.println();
BSec buscador = new BSec () ;
int b = 1;
int p = buscador.busquedaS (a, b);
if (p >= 0)
{
System.out.print ("El elemento "+ b +" esta en ");
System.out .println ("la posicion "+ p);
}
else
{
System.out.print ("El eiemento no se Encuentra.") ;
}
System.in.read();
}
}
class BSec
{
public int busquedaS(int[] a, int c)
{
int ind = 0;
int encontrado = -1;
while (encontrado<0 && ind < a.length)
{
if (a[ind] == c)
encontrado = ind;
else
ind = ind + 1;
}
return encontrado;
}
}
Binaria.
Se utiliza cuando el vector en el que queremos determinar la existencia o no de un
elemento est ordenado, o puede estarlo, este algoritmo reduce el tiempo de bsqueda
considerablemente, ya que disminuye exponencialmente con el nmero de iteraciones.
Este algoritmo est altamente recomendado para buscar en arreglos enormes: En uno de
50 000 000 elementos, tarda 26 iteraciones en ejecutarse 1, suponiendo que la
bsqueda falla, sino, siempre tarda menos en buscarlo.
151
Programacin I Por Jos Rodolfo Queca
manera obtenemos intervalos cada vez ms pequeos, hasta que se obtenga un intervalo
indivisible, con el elemento buscado como elemento central. Si el elemento no se
encuentra dentro de este ltimo, entonces se deduce que el elemento buscado no se
encuentra en el arreglo.
Si_no
Si X>v[Cen] entonces
Si_no
-1
Fin_si
Fin_si
Fin_mientras
Si (Bandera=Verdadero) entonces
Mostrar Elemento en la posicin Cen
Si_No
Mostrar Elemento no est en registro
Fin_si
Fin_Inicio
Ejemplo 105:
Realizar un programa que use procedimientos. Para Buscar un elemento en un
Arreglo.
import java.io.*;
public class Program
{
public static void main(String[] args) throws IOException
{
// a[] el array a los elemenLos estn colocados ae forma ordenada
int[] a = {1,2,5,7,8,9,11,12};
//muestra el array
for (int I = 0; I < a.length; I++)
System.out.println(a[I]);
System.out.println();
Bbin buscador = new Bbin () ;
//Busca el 1
int b = 8;
int p = buscador.busquedaB (a, b);
/*Interpreta la informacijn devuelta por el
proceso de bsqueda *I*/
if (p >= 0)
{
System.out.print ("El elemento "+ b +" esta en ");
System.out .println ("la posicion "+ p);
}
else
{
System.out.print ("El eiemento no esza.") ;
System.out.print ("Su lugar deberia ser ");
System.out.println("la posicin " + Math.abs (p));
152
Programacin I Por Jos Rodolfo Queca
}
System.in.read();
}
}
class Bbin
{
private int busquedaBinaria(int []a, int iz, int de, int c)
{
int central = (iz + de)/2;
if (de < iz)
return(-iz) ;
if (c < a[central])
return(busquedaBinaria (a, iz, central-1, c) ) ;
else
if (a[central] < c)
return(busquedaBinaria (a, central+1, de, c) ) ;
else
return(central) ;
}
public int busquedaB(int[] a, int c)
{
return(busquedaBinaria(a,0 ,a.length, c));
}
}
En C#
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int[] v = { 20, 30, 40, 50, 70 };
int i,elemento=40;
Console.WriteLine("Vector:");
int n = v.Length;
Program Objeto = new Program();
Objeto.imprime(v, n);
Objeto.Binaria(v, 0, n - 1,elemento);
Console.Read();
}
void imprime(int[] v, int n)
{
Console.WriteLine();
for (int i = 0; i < n; i++)
{
Console.Write(" " + v[i]);
}
}
void Binaria(int[] v, int a, int b,int x)
{
int central=0;
int Iz = a;
int Der = b;
Boolean Band = false;
while (Iz <= Der && Band == false)
{
central = (Iz + Der) / 2;
if (x == v[central])
Band = true;
else
{
if (x > v[central])
Iz = central + 1;
else
Der = central - 1;
}
}
if (Band == true)
Console.WriteLine("\nEncontrado en la pos " + central + " del vector");
else
Console.WriteLine("\nNo Encontrado");
153
Programacin I Por Jos Rodolfo Queca
}
}
}
Hashing.
Hasta ahora las tcnicas de localizacin de registros vistas, emplean un proceso de
bsqueda que implica cierto tiempo y esfuerzo. El siguiente mtodo nos permite
encontrar directamente el registro buscado.
La idea bsica de este mtodo consiste en aplicar una funcin que traduce un
conjunto de posibles valores llave en un rango de direcciones relativas. Un problema
potencial encontrado en este proceso, es que tal funcin no puede ser uno a uno; las
direcciones calculadas pueden no ser todas nicas, cuando R(k1)= R(k2) . Pero: K1
diferente de K2 decimos que hay una colisin. A dos llaves diferentes que les
corresponda la misma direccin relativa se les llama sinnimos.
A las tcnicas de clculo de direcciones tambin se les conoce como:
o Tcnicas aleatorias
o Mtodos de Hashing
Ventajas:
Desventajas:
Bsqueda en Textos
Por ejemplo:
Directa de cadena.
Localizar la presencia de una cadena de longitud M dentro de otra de N
Tipos:
154
Programacin I Por Jos Rodolfo Queca
TipoElemento=CARACTER
Texto=ARRAY[0..N-1]DE TipoElemento
Patrn=ARRAY[0..M-1]DE TipoElemento
Idea Clave: Comparar carcter a carcter texto y patrn comenzando por el extremo
izquierdo de ambos.
Idea Clave: Comparar carcter a carcter texto y patrn comenzando por el extremo
derecho de ambos
155
Programacin I Por Jos Rodolfo Queca
Las razones del rpido desarrollo en los ltimos 15 aos han sido:
Una mejor modelacin de aplicaciones del mundo real
La posibilidad del reuso del software durante el desarrollo de un sistema de
software
156
Programacin I Por Jos Rodolfo Queca
Conceptos de POO
Objeto
Es una entidad (tangible o intangible) que posee caractersticas y acciones
que realiza por s solo o interactuando con otros objetos.
Caractersticas Generales
Ejemplos:
Ejemplos: PROCEDIMIENTOS FUNCIONES Y OBJETOS
Realizar desde un Diagrama de flujo La codificacin en Java y Luego
Convertirlo en un Programa con Funciones y Procedimientos
INICIO
FIN
158
Programacin I Por Jos Rodolfo Queca
CODIFICACIN CON MODULOS(Funciones y Procedimientos)
import java.io.*;
public class Program
{
public static void main(String[] args)throws IOException
{
BufferedReader e = new BufferedReader(
int n = LeerNum(e);
genera(n);
System.in.read();
}
static int LeerNum(BufferedReader e)throws IOException
{
System.out.print("n=");
int m = Integer.parseInt(e.readLine());
return m;
}
static void genera(int n)
{
for (int i = n; i >= 1; i--)
{
for (int j = 1; j <= i; j++)
{
System.out.print("* ");
}
System.out.println();
}
}
}
PROGRAMACIN ORIENTADO A OBJETOS
import java.io.*;
public class Program
{
public static void main(String[] args)throws IOException
{
BufferedReader e = new BufferedReader(
Program Objeto = new Program();
int n = Objeto.LeerNum(e);
Objeto.genera(n);
System.in.read();
}
int LeerNum(BufferedReader e)throws IOException
{
System.out.print("n=");
int m = Integer.parseInt(e.readLine());
return m;
}
void genera(int n)
{
for (int i = n; i >= 1; i--)
{
for (int j = 1; j <= i; j++)
{
System.out.print("* ");
}
System.out.println();
}
}
}
159
Programacin I Por Jos Rodolfo Queca
Clases
La clase es la unidad de modularidad en el EOO. La tendencia natural del
individuo es la de clasificar los objetos segn sus caractersticas comunes
(clase). Por ejemplo, las personas que asisten a la universidad se pueden
clasificar (haciendo abstraccin) en estudiante, docente, empleado e
investigador.
La clase puede definirse como la agrupacin o coleccin de objetos que
comparten una estructura comn y un comportamiento comn.
Es una plantilla que contiene la descripcin general de una coleccin de
objetos. Consta de atributos y mtodos que resumen las caractersticas y el
comportamiento comunes de un conjunto de objetos.
Todo objeto (tambin llamado instancia de una clase), pertenece a alguna
clase. Mientras un objeto es una entidad concreta que existe en el tiempo y
en el espacio, una clase representa solo una abstraccin.
Todos aquellos objetos que pertenecen a la misma clase son descritos o
comparten el mismo conjunto de atributos y mtodos.
Todos los objetos de una clase tienen el mismo formato y comportamiento, son
diferentes nicamente en los valores que contienen sus atributos. Todos ellos
responden a los mismos mensajes.
Sintaxis de clases
class <nombreClase>
{
<miembros>
}
Caractersticas Generales
import java.io.*;
public class Program
{
public static void main(String[] args) throws IOException
{
Datos e = new Datos();
e.Nombre = "Jose";
e.Edad = 45;
System.out.println ("Nombre:"+e.Nombre);
System.out.print("Edad:" + e.Edad);
160
Programacin I Por Jos Rodolfo Queca
System.in.read();
}
}
class Datos
{
String Nombre;
int Edad;
}
En PHP
Mensajes
Es la peticin de un objeto a otro para solicitar la ejecucin de alguno de
sus mtodos o para obtener el valor de un atributo pblico.
Ejemplo
e.Nombre
e.Mostrar()
e.Mostrar(int R)
161
Programacin I Por Jos Rodolfo Queca
Atributos
Son los datos o variables que caracterizan al objeto y cuyos valores en un
momento dado indican su estado.
Un atributo es una caracterstica de un objeto. Mediante los atributos se
define informacin oculta dentro de un objeto, la cual es manipulada
solamente por los mtodos definidos sobre dicho objeto Un atributo consta de
un nombre y un valor. Cada atributo est asociado a un tipo de dato, que
puede ser simple (entero, real, lgico, carcter, string) o estructurado
(arreglo, registro, archivo, lista, etc.)
Su sintaxis algortmica es: <Modo de Acceso> <Tipo de dato> <Nombre del
Atributo>;
Mtodos
Son las operaciones (acciones o funciones O Procedimientos) que se aplican
sobre los objetos y que permiten crearlos, cambiar su estado o consultar el
valor de sus atributos.
Los mtodos constituyen la secuencia de acciones que implementan las
operaciones sobre los objetos. La implementacin de los mtodos no es visible
fuera de objeto.
Mtodo Main()
Mtodo Constructor
Los constructores son unos mtodos o funciones miembro muy importantes. Como
se puede ver, no tienen valor de retorno (ni siquiera void) y su nombre
coincide con el de la clase. Los constructores son un ejemplo tpico de
mtodos sobrecargados (overloaded):
Ejemplo 107:
Realizar un programa que use procedimientos (Mtodo Constructor)
import java.io.*;
public class Program
{
public static void main(String[] args) throws IOException
{
Metodo m = new Metodo("Joselito",5);
}
}
Mtodo Constructor
class Metodo public Metodo(String N, int E)
{ {
private String Nombre; Nombre = N;
private int Edad; Edad = E;
public Metodo(String N, int E) }
{
Nombre = N;
Edad = E; Tiene el mismo nombre de la clase
162
Programacin I Por Jos Rodolfo Queca
}
}
En PHP
<Modo de Acceso> Funcin <Nombre> [(Lista Parmetros)]: <Descripcin del Tipo de datos>
Para acciones:
<Modo de Acceso> Accin <Nombre> [(Lista Parmetros)] donde los parmetros son opcionales
163
Programacin I Por Jos Rodolfo Queca
Ejemplo 108:
Realizar un programa que use una clase y sus procedimientos(mtodos).
Constructor y un mtodo para imprimir los datos.
import java.io.*;
public class Program
{
public static void main(String[] args) throws IOException
{
Metodo m = new Metodo("Joselito", 5);
m.imprime();
System.in.read();
}
}
class Metodo
{
private String Nombre;
private int Edad;
public Metodo(String N, int E)
{
Nombre = N;
Edad = E;
}
public void imprime()
{
System.out.print("Nombre:"+Nombre+"\n Edad:"+Edad);
}
}
Ejemplo 109:
Realizar un programa que use una clase Rectngulo y sus mtodos Constructor,
Obtencin de rea y Permetro.
import java.io.*;
public class Program
{
public static void main(String[] args) throws IOException
{
Rectangulo m = new Rectangulo(6, 5);
m.Area();
m.Perimetro();
System.in.read();
}
}
class Rectangulo
{
private double Base;
private double Altura;
public Rectangulo(double b, double h)
{
Base = b;
Altura= h;
}
public void Area()
{
System.out.println("Area:" + Base *Altura);
}
public void Perimetro()
{
System.out.println("Perimetro:" + (2*Base+2*Altura));
}
}
164
Programacin I Por Jos Rodolfo Queca
Ejemplo 110: Realizar un programa que use una clase y mtodos pblicos.
import java.io.*;
public class Program
{
public static void main(String[] args) throws IOException
{
doka e=new doka(4,5);
e.imprime();
System.in.read();
}
}
class doka
{
private int x1, y1;
public doka(int x, int y) //Constructor
{
x1 = x;
y1 = y;
}
public void imprime()
{
System.out.print("X=" + x1 + "; Y=" + y1);
}
}
Ejemplo 111: Realizar un programa que use una clase y mtodos privados.
import java.io.*;
public class Program
{
public static void main(String[] args) throws IOException
{
doka e = new doka(4, 5);
e.imprimeP();
System.in.read();
}
}
class doka
{
private int x1, y1;
public doka(int x, int y) //Constructor
{
x1 = x;
y1 = y;
}
private void imprime()
{
System.out.print("X=" + x1 + "; Y=" + y1);
}
public void imprimeP()
{
imprime();
}
}
Ejemplo 112:
Realizar un programa que use clase y sobrecarga de constructores.
import java.io.*;
public class Program
{
public static void main(String[] args) throws IOException
{
Racional r1 = new Racional();
Racional r2 = new Racional(1, 5);
Racional r3 = new Racional(r1);
Racional r4 = r2.sumar(r1);
System.out.print("r1= "); r1.mostrar();
165
Programacin I Por Jos Rodolfo Queca
System.out.print("r2= "); r2.mostrar();
System.out.print("r3= "); r3.mostrar();
System.out.print("r4= "); r4.mostrar();
System.in.read();
}
}
class Racional
{
private int num, den;
public Racional()
{
num = 0;
den = 1;
}
public Racional(int n, int m)
{
num = n;
den = m;
}
public Racional(Racional r)
{
num = r.num;
den = r.den;
}
public Racional sumar(Racional r2)
{
Racional suma = new Racional(num + r2.num, den + r2.den);
return suma;
}
public void mostrar()
{
System.out.println(num + "/" + den);
}
}
Ejemplos Java#
Ejemplo 113:
Realizar un programa que use mtodos que retorne el rea del crculo dado el radio.
Nota: que se defina la clase crculo con un radio constante y se cree un objeto de esa clase
para utilizar los mtodos y los datos de ese objeto.
import java.io.*;
public class Program
{
public static void main(String[] args) throws IOException
{
Circulo cir = new Circulo();
System.out.println("El Area del circulo de radio= " + cir.radio + " es " + cir.calcularArea());
System.in.read();
}
}
class Circulo
{
double radio = 5;
double calcularArea()
{
return radio * radio * 3.141592;
}
}
Ejemplo 114:
Realizar un programa que use mtodos para que retorne el rea de un rectngulo, dado la base
y altura.
Nota: que se defina la clase rectngulo y se cree un objeto de esa clase para utilizar los
mtodos (incluido el mtodo constructor) y los datos de ese objeto
166
Programacin I Por Jos Rodolfo Queca
import java.io.*;
public class Program
{
public static void main(String[] args) throws IOException
{
double b, h;
BufferedReader e = new BufferedReader(new InputStreamReader(System.in));
Double x;
System.out.print("Ingrese la Base:");
x = Double.valueOf(e.readLine());
b = x.doubleValue();
System.out.print("Ingrese la Altura:");
x = Double.valueOf(e.readLine());
h = x.doubleValue();
Rectangulo r = new Rectangulo(b, h);
System.out.println("El area es : " + r.calcularArea());
System.in.read();
}
}
class Rectangulo
{
private double base, altura;
public Rectangulo(double b, double h)
{
base = b;
altura = h;
}
public double calcularArea()
{
return base * altura;
}
}
Ejemplo 115:
Realizar un programa que muestre como se pasa la referencia de un objeto creado y puede
modificarse sus miembros dato.
import java.io.*;
public class Program
{
public static void main(String[] args) throws IOException
{
int n = 10;
BufferedReader e = new BufferedReader(new InputStreamReader(System.in));
Fech ene = new Fech();
System.out.println("Propiedades del objeto de creacin.");
ene.mostrar();
modifica(ene);
System.out.println("Propiedades del objeto Modificado");
ene.mostrar();
e.readLine();
}
static void modifica(Fech Obj)
{
Obj.fecha = "12-Sep-2014";
Obj.dias = 12;
}
}
class Fech
{
String fecha;
int dias;
Fech() //Constructor
{
fecha = "01-ene-2005";
dias = 1;
}
void mostrar()
{
System.out.println("Fecha actual:" + fecha + "\t Dias= " + dias);
167
Programacin I Por Jos Rodolfo Queca
}
}
Ejemplo 116:
Programa Pilas con sus principales funciones
import java.io.*;
public class Program
{
public static void main(String[] args) throws IOException
{
int op;
BufferedReader entrada = new BufferedReader(new InputStreamReader(System.in));
vector vv = new vector();
do
{
System.out.println(" Menu");
System.out.println("1 Adcionar...");
System.out.println("2 Eliminar...");
System.out.println("3 Imprimir...");
System.out.println("4 Salir....");
System.out.print("Elija opcion:");
op = Integer.parseInt(entrada.readLine());
switch (op)
{
case 1: vv.AdicionaV(); break;
case 2: vv.EliminaV(); break;
case 3: vv.ImprimeV(); break;
case 4: break;
default: System.out.println("Error..elija una opcion:");
}
} while (op != 4);
System.exit(0);
}
}
class vector
{
BufferedReader en = new BufferedReader(new InputStreamReader(System.in));
int V[], Tope, cima, dato;
vector()
{
Tope = 9;
V = new int[Tope];
cima = -1;
}
168
Programacin I Por Jos Rodolfo Queca
System.out.println("Valores del vector V");
for (int i = cima ; i >= 0; i--)
{
System.out.println(V[i]);
}
}
}
Ejemplo 117:
C#
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int op;
vector vv = new vector();
do
{
Console.WriteLine(" Menu");
Console.WriteLine("1 Adcionar...");
Console.WriteLine("2 Eliminar...");
Console.WriteLine("3 Imprimir...");
Console.WriteLine("4 Salir....");
Console.Write("Elija opcion:");
op = int.Parse(Console.ReadLine());
switch(op)
{
case 1:
vv.AdicionaV(); break;
case 2:
vv.EliminaV(); break;
case 3:
vv.ImprimeV(); break;
case 4:
break;
default:
Console.WriteLine("Error..elija una opcion:");
break;
}
} while (op != 4);
}
}
class vector
{
public int[] V;
public int Tope, cima, dato;
public vector()
{
Tope = 9;
V = new int[Tope];
cima = -1;
}
public void AdicionaV()
{
if (cima == Tope-1)
Console.WriteLine("pila Llena");
else
{
cima++;
Console.Write("V[" + cima + "]=");
V[cima] = int.Parse(Console.ReadLine());
}
}
public void EliminaV()
{
169
Programacin I Por Jos Rodolfo Queca
if (cima == -1)
Console.WriteLine("pila vacia");
else
{
dato = V[cima];
Console.Write(V[cima] + " Eliminado..");
cima--;
}
}
public void ImprimeV()
{
Console.WriteLine("Valores del vector V");
for (int i = cima ; i >= 0; i--)
{
Console.WriteLine(V[i]);
}
}
}
}
Ejemplo 118:
Programa con Arreglos para determinar si una palabra es Palndromo
import java.io.*;
class Pila
{
private static final int TAMPILA = 7;
private int cima;
private char[] listaPila;
public Pila()
{
cima = -1;
listaPila = new char[TAMPILA];
}
public void insertar(char elemento) throws IOException
170
Programacin I Por Jos Rodolfo Queca
{
if (PilaLlena())
{
System.out.print("Desbordamiento pila");
}
cima++;
listaPila[cima] = elemento;
}
public char quitar() throws IOException
{
char aux;
if (pilaVacia())
{
System.out.print("Pila vacia, no se puede extraer");
}
aux = listaPila[cima];
cima--;
return aux;
}
public boolean pilaVacia()
{
return cima == -1;
}
public boolean PilaLlena()
{
return cima == TAMPILA - 1;
}
public void limpiarPila()
{
cima = -1;
}
}
Ejemplo 119:
Programa de Colas con Arreglos
import java.io.*;
171
Programacin I Por Jos Rodolfo Queca
} while(opcion!=4);
}
}
class ColaEstatica
{
int frente, fin, capacidad;
private int elementos[];
public ColaEstatica(int cap)
{
capacidad = cap; elementos = new int[capacidad];
frente = -1; fin = 0;
}
public boolean vacia()
{
return (fin == 0) ? true : false;
}
public boolean llena()
{
return (fin == capacidad) ? true : false;
}
public void insertar(int objeto)
{
try
{
if (!llena())
{
elementos[fin] = objeto;
fin++;
}
else
{
System.out.println("Pila Llena");
}
}
catch (java.lang.ArrayIndexOutOfBoundsException Error)
{
System.out.println("Desborde de Cola");
}
}
public int remover()
{
int x = elementos[0];
for (int i = 0; i < fin - 1; i++)
elementos[i] = elementos[i + 1];
fin--;
return (x);
}
public void imprimir()
{
for (int i = 0; i < fin ; i++)
{
System.out.println("A["+i+"]="+elementos[i]);
}
}
}
172
Programacin I Por Jos Rodolfo Queca
GroupBox:
Text=Ingreso de Datos:
GroupBox:
Text=Resultados:
GroupBox:
Text=Opciones:
Formulario:
Text=Formulario para la Ecuacin de
Segundo Grado
Caja de Texto:
Name=txtA
Caja de Texto:
Name=txtB
Boton de Comando: Boton de Comando:
Name= btnCalcula Name= btnSale
Text = &Calcula Text = &Salir
Caja de Texto: Caja de Texto: Caja de Texto:
Name=txtR2 Name=txtR1 Name=txtC
import System.Data.*;
import System.Drawing.*;
import System.ComponentModel.*;
import System.Windows.Forms.*;
173
Programacin I Por Jos Rodolfo Queca
}
}
class Segundo
{
private double A, B, C, X1, X2, d;
Segundo(double x1, double x2, double x3)
{
A = x1;
B = x2;
C = x3;
}
double verdad()
{
d = B * B - 4 * A * C;
return d;
}
double OperacionX1()
{
if (d >= 0)
X1 = (-B + Math.sqrt(d)) / (2 * A);
return X1;
}
double OperacionX2()
{
if (d >= 0)
X2 = (-B - Math.sqrt(d)) / (2 * A);
return X2;
}
}
Ejemplo 121:
Realizar un programa para Generar la serie:
174
Programacin I Por Jos Rodolfo Queca
175
Programacin I Por Jos Rodolfo Queca
Ejemplo 122:
Realizar un programa para llenar un ListBox los n valores ingresado por teclado y mostrar en
un ListBox del 1 al 10 en Romano, la codificacin se har en Visual J#.Net
GroupBox:
Name = Ingreso de Datos
Name = Resultados
Name = Opciones
ListBox:
Name = lstListado
TextBox:
Name = txtNum
Boton:
Name = btnSale
Boton: Text = &Salir
Name = btnCalcula
Text = &Genera
package Romanos;
import System.Collections.Generic.*;
.......
public class Form1 extends System.Windows.Forms.Form
{
private GroupBox groupBox3;
private GroupBox groupBox2;
private Button btnSale;
.....
.....
private void btnSale_Click(Object sender, System.EventArgs e)
{
super.Dispose();
}
private void btnCalcula_Click(Object sender, System.EventArgs e)
{
Romano r = new Romano();
if (txtNum.get_Text() != "")
{
int n = Integer.parseInt(txtNum.get_Text());
for (int i = 1; i <= n; i++)
{
String a = r.Cambia(i);
lstListado.get_Items().Add(a);
}
}
}
}
class Romano
{
String Cambia(int n)
{
int g, h, gg;
String roma[] ={ "I", "I", "V", "X", "L", "C", "D", "M" };
176
Programacin I Por Jos Rodolfo Queca
String roman = "";
h = 0;
g = n;
do
{
gg = g % 10;
g = g / 10;
switch (gg)
{
case 1: roman = roma[1 + 2 * h] + roman; break;
case 2: roman = roma[1 + 2 * h] + roma[1 + 2 * h] + roman; break;
case 3: roman = roma[1 + 2 * h] + roma[1 + 2 * h] + roma[1 + 2 * h] + roman; break;
case 4: roman = roma[1 + 2 * h] + roma[2 + 2 * h] + roman; break;
case 5: roman = roma[2 + 2 * h] + roman; break;
case 6: roman = roma[2 + 2 * h] + roma[1 + 2 * h] + roman; break;
case 7: roman = roma[2 + 2 * h] + roma[1 + 2 * h] + roma[1 + 2 * h] + roman; break;
case 8: roman = roma[2 + 2 * h] + roma[1 + 2 * h] + roma[1 + 2 * h] + roma[1 + 2 * h] + roman; break;
case 9: roman = roma[1 + 2 * h] + roma[3 + 2 * h] + roman; break;
}
h++;
}while (g != 0);
return n + ". " + roman;
}
}
Ejemplo 123:
Generar una cantidad constante de nmeros aleatorios entre dos lmites A y B dados por el
usuario y los vamos a introducir en un array de doubles. Sacaremos por la consola dichos
nmeros con sus correspondientes races cuadradas, la codificacin se har en Turbo C++.
#include <iostream.h>
#include <math.h> //para la raz cuadrada sqrt()
#include <stdlib.h> //para funcion rand()
#include <iomanip.h>
#define NUM 15
void main()
{
double datos[NUM]; //arreglo
double A,B; //limites
int i;
cout << "Dar limite A y B:";
cin >> A >> B;
177
Programacin I Por Jos Rodolfo Queca
Ejemplo 124:
Ordenar un conjunto de nmeros introducidos por el usuario, a travs del teclado.
Primero, el programa debe pedir al usuario de qu forma desea ordenarlos: ascendente o
descendente.
#include <iostream.h>
#define NUM 10
void main(void)
{
int dato[NUM];
bool ord=false; //true:ascend false=descen.
char ch;
while(true)
{
cout << "\nOrdenar descendente (D) o Ascendente (A)?" ;
cout << flush; //limpia buffer
cin >> ch; //captura la tecla presionada
if (ch=='A' || ch=='a')
{
ord=true; break;
}
else if (ch=='D' || ch=='d')
{
ord=false; break;
}
else cout << "Error, no ha elegido bien.\n";
}
//introducir numeros
cout << endl;
for (int i=0;i<NUM;i++)
{
cout << "dame el dato[" << i << "]:";
cin >> dato[i];
}
// algoritmo de ordenacion
for (i=0;i<NUM-1;i++)
{
for (int j=i+1;j<NUM;j++)
{
int a=dato[i];
int b=dato[j];
if ( a < b && !ord)
{ // Descen
dato[i] = b;
dato[j] = a;
}
if ( a > b && ord)
{ //Ascend
dato[i] = b;
dato[j] = a;
}
}
}
// imprime numeros ordenados
cout << "\nOrden elegido: " ;
ord? cout << "Ascend" : cout << "Descend"; //operador ternario
for ( i=0;i<NUM;i++)
{
cout << "\ndato[" << i << "]:" << dato[i];
}
cout << endl;
}
178
Programacin I Por Jos Rodolfo Queca
Ejemplo 125:
Escribir una cadena al revs, escribirla en maysculas, invertir las maysculas a minsculas
y viceversa.
#include <iostream.h>
#include <string.h> //para strlen()
#include <ctype.h> //para islower()
void main(void)
{
char cadena[120];
cout << "Escribe una frase:" << endl;
cin.getline(cadena,120);
int len = strlen(cadena);
cout << "Longitud de la cadena: " << len << endl;
//escribir la cadena al revs
cout << "Cadena al reves: " << endl << "\t";
int val=len; //copia longitud
while(val--)
{
cout << cadena[val];
}
179
Programacin I Por Jos Rodolfo Queca
Ejemplo 126:
Escribir una cadena al revs, escribirla en maysculas, invertir las maysculas a minsculas
y viceversa en C#.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Ejemplo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Ejecuta_Click(object sender, EventArgs e)
{
double a, b, c;
a = double.Parse(txtN1.Text);
b = double.Parse(txtN2.Text);
c = double.Parse(txtN3.Text);
Ecuacion p;
p=new Ecuacion(a,b,c);
p.Calcule();
txtX1.Text=p.S1;
txtX2.Text=p.S2;
}
180
Programacin I Por Jos Rodolfo Queca
{
A = a1;
B = b1;
C = c1;
}
Ejemplo 127:
Escribir un programa que ingrese datos en un Vector y muestre en un ListBox, ordenar el
vector de forma ascendente y descendente imprimindolo en un Listbox2.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
181
Programacin I Por Jos Rodolfo Queca
namespace ejemplo1
{
public partial class Form1 : Form
{
int i=0;
int[] dato = new int[10];
bool ord; //true:ascend false=descen.
public Form1()
{
InitializeComponent();
}
private void IngresaD_Click(object sender, EventArgs e)
{
//introducir numeros
dato[i]=int.Parse(txtDato.Text);
lstDato.Items.Add(txtDato.Text);
i++;
txtDato.Text ="";
txtDato.Focus();
}
private void Ascendente_CheckedChanged(object sender, EventArgs e)
{
if (Ascendente.Checked)
ord = true ;
Ordena();
}
Ejemplo 128:
Escribir un programa que ingrese n mediante teclado para luego imprimir la Serie
Espiral.(Java y C#)
En C#
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
gotoxy(30,40); Console.Write("Ingrese n:");
int n = int.Parse(Console.ReadLine());
genera(n);
Console.Read();
}
static void gotoxy(int x, int y)
{
System.Console.SetCursorPosition(x, y);
}
static void genera(int n)
{
int i, j, c = 1, r = 1, b = 0;
do
{ for (i = c; i <= n - c; i++)
{
if (b <= n * n + 1)
{
b = b + 1;
if (r == 1) { gotoxy(i * 3, c);Console.Write(b); }
if (r == 2) { gotoxy((n + 1 - c) * 3, i); Console.Write(b); }
if (r == 3) { gotoxy((n + 1 - i) * 3, n + 1 - c); Console.Write(b); }
if (r == 4) { gotoxy(c * 3, n + 1 - i); Console.Write(b); }
}
}
if (r == 4) { r = 1; c = c + 1; } else r = r + 1;
183
Programacin I Por Jos Rodolfo Queca
if ((n % 2 != 0) && (b == n * n - 1))
{
b = b + 1;
c = (n + 1) / 2;
gotoxy(c * 3, c); Console.Write(b);
}
} while (b != n * n);
}
}
Ejemplo 129:
Escribir un programa que acepte nmero en una caja de texto e invierta el nmero en otra
caja de texto.
184
Programacin I Por Jos Rodolfo Queca
Programacin de Aplicaciones
Es un novedoso entorno, incluido en las ltimas versiones de los programas (software), que
parece hacer furor entre los programadores ltimamente. La programacin en Visual BASIC para
Windows, C# y Java viene siendo, desde hace unos aos, una de las herramientas ms
verstiles y, a la vez, ms sencillas y utilizadas en el mundo de la programacin. El
usuario puede desarrollar sus programas en un compilador externo o utilizar el propio mdulo
como VBA que incluye las aplicaciones: CAD(Autodesk: AutoCAD, Civil3D, Inventor, SolidWorks,
etc.), Office( Excel, Word y otros.), ArcGIS.
Este mdulo contiene la sintaxis del lenguaje, un depurador y un entorno de desarrollo. As,
el programador, puede programar rutinas VBA.
Ejemplo 129:
Usando la funcin del ejemplo anterior, llenar un rango de filas, empezando por la celda A1,
generando nmeros ROMANOS correlativos (comenzando por el 1).
185
Programacin I Por Jos Rodolfo Queca
End Select
h = h + 1
Loop Until G = 0
numero = Roman
End Function
186
Programacin I Por Jos Rodolfo Queca
Ejemplo 130:
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)
CrculoObj = AcadModel.AddCircle(PtoCentro, Radio)
AcadModel.Application.ZoomExtents()
End Sub
187
Programacin I Por Jos Rodolfo Queca
Ejemplo 131:
Ejemplo realizado en Visual Basic 6.0 que trabaja con AutoCAD, se muestra en el siguiente
grafico
Dim regObj
regObj = AcadModel.AddRegion(curves)
regObj(0).Color = 2
189
Programacin I Por Jos Rodolfo Queca
Bibliografa
Encarta
2006
Microsoft Corporation
190