Sei sulla pagina 1di 190

Programacin I Por Jos Rodolfo Queca

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.

Qu hace poderosa a una computadora?

Velocidad La computadora puede llevar a cabo miles de millones


de acciones por segundo.

Confiabilidad Las fallas usualmente son debidas a errores humanos,


de una forma u otra. ( Vergenza para todos nosotros!)

Almacenamiento La computadora puede guardar grandes cantidades de


informacin.

Algunos Trminos Para Comenzar

Hardware Componentes fsicos de la computadora.


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

Data Hechos individuales como nombre, precio, cantidad pedida

Information Es lo que se obtiene al procesar los datos.(La informacin es el


producto final y los datos la materia prima)
Default Ajustes originales; Lo que pasar si usted no cambia nada. (por
defecto)

Concepto
Una computadora es un dispositivo electrnico que ejecuta las instrucciones en un programa.

Una computadora tiene cuatro funciones:

a. Acepta informacin Entrada = Input

b. Procesa datos Procesamiento = Processing

c. Produce una salida Salida = Output

d. Almacena resultados Almacenamiento = Storage

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

Son abreviaturas para el lenguaje de mquina


Lenguajes
Asembler

Utilizan declaraciones en los programas, expresiones como palabras y


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

Un programa Intrprete traduce las declaraciones del programa original a


lenguaje de mquina, lnea por lnea, a medida que va corriendo dicho
programa original. Un programa interpretado ser ms pequeo que uno
compilado pero insumir ms tiempo para ser ejecutado.

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


incluyen lenguajes de interrogatorio o "query", con bases de datos. Aqu
Cuarta existen escasas opciones para los programadores, pero los programas son mucho
Generacin ms fciles de escribir que en los lenguajes de nivel ms bajo. Estos tambin
requieren ser interpretados o compilados.

Son lenguajes de quinta generacin. No tenemos realmente ningn programa de


Lenguajes sta generacin que utilice un lenguaje natural. En un lenguaje as, usted
Naturales escribira sus declaraciones en lenguaje corriente como frases normales. Por
ejemplo usted escribira: Quienes son los vendedores con ventas que superen
los $20.000 durante el mes pasado?

Muchos lenguajes de computacin estn disponibles para escribir programas de computadoras.


Cada uno de ellos tienen ventajas para ciertas clases de tareas.

Veamos algunos ejemplos de los varios tipos de lenguajes:

Lenguaje de Es la lengua nativa de la CPU.


Cada diseo de CPU tiene su propio lenguaje de mquina. Este es el juego de
Mquina instrucciones que usa el chip para s mismo. Est hecho de ceros y unos
(nmeros binarios) y resulta muy difcil para el trabajo de la gente.

10 23 El lenguaje de mquina parece compuesto de nmeros solamente.


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

3
Programacin I Por Jos Rodolfo Queca

17 40
18 C0
19 00

Otro ejemplo de lenguaje de mquina es el siguiente:


El segmento de cdigo en lenguaje Java es:
int counter = 0;
counter = counter + 1;
podra ser trasladado en lenguaje de mquina como

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!

;name of the program:one.asm


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

FORTRAN = Formula Translation


El lenguaje FORTRAN fu creado cerca de 1957 para ayudar a los cientficos,

4
Programacin I Por Jos Rodolfo Queca

ingenieros y matemticos a escribir sus programas y resolver con ellos las


ecuaciones matemticas. Todava es un lenguaje vastamente utilizado para ese
tipo de programas. Fue el primer lenguaje exitoso de alto nivel. Han
aparecido nuevas versiones y el standard actual es el Fortran 90.
A continuacin veremos un programa de ejemplo en el que se acepta el bus o
lnea de transmisin de datos, nmero 99 y muestra en pantalla el comando
TAKE BUS 99 (tome la Lnea 99)

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

COBOL = Common Business Oriented Language


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

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.

BASIC = Beginner's All Symbolic Instruction Code


Este lenguaje fue escrito en 1964,. Originalmente el BASIC era para ser usado
solamente en las clases.
Una gran variedad de "dialectos" del BASIC fueron desarrollndose a travs de
los aos. Ahora es muy popular el Visual Basic para programar aplicaciones
bajo Windows. Microsoft Visual Basic for Applications es ejemplo de un
desprendimiento del BASIC modificado para ayudar a los usuarios a escribir
pequeos subprogramas llamados "scripts " (libretos) o "macros " para ser
usados con los aplicaciones. Otras aplicaciones pueden tambin tener sus
propias variaciones sobre el BASIC, por ejemplo Word Basic y Excel Basic.

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


yardas, pies y pulgadas y las convierte en kilmetros metros y centmetros.
Note como el programador puede escribir ecuaciones para hacer los clculos.

5
Programacin I Por Jos Rodolfo Queca

' English to Metric Conversion


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

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


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

El programa siguiente est escrito en C++, acepta tres nmeros y verifica si


el tercero es igual a la diferencia entre los dos primeros

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

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

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

Aclaracin: no confunda Java con JavaScript que es un lenguaje para


scripts (libretos) - comnmente usado en las pginas web.

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:

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


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

Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural,
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

Es la descripcin de un algoritmo que asemeja a un lenguaje de programacin pero


con algunas convenciones del lenguaje natural. Tiene varias ventajas con respecto a
los diagramas de flujo, entre las que se destaca el poco espacio que se requiere
para representar instrucciones complejas. El pseudocdigo no est regido por ningn
estndar.
7
Programacin I Por Jos Rodolfo Queca

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.

Ventajas de utilizar un Pseudocdigo a un Diagrama de Flujo

Ocupa menos espacio en una hoja de papel


Permite representar en forma fcil operaciones repetitivas complejas
Es muy fcil pasar de Pseudocdigo a un programa en algn lenguaje de programacin.

Variables

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


cambiar durante la ejecucin de un programa. Los tipos determinan cmo se manipular la
informacin contenida en esas variables. Adems, la informacin en el interior de la
memoria del computador es binaria.

Estas variables, pueden ser caracteres, nombres, combinaciones que permiten temporalmente
guardar informacin para su manipulacin posteriormente;

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

Valores Ingresados por Teclado:


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

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..

Pasos para realizar el diseo de Algoritmos.-


Dividiremos en tres pasos el diseo de algoritmos.

Para:

LECTURA
Para que la computadora peda los datos mediante teclado:

Que la computadora me pida un valor en la variable a


Que la computadora me pida un valor en la variable b

PROCESOS O CALCULOS

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

Que la computadora sume s=a+b


Que la computadora reste s=a-b
Que la computadora multiplique s=a*b
Que la computadora multiplique s=a*3
Que la computadora asigne s=3
Que la computadora calcule s=a*b
ESCRITURA
Para que la computadora muestre los resultados obtenidos en pantalla:

Que la computadora me muestre s


Que la computadora imprima rea
Que la computadora me muestre en pantalla la variable s

Sentencias de Control
Estructuras algortmicas

Las estructuras de operacin de programas son un grupo de formas de trabajo, que


permiten, mediante la manipulacin de variables, realizar ciertos procesos
especficos que nos lleven a la solucin de problemas.

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:

TERMINAL INICIO / FIN INICIO / FIN

LECTURA Que la comp. pida a, b, c


a, b, c

PROCESO PROCESO Que la comp. Resuelva, calcule

IMPRESION Que la comp. Imprima en Pantalla

DECISION DECISION Si, Mientras , Hacer Mientras

SUBPROGRAMA SUBPROGRAMAS --

SEGN DECISION MULTIPLE -----


SEA

CONECTORES ---

Estructuras Secuenciales
10
Programacin I Por Jos Rodolfo Queca

Ejemplo 1: Algoritmo:

Realizar un algoritmo para sumar 2 nmeros

: Diagrama de Flujo:

INICIO
1 Inicio

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


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

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

5 Que la comp. me muestre la var s s

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

Pseudocdigo: Diagrama de Flujo:

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

Pseudocdigo: Diagrama de Flujo:

Inicio F
Leer F

C=(5/9)*(F 32)
5
C F 32
Imprimir C 9
Fin

Ejemplo 5: Algoritmo: 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:

Pseudocdigo: Diagrama de Flujo:

aX + bY = c INICIO
dX + eY= f

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

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

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


X
a*e b*d
Imprimir X, Y
Fin

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

Ejemplo 10: Algoritmo:


Desarrolle un algoritmo que le permita leer un valor cualquiera N y escribir en la pantalla
si dicho nmero es Positivo o Negativo

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

N, es Positivo Negativo

Ejemplo 11: Algoritmo:


FIN

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


nmero es mltiplo de Z.
INICIO

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

Ejemplo 12: Algoritmo:


Desarrolle un algoritmo que le permita leer un valor
cualquiera N y escribir si dicho nmero es comn divisor de INICIO
otros dos valores ledos W y Z

Inicio W, Z, N
Leer W, Z, N
If (Residuo(W/N)=0 y Residuo(Z/N)=0) entonces
Escriba (N es 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

Ejemplo 15: Algoritmo:


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

Inicio
Leer A, B, C A, B, C
Si A>B y A>C entonces
Escribir(A es el mayor)
Sino
Si B>A y B>C entonces
Escribir (B es el mayor) No Si
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

Ejemplo 16: Algoritmo:


Desarrolle un algoritmo que le permita leer tres valores
A,B,C e indicar si uno de los tres divide a los otros dos
exactamente.
INICIO
Inicio
Leer A, B, C
Si Residuo(B/A)=0 y Residuo(C/A)=0 entonces
Escribir(A divide exactamente a B y C) A, B, C
Sino
Si A%B=0 y C%B=0 entonces
Escribir (B divide exactamente a A y C)
Sino
Si A%C=0 y B%C= 0 entonces No Res(B/A) =0 y
Si
Escribir (C divide exactamente a B y A) Res(C/A) =0
Sino
Escribir (No hay divisin exacta) A div a B y C
Fin Si No A%B=0 y
Si
Fin Si C%B=0
Fin Si
Fin
No Si B, div A y C
A%C=0 y
B%C=0

No hay div C, div B y A

FIN

17
Programacin I Por Jos Rodolfo Queca

Ejemplo 17: Algoritmo:


Realizar un algoritmo que determine el mayor de 3 nmeros

INICIO

a, b, c

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

Mayor=b Mayor=c Mayor=a

Mayor

FIN

Estructuras Condicionales De Decisin Mltiple


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

Sentencia SEGN SEA la opcin:

Opcin

18
Programacin I Por Jos Rodolfo Queca

Ejemplo 18: Algoritmo:

Realizar un algoritmo que dado un nmero entre 1 y 7 imprime el da.

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

Lunes Martes Mircoles Jueves Viernes Sbado Domingo

Ejemplo 19: Algoritmo: FIN

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

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

Verano Otoo Invierno Primavera No es Mes

FIN 19
Programacin I Por Jos Rodolfo Queca

Estructuras Cclicas (Repetitivas).


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

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.

Ahora, presentamos las ms usuales en los lenguajes de programacin:

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


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

Sentencias
Sentencias
Sentencias

Ejemplo 20: Algoritmo:

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

I I se incrementara desde 1 hasta n


n ser introducido por teclado

FIN

20
Programacin I Por Jos Rodolfo Queca

Ejemplo 21: Algoritmo:

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

I se incrementara desde 1 hasta n


n ser introducido por teclado
2*I

FIN

Ejemplo 22: Algoritmo:

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

I se incrementara desde 1 hasta n


2*I - 1 n ser introducido por teclado

FIN

21
Programacin I Por Jos Rodolfo Queca

Ejemplo 23: Algoritmo:

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

Ejemplo 24: Algoritmo:

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

I se incrementara desde 1 hasta n


2*I - 1 n ser introducido por teclado

FIN

22
Programacin I Por Jos Rodolfo Queca

Sentencia Mientras:

Sentencias

Sintaxis:
Mientras <Condicion>
<Sentencias>

Fin Mientras

Ejemplo 25: Algoritmo:

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

Ejemplo 26: Algoritmo:

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

Ejemplo 27: Algoritmo:

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

Sentencia Hacer Mientras:

Sentencias

Sintaxis:
Hacer
<Sentencias>

Mientras <Condicion>

Ejemplo 28: Algoritmo:

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

Ejemplo 29: Algoritmo:

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

Las Sentencias Repetitivas

Ejemplo 31: 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 INICIO INICIO


1 3 5 7 9

n n n

I=1 n I=0 I=0

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

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

FIN

27
Programacin I Por Jos Rodolfo Queca

Ejemplo 32: Algoritmo:

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

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

I=N 1

J=1I

Salto d Lnea

Ejemplo 33: Algoritmo: FIN

INICIO

A=1

I=1 n

A/2*A

A=A+1

FIN
28
Programacin I Por Jos Rodolfo Queca

Ejemplo 34: Algoritmo:

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

INICIO

Ap=0; Rep=0

I=1 n

Nota

Nota > 51

Rep=Rep + 1 Ap=Ap+1

Reprob Aprob

Rep, Ap

FIN

Ejemplo 35: Algoritmo:

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

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

para N trminos

29
Programacin I Por Jos Rodolfo Queca

INICIO

I=1 N

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

FIN

Ejemplo 36: Algoritmo:

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

* * * * * 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:

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


N
* * * * * para N = 5
* * * *
* * * I=N 1
* *
*
J=1 I

Salto d Lnea

Ejemplo 38: Algoritmo: I

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


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

31
Programacin I Por Jos Rodolfo Queca

Ejemplo 39: Algoritmo:

Imprimir en pantalla el siguiente ejemplo,


N ser ingresada por teclado.

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

J>=I

Espacio

Ejemplo 40: Algoritmo:

Imprimir en pantalla el siguiente


ejemplo, N ser ingresada por teclado.

* * * * * INICIO
* *
* *
* * N
* * * * *

I=1 N

J=1 N

I=1 o I=N o J=1 o J=N

Espacio *

Salto d Lnea

I
32
FIN
Programacin I Por Jos Rodolfo Queca

Ejemplo 41: Algoritmo:


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

A=1
B=1

I=1 n

A/2*I

C=A+B
A=B
B=C

FIN

INICIO

Ejemplo 42: Algoritmo:


N

Imprimir en pantalla el siguiente ejemplo,


N ser ingresada por teclado.
I=N1
1-1 1-1 1 N=5
22 2-2
J=1 I
3-3 3
4-4
5
J mod 2 = 0

J -J

Salto d Lnea

FIN

33
Programacin I Por Jos Rodolfo Queca

Ejemplo 43: Algoritmo:

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

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

Ejemplo 45: Algoritmo: INICIO

Imprimir en pantalla el siguiente ejemplo,


N ser ingresada por teclado. N

-1
2 -2 I=1N
3 3 -3
4 -4 4 -4
J=1 I
-5 5 5 5 -5

I==J n+1== I+J

J -J

Salto d Lnea

Ejemplo 46: Algoritmo: FIN

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

Ejemplo 47: Algoritmo:

Realizar un Diagrama de Flujo que rote los dgitos de un nmero, el valor de N ser
ingresado por teclado.

Ejemplo:

Dato Original Primer Giro Segundo Giro Tercer Giro


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

INICIO

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

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

swC

Si No
swC=no

FIN

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.

Existen arreglos unidimensionales, bidimensionales, tridimensionales, etc.

Arreglos Unidimensionales (de una sola dimensin)


a Para hacer uso de una de las casillas de
este Arreglo o Vector se procede de la
siguiente forma:

Capturamos un valor de a[1]

Tercera Casilla - ndice 2 Para ingresar valores a estas casillas se


No procede de la siguiente forma:
Cuarta Casilla - ndice 3
a[1] = 5
No
Quinta Casilla - ndice 4 a[2] = 3
No
Sexta Casilla - ndice 5
No a

Ingresamos valores a algunas de las casillas de este arreglo:


5
3
a[1] = 5

a[2] = 3
1
a[4] = 1

Arreglos Bidimensionales (de dos dimensiones)


Para hacer uso de una de las casillas de este
Arreglo o Matriz se procede de la siguiente
forma:
a

Casillas de la Fila 0 Arreglo [fila][Columna]


No
Casillas de la Fila 1
Capturamos un
No
valor de a[1][2]
Casillas de la Fila 2
No
Casillas de la Fila 3 Para ingresar valores a estas casillas se
No procede de la siguiente forma:
Casillas de la Fila 4 a[1][2] = 5
No
Casillas de la Fila 5 a[2][3] = 3
No
Columna 0

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

Ejemplo 49: Algoritmo:

Realizar un algoritmo que use una sentencia repetitiva para ingresar valores en un arreglo
de n casillas de la serie, n ser ingresado por teclado.

Ejemplo:
1 1 2 3 5 8 . ..

m[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

Ejemplo 50: Algoritmo:

Realizar un algoritmo que use una sentencia repetitiva para ingresar Nombres en un arreglo
de n casillas, y visualizar los datos Ingresados, n ser ingresado por teclado.

Ej.:
Juan Ivan Marcos Lucia Maria Leslie . ..

INICIO

I=0 n-1

nom

a[ I ] = nom

I=0 n-1

a[ I ]

FIN

40
Programacin I Por Jos Rodolfo Queca

Ejemplo 51: Algoritmo:

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

Ejemplo 52: Algoritmo:

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

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 anlisis: En esta etapa el programador debe entender claramente el problema.


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

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 implementacin especfica: Consiste en traducir el algoritmo a un


lenguaje de programacin. (Codificar).

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


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

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

Lenguajes de 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

Estructura del Programa


Importacin de funciones, variables, constantes, etc.

Definicin de constantes y macros.

Definicin de nuevos tipos de datos.

Declaracin de variables globales.

Definicin de funciones.

int main(void)
{
Declaracin de variables propias del programa principal (o sea, locales a main).
Programa principal.
return 0;
}

O tambin se lo puede expresar esta estructura de la siguiente forma:

Importacin de funciones, variables, constantes, etc.

Definicin de constantes y macros.

Definicin de nuevos tipos de datos.

Declaracin de variables globales.

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 D=a+b+c; proceso

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 >;
}

D>0 While (D > 0)


{ Mientras ,
< Sentencias >;
}
Sentencias

do
{
Sentencias
< Sentencias >; Hacer Mientras

D>0 } While (D > 0) ;

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:

Aritmeticos Logicos Relacionales


Operador Descripcion Operador Descripcion Operador Descripcion
+ Suma && And == Igual a
- Resta || Or != Deferente a
* Multiplicacion ! Not > Mayor a
/ Division < Menor a
% Modulo >= Mayor Igual
<= Menor igual

Entorno Borland C++

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.

Lenguaje de uso J# (Java) 2005 Aplicacin de consola

Estructura del Programa


Una clase consiste en:

[Public] class nombre_de_la_clase [algo_ms]


{
<lista_de_atributos>
<lista_de_mtodos>
public static void main ( String args[] ) //Mtodo Principal
{
<Declaracin de Variables locales>
<Sentencias>
}

49
Programacin I Por Jos Rodolfo Queca

Codificacin al lenguaje Java:


TERMINAL {} INICIO / FIN

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 D=a+b+c; proceso

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

D System.out.println (D); Impresion en


Pantalla
Tiene D Bolivianos
System.out.println (Tiene + D + Bolivianos;

D>0 If (D > 0)
{
< Sentencias >;
}
Sentencias

f (D > 0) Si,
{
D>0 < Sentencias >
}
Else
{
Sentencias Sentencias < Sentencias >;
}

D>0 While (D > 0)


{ Mientras ,
< Sentencias >;
}
Sentencias

do
{
Sentencias
< Sentencias >; Hacer Mientras

D>0 } While (D > 0) ;

50
Programacin I Por Jos Rodolfo Queca

Ejemplo 57:
Realizar la codificacin en J# del siguiente diagrama de flujo

import java.io.*;
package Ejemplo1;

public class Program


{
public static void main(String[] args) throws IOException
INICIO
{
BufferedReader e;
int a,b,s;
a, b e= new BufferedReader(new InputStreamReader (System.in));
a = Integer.parseInt(entrada.readLine());
b = Integer.parseInt(entrada.readLine());
s ab
s=a+b;

s
System.out.println (s);

FIN }
}

Ejemplo 58:
Realizar la codificacin en J# del siguiente diagrama de flujo

import java.io.*;
package Ejemplo1;

public class Program


{
public static void main(String[] args) throws IOException
INICIO {
BufferedReader e;
int Nota;
e= new BufferedReader(new InputStreamReader (System.in));
Nota
Nota = Integer.parseInt(entrada.readLine());

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:

Aritmeticos Logicos Relacionales


Operador Descripcion Operador Descripcion Operador Descripcion
+ Suma && And == Igual a
- Resta || Or != Deferente a
* Multiplicacion ! Not > Mayor a
/ Division < Menor a
% Modulo >= Mayor Igual
<= Menor igual

Estructura del programa Java:

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).

Lenguaje de uso C# 2005 Aplicacin de consola

Estructura del Programa


using <tipos de datos de referencia>

namespace <nombre del ejemplo>


{
class Program
{
static void Main(string[] args)
{
<Declaracion de variables>
<Sentencias>
}
<Declaracion de otras funciones estaticas>
}
}

53
Programacin I Por Jos Rodolfo Queca

Codificacin al lenguaje C#:


TERMINAL {} INICIO / FIN

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 D=a+b+c; proceso

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 >;
}

D>0 While (D > 0)


{ Mientras ,
< Sentencias >;
}
Sentencias

do
{
Sentencias
< Sentencias >; Hacer Mientras

D>0 } While (D > 0) ;

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:

Aritmeticos Logicos Relacionales


Operador Descripcion Operador Descripcion Operador Descripcion
+ Suma && And == Igual a
- Resta || Or != Deferente a
* Multiplicacion ! Not > Mayor a
/ Division ^ Xor < Menor a
% Modulo >= Mayor Igual
<= Menor igual

Estructura del programa C#:

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.

Lenguaje de uso Visual Basic.Net 2005 Aplicacin de consola

Estructura del Programa


Module Module1 // Declara el nombre de un mdulo e introduce la definicin de las variables,
propiedades, eventos y procedimientos que incluye el mdulo.

<Declaracion de procedimientos y funciones>

Sub Main()

<Declaracion de variables locales>


<Sentencias>

End Sub

End Module

57
Programacin I Por Jos Rodolfo Queca

Codificacin al lenguaje Basic:


TERMINAL Sub Main()
End Sub INICIO / FIN

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

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

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

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

D>0 If D > 0 then

< Sentencias >


End if
Sentencias

If (D > 0) then Si,

D>0 < Sentencias >

Else

Sentencias Sentencias < Sentencias >


End if

D>0 While (D > 0)


Mientras ,
< Sentencias >
Wend
Sentencias

do
Sentencias
< Sentencias > Hacer Mientras

D>0 Loop While (D > 0)

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)

FIN End Sub

End Module

Ejemplo 62:
Realizar la codificacin en Visual Basic.Net el siguiente diagrama de flujo

Module Module1

INICIO Sub Main()


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

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

FIN End Sub

End Module

59
Programacin I Por Jos Rodolfo Queca

Operadores:

Aritmeticos Logicos Relacionales


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

Estructura del programa Visual Basic:

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

PHP fue concebido en otoo de 1994 por Rasmus Lerdof.

El lenguaje PHP es un lenguaje de programacin de estilo clsico, es decir, es un lenguaje


de programacin con variables, sentencias condicionales, ciclos (bucles), funciones. No es
un lenguaje de marcado como podra ser HTML, XML o WML. Est ms cercano a JavaScript o a C,
para aquellos que conocen estos lenguajes. Pero a diferencia de JavaScript que se ejecuta en
el navegador, PHP se ejecuta en el servidor, por eso nos permite acceder a los recursos que
tenga el servidor como por ejemplo podra ser una base de datos. El programa PHP es
ejecutado en el servidor y el resultado enviado al navegador. El resultado es normalmente
una pgina HTML pero igualmente podra ser una pgina WML. Al ser PHP un lenguaje que se
ejecuta en el servidor no es necesario que su navegador lo soporte, es independiente del
browser, pero sin embargo para que las pginas PHP funcionen, el servidor donde estn
alojadas debe soportar PHP.

Estructura del Programa

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 $D=$a+$b+$c; proceso

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);

D>0 If ($D > 0)


{
< Sentencias >;
}
Sentencias

f ($D > 0) Si,


{
D>0 < Sentencias >
}
Else
{
Sentencias Sentencias < Sentencias >;
}

D>0 While ($D > 0)


{ Mientras ,
< Sentencias >;
}
Sentencias

do
{
Sentencias
< Sentencias >; Hacer Mientras

D>0 } While ($D > 0) ;

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:

Aritmeticos Logicos Relacionales


Operador Descripcion Operador Descripcion Operador Descripcion
+ Suma && And == Igual a
- Resta || Or != Deferente a
* Multiplicacion ! Not > Mayor a
/ Division < Menor a
% Modulo >= Mayor Igual
<= Menor igual

64
Programacin I Por Jos Rodolfo Queca

Operaciones aritmticas
Operacin Sintaxis A B Resultado

Suma $a+$b 12 -7.3 4.7


Diferencia $a-$b 12 -7.3 19.3
Producto $a*$b 12 -7.3 -87.6
Cociente $a/$b 12 -7.3 -1.6438356164384
Cociente entero (int)($a/$b) 12 -7.3 -1
Resto de la divisin $a%$b 12 5 2
b
Potencias a pow($a,$b) 12 5 248832
b
Potencias a pow($a,$b) -7.3 -3 -0.0025705817483555
Raiz cuadrada Sqrt($a) 12 3.4641016151378
Raiz cuadrada Sqrt($a) -7.3 -1.#IND
Raiz ensima pow($a,(1/$b) 12 3; 2.2894284851067

Redondeos
tipo Sintaxis A Resultado

Parte entera (int)$a 12 12


Parte entera (int)$a -7.3 -7
Parte entera (int)$a -13.8546 -13
Parte entera (int)$a -24.5 -24
Parte entera (int)$a 13.8546 13
Parte entera (int)$a 24.5 24
Redondeo por defecto floor($a) 12 12
Redondeo por defecto floor($a) -7.3 -8
Redondeo por defecto floor($a) -13.8546 -14
Redondeo por defecto floor($a) -24.5 -25
Redondeo por defecto floor($a) 13.8546 13
Redondeo por defecto floor($a) 24.5 24
Redondeo por exceso ceil($a) 12 12
Redondeo por exceso ceil($a) -7.3 -7
Redondeo por exceso ceil($a) -13.8546 -13
Redondeo por exceso ceil($a) -24.5 -24
Redondeo por exceso ceil($a) 13.8546 14
Redondeo por exceso ceil($a) 24.5 25
Redondeo round($a) 12 12
Redondeo round($a) -7.3 -7
Redondeo round($a) -13.8546 -14
Redondeo round($a) -24.5 -25
Redondeo round($a) 13.8546 14
Redondeo round($a) 24.5 25

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

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

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

Segn sea la edad

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


Invierno Primavera Verano Otoo No es un
mes

FIN

67
Programacin I Por Jos Rodolfo Queca

* * * * * N = 5 Realice la codificacin en Java


Ejemplo 63: Codificacin: * * * *
* * *
INICIO * *
*
import java.io.*;
N public class Program
{
public static void main(String[] args) throws IOException
{
I=N 1 int n;
BufferedReader e=new BufferedReader (new InputStreamReader (System.in));
n=Integer.parseInt(e.readLine());
J=1I
for(int i=n;i>=1;i--)
* {
for(int j=1;j<=i;j++)
{
J
System.out.print("* ");
}
Salto d Lnea
System.out.println();
}
I }
}
FIN

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

* * * * * N = 5 Realice la codificacin en C++


Ejemplo 65: Codificacin: * * * *
* * *
INICIO * *
*
#include <iostream.h>
N #include <conio.h>
void main()
{
I=N 1
int n;
cin>>n;
J=1I for(int i=n;i>=1;i--)
{
* for(int j=1;j<=i;j++)
{
J cout<<"* ";
}
cout<<endl;
Salto d Lnea }
}
I

FIN

Ejemplo 66: Codificacin :

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

Lunes Martes Mircoles Jueves Viernes Sbado Domingo

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

C++: Codificacin en el lenguaje Turbo C


#include <iostream.h>
#include <conio.h>
void main()
{
int dia;
cin>>dia;
switch (dia)
{
case 1: cout<<"Lunes"; break;
case 2: cout<<"Martes"; break;
case 3: cout<<"Miercoles"; break;
case 4: cout<<"Jueves"; break;
case 5: cout<<"Viernes"; break;
case 6: cout<<"Sabado"; break;
case 7: cout<<"Domingo"; break;
default : cout<<"No es un dia de la semana"; break;
}
}
Ejemplo 67: Codificacin:

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.:

Juan Ivan Marcos Lucia Maria Leslie . ..

INICIO

I=0 n-1

nom

a[ I ] = nom

I=0 n-1

a[ I ]

FIN
71
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
{
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

C++: Codificacin en el lenguaje C++

#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;
}
}

C++: Otro ejemplo Similar en C++

#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

Ejemplo 68: Codificacin:


Desarrolle un algoritmo que permita determinar a partir de un nmero de das, ingresado por
pantalla, Cuntos aos, meses, semanas y das; constituyen el nmero de das proporcionado
utilizando la estructura Mientras o While.

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

Ejemplo 69: Codificacin:


El director de una escuela est organizando un viaje de estudios, y requiere determinar
cunto debe cobrar a cada alumno y cunto debe pagar a la compaa de viajes por el
servicio. La forma de cobrar es la siguiente: si son 100 alumnos o ms, el costo por cada
alumno es de $65.00; de 50 a 99 alumnos, el costo es de $70.00, de 30 a 49, de $95.00, y si
son menos de 30, el costo de la renta del autobs es de $4000.00, sin importar el nmero de
alumnos.
Realice un algoritmo que permita determinar el pago a la compaa de autobuses y lo que
debe pagar cada alumno por el viaje (represente en pseudocdigo, diagrama de flujo y
diagrama N/S la solucin).
Al realizar un anlisis del problema, se puede deducir que las variables que se requieren
como datos son el nmero de alumnos (NA), con lo que se puede calcular el pago por alumno
(PA) y el costo total del viaje (TOT).

NA Nmero de alumnos que realizaran el viaje (Entero)


PA Pago por alumno (Real)
Tot Total que va a pagar a la empresa por el viaje (Real)

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 PAG = (TI 5)*0.8 + 5


TI <= 10

PAG = (TI 8)*0.7 + 7.4 PAG = (TI 8)*0.7 + 7.4

No Si
DI = DOM

No Si IM = PAG * 0.05
TU =M

IM = PAG * 0.10 IM = PAG * 0.15

TOT = PAG + IM

PAG, IM, TOT

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

TI Tipo autobs String


KM Kilmetros por recorrer Entero
NPR Nmero de personas Entero
real
CK Costo por kilmetro Real
NP Nmero de personas Entero
para presupuestar
CP Costo por persona Real
TO Costo total del viaje Real

INICIO

TI, KM, NPR

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>

float logaritmo (float x, int b)


{
float logbase, resultado;
logbase = log10(b);
resultado = log10(x)/logbase;
return resultado;
}

void main (void)


{
float y;
y = logaritmo(128.0, 2);
cout<<y;
getch();
}

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

Function Lee() As String


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

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

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

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

Interfaces de ventana. Formularios y Controles


Es un hecho palpable el que la programacin para
Internet, ha ganado en los ltimos tiempos una
importante cuota de desarrollo, en decadencia de las
aplicaciones basadas en Windows. Sin embargo,
todava existe un importante conjunto de programas
que debern seguir funcionando en Windows y que
tendrn que migrarse a la plataforma .NET.

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

Control
Label (Etiqueta)

Mostrar un texto descriptivo que el usuario no puede


modificar. El texto se especifica en la propiedad
Text

Control
TextBox (Cuadro de texto)

Mostrar un texto que puede ser editado. La principal


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

Control
CommandButton (Botn)

Comenzar o terminar un proceso. Cuando el usuario pulsa este botn, se produce el evento
Click.

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


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

Control
CheckBox (Casilla de activacin)

Seleccionar una opcin (no excluyente) de entre un conjunto de opciones. Su principal


propiedad es .Checked, que indica si est seleccionada (= true) o no (= false).

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

Botn de comando (Command Button)

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.

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

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

Ejemplo 2: Cambia el texto en el botn.

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

Cambia Ejecutar a Suma

Realizamos una pequea aclaracin: get obtiene


setcambia o muestra

Botones de seleccin (Radio Button)

84
Programacin I Por Jos Rodolfo Queca

Los controles RadioButton de formularios Windows Forms presentan al usuario un conjunto de


dos o ms opciones excluyentes entre s. Aunque puede parecer que los botones de opcin y
las casillas de verificacin funcionan de forma parecida, existe una diferencia importante:
cuando un usuario selecciona un botn de opcin, no puede seleccionar ninguno de los otros
botones de opcin del mismo grupo sin perder la seleccin de este botn. En cambio, es
posible activar tantas casillas de verificacin como se desee. Al definir un grupo de
botones de opcin, se indica al usuario que "tiene este conjunto de opciones entre las que
puede elegir una y solamente una".

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


se llama al controlador de eventos Click. El evento CheckedChanged se produce cuando cambia
el valor de la propiedad Checked. Si la propiedad AutoCheck se establece en true (la opcin
predeterminada), al seleccionar el botn de opcin se desactivarn automticamente los dems
botones de opcin del grupo. Normalmente, esta propiedad slo se establece en false cuando
se utiliza cdigo de validacin para comprobar que el botn de opcin seleccionado
corresponde a una opcin vlida. El texto que se muestra dentro del control se establece con
la propiedad Text, que puede contener teclas de acceso directo. Una tecla de acceso permite
al usuario "hacer clic" en el otro control si presiona simultneamente la tecla ALT y la
tecla de acceso.

Name= radioButton1 // nombre del botn de seleccin

Ejemplo 1: Determina si se seleccion el botn.

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

Botones de seleccin (CheckBox Button)

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.

El control CheckBox tiene dos propiedades importantes: Checked y CheckState. La propiedad


Checked devuelve true o false. La propiedad CheckState devuelve Checked o Unchecked; o bien,
si la propiedad ThreeState se establece en true, CheckState tambin puede devolver

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.

Name= checkBox1 // nombre del botn de seleccin

Ejemplo 1: Determina si se selecciono el boton.


boolean v=checkBox1.getChecked();

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

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.

Cajas de texto (Text Box)

Los cuadros de texto de formularios Windows Forms se utilizan para obtener entradas del
usuario o para mostrar texto. El control TextBox se utiliza generalmente para el texto que
se puede editar, aunque 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.

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


predeterminada, en un cuadro de texto se puede escribir 2048 caracteres como mximo. Si
establece la propiedad Multiline en true, podr escribir un mximo de 32 KB de texto. La
propiedad Text puede establecerse en tiempo de diseo con la ventana Propiedades, en tiempo
de ejecucin mediante cdigo o por medio de la introduccin de datos por el usuario en
tiempo de ejecucin. El contenido actual de un cuadro de texto puede recuperarse en tiempo
de ejecucin mediante la lectura de la propiedad Text.

86
Programacin I Por Jos Rodolfo Queca

A continuacin algunos ejemplos de uso de las propiedades de la caja de texto:

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

Ejemplo 1: Obtiene el texto de la caja de texto y convertirlo en tipo de dato Entero o Real
(Double Float).

C# Basic.net Java#

String s; Dim s As String String s;


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

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();

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

C# Basic.net Java#

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

Listas (List Box)

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.

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


seleccionado en el cuadro de lista. Para cambiar mediante programacin el elemento
seleccionado, cambie el valor de SelectedIndex en el cdigo; el elemento correspondiente de
la lista aparecer resaltado en el formulario Windows Forms. Si no hay ningn elemento
seleccionado, el valor de SelectedIndex es -1. Si est seleccionado el primer elemento de la
lista, el valor de SelectedIndex es 0. Cuando hay varios elementos seleccionados, el valor
de SelectedIndex refleja el elemento seleccionado que aparece en primer lugar en la lista.
La propiedad SelectedItem es similar a SelectedIndex, pero devuelve el elemento en s,
habitualmente un valor de cadena. La propiedad Count refleja el nmero de elementos de la
lista. El valor de la propiedad Count es siempre una unidad ms que el mximo valor posible
para SelectedIndex, ya que SelectedIndex est basada en cero.

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

Cajas combinadas (ComboBox)

El control ComboBox de los formularios Windows Forms se utiliza para mostrar datos en un
cuadro combinado desplegable. De forma predeterminada, el control ComboBox aparece en dos
partes: la parte superior es un cuadro de texto que permite al usuario escribir un elemento
de la lista. La segunda parte es un cuadro de lista que muestra una lista de elementos, de
los cuales el usuario puede seleccionar uno.

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


en la lista. Para cambiar mediante programacin el elemento seleccionado, cambie el valor de
SelectedIndex en el cdigo; el elemento correspondiente de la lista aparecer en la parte de
cuadro de texto del cuadro combinado. Si no se selecciona ningn elemento, el valor de
SelectedIndex es -1. Si se selecciona el primer elemento de la lista, el valor de
SelectedIndex es 0. La propiedad SelectedItem es similar a SelectedIndex, pero devuelve el
elemento en s, normalmente un valor de cadena. La propiedad Count refleja el nmero de
elementos de la lista. El valor de la propiedad Count es siempre una unidad ms que el
mximo valor posible para SelectedIndex, ya que SelectedIndex est basada en cero.

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.

Ejemplos del control ComboBox, ListBox de formularios Windows Forms

Ejemplo 1: Agregue la cadena u objeto a la lista mediante el mtodo Add.

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

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

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

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

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

88
Programacin I Por Jos Rodolfo Queca

Formularios Web con HTML y PHP


Existen dos formas bsicas de interactuar con una pgina web, hacer clic sobre un enlace o
enviar datos en un formulario.

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).

Elemento <form> de un formulario HTML


Para crear un formulario basta insertar etiquetas <form> de apertura y cierre en tu pgina
WEB. Todos los controles (campos de texto, casillas de verificacin, botones de opcin o
botn de enviar) que aadas entre las etiquetas <form> y </form> formarn parte del
formulario que se enva al servidor WEB.

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.

Por supuesto, esta pgina debe existir en el servidor Web.

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 formularios HTML (controles)


Varios son los controles que puedes utilizar para pedir informacin en un formulario. Para
todos los ejemplos necesitaremos dos pginas Web. La primera es un formulario donde el
usuario introduce la informacin solicitada en campos y la segunda recupera los valores del
formulario para tratarlos posteriormente.

Comenzaremos con los controles de formulario HTML ms comunes:

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.

<input type=text name=direccion_de_trabajo>


En este ejemplo solicitamos la direccin de trabajo al usuario. Estos campos de texto
aceptan frases de texto completas, lo que les hace muy interesantes para preguntas abiertas.

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.

<input type=submit value=Envialo YA>

Este botn se mostrara como se ve a continuacin:

Ejemplo Formularios:

90
Programacin I Por Jos Rodolfo Queca

PROGRAMACIN I

91
Programacin I Por Jos Rodolfo Queca

REPASO: Para Reforzar la codificacin en los lenguajes Java y C#

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;

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


area = Math.Sqrt(p * (p - a) * (p - b) * (p - c));

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();

area p * ( p a)( p b)( p c) p = (a + b + c) / 2;

area = Math.sqrt(p * (p - a) * (p - b) * (p - c));


rea
System.out.print ("El Area es:" + area);

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());

if (Nota < 51)


Aprob Reprob Console.Write("REPROBO");
else
Console.Write("APROBO");

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));

Nota Double x = Double.valueOf(e.readLine());


Nota = x.doubleValue();

Sino Si if (Nota < 51)


Nota < 51 System.out.print("REPROBO");
else
Aprob Reprob
System.out.print("APROBO");

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

REVISION DE CONCEPTOS FUNDAMENTALES DE PROGRAMACION

Teorema de Bohm y Jacopini

Teorema de Bohm-jacopini El principio de todo aquello, que culmin con la programacin


estructurada que nos ha llegado hasta hoy empez con la publicacin en 1966 del conocido
como teorema de la estructura o de Bhm-Jacopini en honor de Corrado Bhm y Giuseppe
Jacopini. Bsicamente, este teorema nos dice que: "Todo algoritmo propio puede ser expresado
en trminos de slo tres tipos de estructura: secuencial, condicional y repetitiva. Un
algoritmo propio

Tiene un nico punto de entrada y un nico punto de salida.


Todas las sentencias son alcanzables, es decir, no contiene cdigo muerto, que no se
ejecutar nunca.
No hay bucles infinitos. Todos los bucles terminan en un nmero finito de pasos.
No hay ambigedades: cada sentencia tiene una nica interpretacin.
Todos los posibles caminos llevan desde el punto de entrada al de salida.
El algoritmo acaba tras un nmero finito de pasos.
El algoritmo debe producir al menos una salida o un efecto.

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:

Secuencial: Un bloque de sentencias que se ejecutan una tras otra. Ejemplo... el


bloque {...} de C y Java, o el bloque begin...end de Pascal y Delphi.
Condicional: Un bloque de sentencias que se ejecutan slo si se cumple una
condicin: el if-else y el switch.
Repetitiva: Un bloque que se ejecute varias veces en funcin de una condicin:
bucles, como while, do-while, repeat-until, for y foreach.

Estructura de Datos Arreglos y Cadenas

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.

Una estructura de datos define la organizacin e inter-relacionamiento de estos, y un


conjunto de operaciones que se pueden realizar sobre l. Las operaciones bsicas son:

Alta, adicionar un nuevo valor a la estructura.


Baja, borrar un valor de la estructura.
Bsqueda, encontrar un determinado valor en la estructura para realizar una
operacin con este valor, en forma SECUENCIAL o BINARIO (siempre y cuando los datos
estn ordenados)...

Otras operaciones que se pueden realizar son:

Ordenamiento, de los elementos pertenecientes a la estructura.


Combinacin, dadas dos estructuras, originar una nueva ordenada y que contenga a las
Combinadas.

Las estructuras de datos pueden ser de dos tipos:

Estructuras de datos estticas (las que tienen un tamao definido).

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

Listas por saltos (Skip lists)


Pilas (stack)
Colas (queue)
Colas de Prioridad
rboles
rboles Binarios
rbol binario de bsqueda
rbol binario de bsqueda autoajustable
rboles Rojo-Negro
rboles AVL

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();

System.out.print("Ingrese el segundo numero Real: ");


d = Double.valueOf(entrada.readLine());
y = d.doubleValue();

System.out.print("Ingrese el tercer numero Real: ");


d = Double.valueOf(entrada.readLine());
z = d.doubleValue();
double mayor;
if (x > y)
if (x > z)
mayor = x;
else
mayor = z;
else
if (y > z)
mayor = y;
else
mayor = z;
System.out.println(" El mayor de los valores de " + x + " , " + y + " y " + z + " es: " + mayor);
entrada.readLine();
}
}

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());

Console.Write ("Ingrese el segundo numero Real: ");


y = double.Parse(Console.ReadLine());

Console.Write ("Ingrese el tercer numero Real: ");


z = double.Parse(Console.ReadLine());
double mayor;
if (x > y)
if (x > z)
mayor = x;
else
mayor = z;
else
if (y > z)
mayor = y;
else
mayor = z;
Console.WriteLine (" El mayor de los valores de " + x + " , " + y + " y " + z + " es: " + mayor);
Console.Read();
}
}
}
101
Programacin I Por Jos Rodolfo Queca

Ejemplos Turbo C++


Ejemplo 76: 1
12
Genere la siguiente serie: 123 n=5
1234
#include <iostream.h>
#include <string.h> 12345
#include <ctype.h>
void main(void)
{
int n;
cout << "Ingrese un Valor Entero: " << endl;
cin >>n;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= i; j++)
cout << j;
}
cout << \n;
getch();
}

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[] sNombres; char *sNombres[4]; String[] sNombres;


sNombres=new string [4]; sNombres = new String[4];

sNombres[0] = "Ana"; sNombres[0] = "Ana"; sNombres[0] = "Ana";


sNombres[1] = "Pedro"; sNombres[1] = "Pedro"; sNombres[1] = "Pedro";
sNombres[2] = "Antonio"; sNombres[2] = "Antonio"; sNombres[2] = "Antonio";
sNombres[3] = "Laura"; sNombres[3] = "Laura"; sNombres[3] = "Laura";

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 };

class Program import java.io.*;


{ #include <iostream.h> public class Program
static void Main(string[] args) #define MAX_VERT 3 {
{ public static void main(String[] args)
int i, j; void main(void) {
int MAX_VERT = 3; { int i, j;
char [,]grafo; int i, j; int MAX_VERT = 3;
grafo = new char[MAX_VERT,MAX_VERT]; char grafo[MAX_VERT][MAX_VERT]; char grafo[][];
char []visitado; char visitado[MAX_VERT]; grafo=new char[MAX_VERT][MAX_VERT];
visitado=new char[MAX_VERT]; for(i = 0;i<3;i++) char visitado[];
for(i = 0;i<3;i++) { visitado=new char[MAX_VERT];
{ visitado[i] = 'J'; for(i = 0;i<3;i++)
visitado[i] = 'J'; for(j = 0;j<3;j++) {
for(j = 0;j<3;j++) grafo[i][j] = 'A'; visitado[i] = 'J';
grafo[i,j] = 'A'; } for(j = 0;j<3;j++)
} char s; grafo[i][j] = 'A';
char s; for(i = 0;i<3;i++) }
for(i = 0;i<3;i++) { char s;
{ for (j = 0; j < 3; j++) for(i = 0;i<3;i++)
for (j = 0; j < 3; j++) { {
{ s = grafo[i][j]; for (j = 0; j < 3; j++)
s = grafo[i,j]; cout<<s<<" "; {
Console.Write(s + " "); } s = grafo[i][j];
} cout<<endl; System.out.print(s + " ");
Console.WriteLine(); } }
} } System.out.println();
} }
} }
}

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

PHP Archivo: Index.php


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>SUMA Y RESTA DE MATRICES 3X3</title>
</head>
<body bgcolor="#000000" text="#ffff00" topmargin=50 link="#FF0000" vlink="#ffffff" alink="#FF9900">
<center>
<form action="Resultado.php" method="POST">
<table border=2>
<tr align="center">
<td colspan=7> SUMA Y RESTA DE MATRICES 3X3</td>
</tr>
<tr align="center">
<td colspan=3>Matriz A</td>
<td rowspan=4>+ y -</td>
<td colspan=3>Matriz B</td>
</tr>
<tr align="center">
<td><input type="text" name="a11" size=3></td>
<td><input type="text" name="a12" size=3></td>
<td><input type="text" name="a13" size=3></td>
<td><input type="text" name="b11" size=3></td>
<td><input type="text" name="b12" size=3></td>
<td><input type="text" name="b13" size=3></td>
</tr>
<tr align="center">
<td><input type="text" name="a21" size=3></td>
<td><input type="text" name="a22" size=3></td>
<td><input type="text" name="a23" size=3></td>
<td><input type="text" name="b21" size=3></td>
<td><input type="text" name="b22" size=3></td>
<td><input type="text" name="b23" size=3></td>
</tr>
<tr align="center">
<td><input type="text" name="a31" size=3></td>
<td><input type="text" name="a32" size=3></td>
<td><input type="text" name="a33" size=3></td>
<td><input type="text" name="b31" size=3></td>
<td><input type="text" name="b32" size=3></td>
<td><input type="text" name="b33" size=3></td>
</tr>
<tr align=center>
<td colspan=7>
<input type="submit" name="cal" value="Calcular">
</td>
</tr>
</table>
</form>
</center>
</body>
</html>

105
Programacin I Por Jos Rodolfo Queca

PHP Archivo: Resultado.php


<head>
<title>SUMA Y RESTA DE MATRICES 3X3</title>
</head>
<body bgcolor="#000000" text="#ffff00" topmargin=50 link="#FF0000" vlink="#ffffff"
alink="#FF9900">
<center>
<table border=2>
<tr align="center">
<td colspan=15>SUMA Y RESTA DE MATRICES 3X3</td>
</tr>
<tr align="center">
<td colspan=3>Matriz A</td>
<td rowspan=4></td>
<td colspan=3>Matriz B</td>
<td rowspan=4></td>
<td colspan=3>Suma</td>
<td rowspan=4></td>
<td colspan=3>Resta</td>
</tr>
<?php
$MA11=$_POST['a11'];
$MA12=$_POST['a12'];
$MA13=$_POST['a13'];
$MA21=$_POST['a21'];
$MA22=$_POST['a22'];
$MA23=$_POST['a23'];
$MA31=$_POST['a31'];
$MA32=$_POST['a32'];
$MA33=$_POST['a33'];
$MB11=$_POST['b11'];
$MB12=$_POST['b12'];
$MB13=$_POST['b13'];
$MB21=$_POST['b21'];
$MB22=$_POST['b22'];
$MB23=$_POST['b23'];
$MB31=$_POST['b31'];
$MB32=$_POST['b32'];
$MB33=$_POST['b33'];
echo "<tr align=center>";
echo "<td>".$MA11."</td>";
echo "<td>".$MA12."</td>";
echo "<td>".$MA13."</td>";
echo "<td>".$MB11."</td>";
echo "<td>".$MB12."</td>";
echo "<td>".$MB13."</td>";
$S11=$MA11+$MB11;
echo "<td>".$S11."</td>";
$S12=$MA12+$MB12;
echo "<td>".$S12."</td>";
$S13=$MA13+$MB13;
echo "<td>".$S13."</td>";
$R11=$MA11-$MB11;
echo "<td>".$R11."</td>";
$R12=$MA12-$MB12;
echo "<td>".$R12."</td>";
$R13=$MA13-$MB13;
echo "<td>".$R13."</td>";
echo "</tr>";
echo "<tr align=center>";
echo "<td>".$MA21."</td>";
echo "<td>".$MA22."</td>";
echo "<td>".$MA23."</td>";
echo "<td>".$MB21."</td>";
echo "<td>".$MB22."</td>";
echo "<td>".$MB23."</td>";
$S21=$MA21+$MB21;
echo "<td>".$S21."</td>";
$S22=$MA22+$MB22;
echo "<td>".$S22."</td>";
$S23=$MA23+$MB23;
echo "<td>".$S23."</td>";
$R21=$MA21-$MB21;
echo "<td>".$R21."</td>";
$R22=$MA22-$MB22;
echo "<td>".$R22."</td>";
$R23=$MA23-$MB23;
echo "<td>".$R23."</td>";
echo "</tr>";
echo "<tr align=center>";
echo "<td>".$MA31."</td>";
echo "<td>".$MA32."</td>";
echo "<td>".$MA33."</td>";
echo "<td>".$MB31."</td>";
echo "<td>".$MB32."</td>";
echo "<td>".$MB33."</td>";
$S31=$MA31+$MB31;
echo "<td>".$S31."</td>";
$S32=$MA32+$MB32;
echo "<td>".$S32."</td>";
$S33=$MA33+$MB33;
echo "<td>".$S33."</td>";
$R31=$MA31-$MB31;
echo "<td>".$R31."</td>";
$R32=$MA32-$MB32;
echo "<td>".$R32."</td>";
$R33=$MA33-$MB33;
echo "<td>".$R33."</td>";
echo "</tr>";
?>
</table>
<a href="index.php">Regresar</a> 106
</center>
</body>
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";

/* Escritura de la matriz ampliada */


cout<<"\n\n";
cout<<" |";
for (j=0;j<=3;j++) cout<<"\t"<<a[0][j];
cout<<"\n";
cout<<" |";
for (j=0;j<=3;j++) cout<<"\t"<<a[1][j];
cout<<"\n";
cout<<" |";
for (j=0;j<=3;j++) cout<<"\t"<<a[2][j];
cout<<"\n";

/* Mtodo de GAUSS: hemos de conseguir una matriz


triangular superior. */
for (i=0;i<=2;i++)
{
b=a[i][i];
// Observa que estoy suponiendo a[i][i] distinto de 0

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;

/* Escribe la matriz resultante, Observa que es


triangular superior. */
cout<<"\n\n";
cout<<" |";
for (j=0;j<=3;j++) cout<<"\t"<<a[0][j];
cout<<"\n";
cout<<" |";
for (j=0;j<=3;j++) cout<<"\t"<<a[1][j];
cout<<"\n";
cout<<" |";
for (j=0;j<=3;j++) cout<<"\t"<<a[2][j];
cout<<"\n";

cout<<"\n\nX1= "<<x[0]<<" X2= "<<x[1]<<" X3= "<<x[2];


}

108
Programacin I Por Jos Rodolfo Queca

ENTORNO DE LENGUAJE DE PROGRAMACIN DE ALTO NIVEL


PROGRAMACIN MODULAR
Metodologa de la programacin

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.

La dificultad de la etapa del mantenimiento en el ciclo de vida de un proyecto surge


a la hora de modificar y verificar el programa elaborado durante las anteriores
etapas. Pero esto todava se incrementa ms cuando la tcnica utilizada en la
programacin es la convencional.

La tcnica utilizada era la formacin de bucles y rutinas entremezcladas que se


llamaban unas a otras y conseguan el correcto funcionamiento a costa del consumo de
recursos, la escasez musicaletc

La programacin convencional lleva consigo poca claridad y como consecuencia falta


de fiabilidad, sobre todo cuando el algoritmo planteado es grande o complejo y,
adems, con esta tcnica es difcil saber dnde ocurri un error.

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:

a) Un diseo descendente del programa,


b) Unas estructuras de control limitadas y
c) Un mbito limitado de las estructuras de datos del programa.

Hace ms fcil la escritura y verificacin de programas. Se adapta perfectamente al


diseo descendente.
Para realizar un programa estructurado existen tres tipos bsicos de estructuras de
control:

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.

En programacin modular el programa se divide en mdulos (partes


independientes), cada una de las cuales ejecuta una nica funcin o actividad
y se codifican independientemente de otros mdulos.

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.

En este tema se presentan las herramientas de programacin que permiten resolver


problemas complejos mediante su descomposicin en otros ms simples.

Subprogramas Funciones y Procedimientos


Los subprogramas (procedimientos y funciones) constituyen una unidad de
ejecucin mayor que el bloque. Proporcionan abstraccin operacional al
programador y constituyen una unidad fundamental en la construccin de
programas.

Los subprogramas pueden ser vistos como un mini programa encargado de resolver
algortmicamente un sub-problema que se encuentra englobado dentro de otro
mayor.

Los subprogramas es la divisin de todo un programa completo en subprogramas.


(Divide y vencers)

Funciones de libreria (C# y Java#)


Proporciona constantes y mtodos (funciones y procedimientos) estticos para
operaciones trigonomtricas, logartmicas y otras funciones matemticas comunes.

Las siguientes tablas recogen los miembros expuestos por el tipo Math.

110
Programacin I Por Jos Rodolfo Queca

Nombre Descripcin

E Representa la base logartmica natural, especificada por la


constante, e.

PI Representa la relacin entre la longitud de la circunferencia de


un crculo y su dimetro, especificada por la constante .

Nombre Descripcin

Abs Sobrecargado. Devuelve el valor absoluto de un nmero


especificado.

Acos Devuelve el ngulo cuyo coseno es el nmero


especificado.

Asin Devuelve el ngulo cuyo seno es el nmero


especificado.

Atan Devuelve el ngulo cuya tangente corresponde al nmero


especificado.

Atan2 Devuelve el ngulo cuya tangente es el cociente de dos


nmeros especificados.

BigMul Calcula el producto completo de dos nmeros de 32


bits.

Ceiling Sobrecargado. Devuelve el nmero entero ms pequeo


mayor o igual que el nmero especificado.

Cos Devuelve el coseno del ngulo especificado.

Cosh Devuelve el coseno hiperblico del ngulo


especificado.

DivRem Sobrecargado. Calcula el cociente de dos nmeros y


devuelve tambin el resto de la divisin como
parmetro de salida.

Equals Sobrecargado. Determina si dos instancias de Object


son iguales. (Se hereda de Object).

Exp Devuelve e elevado a la potencia especificada.

Floor Sobrecargado. Devuelve el nmero entero ms grande


menor o igual que el nmero especificado.

GetHashCode Sirve como funcin hash para un tipo concreto.


GetHashCode es apropiado para su utilizacin en
algoritmos de hash y en estructuras de datos como las
tablas hash. (Se hereda de Object).

GetType Obtiene el objeto Type de la instancia actual. (Se


hereda de Object).

IEEERemainder Devuelve el resto de la divisin de dos nmeros


especificados.

Log Sobrecargado. Devuelve el logaritmo de un nmero


especificado.

Log10 Devuelve el logaritmo en base 10 de un nmero


especificado.

111
Programacin I Por Jos Rodolfo Queca

Max Sobrecargado. Devuelve el mayor de dos nmeros


especificados.

Min Sobrecargado. Devuelve el menor de dos nmeros.

Pow Devuelve un nmero especificado elevado a la potencia


especificada.

ReferenceEquals Determina si las instancias de Object especificadas


son la misma instancia. (Se hereda de Object).

Round Sobrecargado. Redondea un valor al entero ms prximo


o al nmero especificado de posiciones decimales.

Sign Sobrecargado. Devuelve un valor que indica el signo de


un nmero.

Sin Devuelve el seno del ngulo especificado.

Sinh Devuelve el seno hiperblico del ngulo especificado.

Sqrt Devuelve la raz cuadrada de un nmero especificado.

Tan Devuelve la tangente del ngulo especificado.

Tanh Devuelve la tangente hiperblica del ngulo


especificado.

ToString Devuelve una clase String que representa la clase


Object actual. (Se hereda de Object).

Truncate Sobrecargado. Calcula la parte entera de un nmero.

Ejemplos: Funciones de Librera:

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();
}
}

Ejemplos 81: Funciones de Librera:

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();
}
}

Ejemplos: Funciones de Librera:

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();
}
}
}

Ejemplos: Funciones de Librera:

Realizar un programa para encontrar el mayor de dos nmeros a y b. A y b pueden ser


ingresados por teclado
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
double R, a,b;
a = 4;
b = 67;
R = Math.Max(a,b);
Console.Write("El mayor de estos numeros es:"+R);
Console.Read();
}
}
}

Ejemplos: Funciones de Librera:


Realizar un programa para encontrar el valor absoluto de un numero x, x puede ser
ingresado por teclado

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 y Procedimientos Diseados por el Programador


Funciones y procedimientos (Mtodos)
Dependiendo de su utilizacin (llamada) podemos distinguir dos casos:

Funciones:
Encargados de realizar un clculo computacional y generar un resultado (normalmente
calculado en funcin de los datos recibidos) utilizable directamente:

Para el Lenguajes C++ Java C# (Mtodos)

tipo_de_retorno identificador ( por parmetros )


{
cuerpo_de_la_funcin
return Valor
}

Para el Lenguaje Visual Basic (Mtodo)

Function Identificador ( por parmetros ) As tipo_de_retorno

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:

Para el Lenguajes C++ , Java, C# (Mtodos)

void identificador ( por parmetros )


{
cuerpo_del_Procedimiento
}

Para el Lenguaje Visual Basic (Mtodo)

Sub Identificador ( por parmetros )

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:

tipo_de_retorno identificador( parmetros)


{
cuerpo_de_la_funcin
}

El cuerpo de la funcin puede contener declaraciones de variables locales (tpicamente en


sus primeras lneas).
Aqu tienes un ejemplo de definicin de funcin: una funcin que calcula el logaritmo en
base b (para b entero) de un nmero x. La hemos definido de un modo menos compacto de lo que
podemos hacer para ilustrar los diferentes elementos que puedes encontrar en una funcin:

float logaritmo (float x, int b)


{
float logbase, resultado;

logbase = log10(b);
resultado = log10(x)/logbase;
return resultado;
}

Detengmonos a analizar brevemente cada uno de los componentes de la definicin de una


funcin e identifiqumoslos en el ejemplo:

El tipo_de_retorno indica de qu tipo de datos es el valor devuelto por la funcin como


resultado (ms adelante veremos cmo definir procedimientos, es decir, funciones sin valor
de retorno). Cada funcin devuelve valores de un nico tipo. No podemos definir una funcin
que, segn convenga, devuelva un entero, un flotante o una cadena.

115
Programacin I Por Jos Rodolfo Queca

Ejemplos 82: Funciones:

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

Ejemplos 83: Funciones:


Programa que Obtenga el COSENO de un ngulo; ngulo ingresado por teclado. Tome en cuenta
que las computadoras trabajan en RADIANES.
Java#
import java.io.*;
public class Program
{
public static void main(String[] args)throws IOException
{
double R, x, y;
x = 60;
R = Math.cos(grados(x));
System.out.print ("El cos de " + x + " es " + R);
System.in.read();
}
static double grados(double x)
{
double z;
z = x * Math.PI / 180;
return z;
}
}
C# -----------------------------------------------------------
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
double R, x,y;
x = 60;
R = Math.Cos(grados(x));
Console.Write("El cos de "+x+" es "+R);
Console.Read();
}
static double grados(double x)
{
double z;
z = x * Math.PI / 180; ;
return z;

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.

Ejemplo 84: Procedimientos: SIN PARAMETROS

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

Ejemplo 85: Procedimientos:


Realizar un programa que use mtodos (procedimientos), mtodo que imprima en
pantalla SI ES MAYOR DE EDAD O ES MENOR DE EDAD.
JAVA#:
import java.io.*;
public class Program
{
public static void main(String[] args) throws IOException
{
int edad;
BufferedReader e = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Ingresa tu Edad:");
edad = Integer.parseInt(e.readLine());
CalculO(edad);
System.in.read();
}
static void CalculO(int ed)
{
if (ed<18)
System.out.println("Tienes "+ed+" aos eres MENOR DE EDAD");
else
System.out.println("Tienes " + ed + " aos eres MAYOR DE EDAD");
}
}
C#:
using System;
using System.Collections.Generic;
using System.Text;

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

Ejemplo 86: Procedimientos:


Realizar un programa que use procedimientos (mtodos en POO), mtodo que imprima en pantalla
asteriscos, dado n ingresado por teclado.

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);
}
}
}

Ejemplos Turbo C++


Ejemplo 92:
Realizar un programa que use mtodos, mtodo que imprima en pantalla un
saludo.

#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>

int cuenta(char nom[25]);

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;
}

int cuenta(char nom[25])


{
int i;
i=0;
while(nom[i] != '\0') i++;
return i;
}

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;
}

int MCD(int x,int y)


{
int aux;
int resto;
if(x<y)
{
aux=x;
x=y;
y=aux;
}
if((x % y) == 0) resto=y;
while ((x % y) != 0)
{
resto=x-y*(x/y);
x=y;
y=resto;
}
return resto;
}

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>

float hex_dec(char cadena[]);

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;
}

float hex_dec(char cadena[])


{
int i,j;
char letra;
float decimal=0;
float temp;
temp=0;
i=strlen(cadena);
/* La funcin "strlen", que se encuentra en <string.h> devuelve la longitud de la cadena. */

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>

char *copia(char *cad1,char *cad2);

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();
}

char *copia(char *cad1, char *cad2)


{
char *inicio;
int i;
inicio=cad2;
while(*cad2!='\0')
cad2++;
while(*cad1!='\0')
{
*cad2=*cad1;
cad2++;
cad1++;
}
*cad2='\0';
cad2=inicio;
}

131
Programacin I Por Jos Rodolfo Queca

Ejemplos: PROCEDIMIENTOS Y FUNCIONES


Realizar desde un Diagrama de flujo La codificacin en Java y Luego Convertirlo en un
Programa con Funciones y Procedimientos

CODIFICACIN SIN MODULOS


INICIO import java.io.*;
public class Program
{
N public static void main(String[] args)throws ..
{
BufferedReader e = new Buffered..
System.out.print("n=");
I=N 1 int n = Integer.parseInt(e.readLine());
for (int i = n; i >= 1; i--)
{
J=1I for (int j = 1; j <= i; j++)
{
System.out.print("* ");
}
* System.out.println();
}
System.in.read();
}
J }

Salto d Lnea

CODIFICACIN CON MODULOS(Funciones y Procedimientos)


I
import java.io.*;
public class Program
FIN {
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();
}
}
}

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.

La tcnica consiste en hacer varias revisiones al arreglo. En cada iteracin se


comparan parejas sucesivas de elementos. Si una pareja est en orden creciente (o
los valores son idnticos) se dejan los valores como estn. Si una pareja est en
orden decreciente, sus valores se intercambian en el arreglo [1],[3],[4].

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]);
}

for (i = 1; i <= v.Length; i++)


{
for (j = 0;j<v.Length - i; j++)
if (v[j+1]<v[j])
{
aux=v[j];
v[j]=v[j+1];
v[j+1]=aux;
}
}
Console.WriteLine("\nVector Ordenado");
for (i = 0; i <= v.Length - 1; i++)
{
Console.Write(" " + v[i]);
}
Console.Read();
}
}
}

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]

o El elemento con subndice 0 se considera ordenado.


o Se revisan los elementos desde subndice 1 hasta n-1.
o Para cada elemento con subndice i, la sub-lista 0 hasta i-1 est ordenada.
o Se realiza una bsqueda lineal de su lugar correcto y se mueven los datos
necesarios para colocar al elemento en su posicin.

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.

Se basa en seleccionar la posicin del elemento ms pequeo de la lista y su


colocacin en la posicin que le corresponde.

Como primer paso se encuentra el elemento menor de la lista y se intercambia con el


elemento de subndice 0. Despus se busca el elemento menor en la sublista formada
desde el elemento en el subndice 1 hasta el elemento de subndice n-1 y se
intercambia con el elemento de subndice 1. El proceso contina sucesivamente
durante n-1 pasadas [1],[2],[3],[4].

Ejemplo: Ordenar ascendentemente la lista 11, 9, 17, 5, 14 por el mtodo de


seleccin.

o Los elementos de la lista se revisan desde el subndice i=0 hasta n-2.

o Identificar la posicin del elemento ms pequeo de la sub-lista formada por los


elementos desde el subndice i hasta el subndice n-1.

o Intercambiarlo por el primer elemento de la sub-lista.

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.

Considere el siguiente array: 6 1 4 7 2 (5 elementos). En una primera pasada, las


comparaciones se realizarn entre elementos separados por un intervalo de 5/2.

Ejemplo: Ordenar ascendentemente la lista 6 1 4 7 2 por el mtodo Shell.

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.

o Tratar, anlogamente a como se expuso en el primer apartado cada una de las


particiones, lo que conduce a un algoritmo recursivo.

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);
}
}
}
}

Varios Mtodos de Ordenacin


Ejemplo 103:
Realizar un programa que use procedimientos. Para Ordenar un Arreglo por varios mtodos.

#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 CreaLista (LISTAPTR *);


141
Programacin I Por Jos Rodolfo Queca
void AVerLaLista (LISTAPTR);
void FreeLista (LISTAPTR *);
void MS (int, int, LISTAPTR *);
void mezcla (int, int, int, int, LISTAPTR *);
/*PARTE DEL METODO DE MERGE SORT*/
void mostrar (int A[],int x);
void quicksort (int A[], int inf, int sup);
void radixsort(int x[], int n);
void shakesort (int A[], int m);
void mostrarshake(int A[],int x);
void SortHeap(int[], int);
void BURBUJA();
void SHELL();
void SELDIR();
void QUICK();
void RADIX();
void MERGES();
void SHAKE();
void INSORT();
void MONTICULO();

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 mostrar (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");
getch();
}

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;
}

void radixsort(int x[], int n)


{
int front[10], rear[10];
struct {
int info;
int next;
} node[MAX];
int exp, first, i, j, k, p, q, y;
for (i = 0; i < n-1; i++)
{
node[i].info = x[i];
node[i].next = i+1;
}
node[n-1].info = x[n-1];
node[n-1].next = -1;
first = 0;
for (k = 1; k < 5; k++)
{
for (i = 0; i < 10; i++)
{
rear[i] = -1;
front[i] = -1;
}
while (first != -1)
{
p = first;
first = node[first].next;
y = node[p].info;
exp = pow(10, k-1);
j = (y/exp) % 10;
q = rear[j];
if (q == -1)
front[j] = p;
else
node[q].next = p;
rear[j] = p;
}
for (j = 0; j < 10 && front[j] == -1; j++);;
first = front[j];
while (j <= 9)
{
for (i = j+1; i < 10 && front[i] == -1; i++);;
if (i <= 9)
{
p = i;
node[rear[j]].next = front[i];
}
j = i;
}
node[rear[p]].next = -1;

145
Programacin I Por Jos Rodolfo Queca
}
for (i = 0; i < n; i++)
{
x[i] = node[first].info;
first = node[first].next;
}
}

//METODO DE MERGE SORT (O MEZCLA)


void MERGES()
{
LISTAPTR inicio= NULL;

clrscr();
CreaLista(&inicio);
MS(0,MAX-1,&inicio);
printf("\n\nNUMEROS ORDENADOS\n-------------------\n");
AVerLaLista(inicio);
FreeLista(&inicio);
getch();
return;
}

void CreaLista (LISTAPTR *inicio)


{
int i,n,A[MAX];
LISTAPTR nuevo, temp;
cout<<"\n****** METODO DE MERGE SORT******\n\n";
cout<<"CUANTOS NUMEROS DESEAS ORDENAR (MINIMO=6) : ";cin>>n;cout<<"\n";
for (i=0; i<n; i++)
{
cout<<"Capturar "<<"["<<i<<"] : ";cin>>A[i];
nuevo= (LISTAPTR) malloc(sizeof(LISTATYPE));
nuevo->sig= NULL;
nuevo->numero= A[i];
if (*inicio == NULL)
*inicio= nuevo;
else
{
temp= *inicio;
while (temp->sig != NULL)
temp= temp->sig;
temp->sig= nuevo;
}
}
}

void AVerLaLista (LISTAPTR inicio)


{
if (inicio != NULL)
{
printf("\n \t %d ",inicio->numero);
AVerLaLista(inicio->sig);
}
}

void FreeLista (LISTAPTR *inicio)


{
LISTAPTR temp= *inicio;
if (*inicio != NULL)
{
FreeLista(&((*inicio)->sig));
free(temp);
}
}

void MS (int ini, int fin, LISTAPTR *inicio)


{
int m, m1;
if (ini < fin)
{
m= (ini+fin)/2;
m1= m+1;
MS(ini,m,&(*inicio));
MS(m1,fin,&(*inicio));

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];
}

//SHAKE SORT(o SACUDIDA)


void shakesort (int A[], int m)
{
int intercambio;
int i,izq,der,aux;
intercambio = m-1;
izq=1;
der=m-1;
if(izq<=der)
for(i=der;i>=izq;i--)
{
if(A[i-1]>A[i])
{
aux=A[i-1];
A[i-1]=A[i];
A[i]=aux;
intercambio=i;
}
}
izq=intercambio+1;
for(i=izq;i<der+1;i--)
{
if(A[i-1]>A[i])
{
aux=A[i-1];
A[i-1]=A[i];
A[i]=aux;
intercambio=i;

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;
}

//INSORT o (INSERCION DIRECTA)

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;
}

//METODO DEL MONTICULO


void MONTICULO()
{
int i, arr_num_items;
int n;
int arr[MAX];
clrscr();
printf("\t*******METODO DE HEAP SORT o (MONTICULO)*******\n\n");
printf("CUANTOS NUMEROS DESEAS ORDENAR :");cin>>n;
for(i=0;i<n;i++)
{
cout<<"CAPTURANDO A["<<i<<"] :";cin>>arr[i];

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.

Del anterior trmino, se deriva su nombre de Bsqueda secuencial, pues se comparan


secuencialmente todos los elementos, desde el inicio hasta el fin de arreglo uno por
uno, hasta que el elemento del arreglo se encuentre o hasta que se llegue al final
del arreglo. La existencia se puede asegurar desde el momento en que el elemento es
localizado, pero no se puede asegurar la no existencia hasta no haber analizado
todos los elementos del arreglo.

La bsqueda secuencial funciona de forma lineal y es muy til en arreglos de pocos


elementos, o bien para arreglos que no estar ordenados. Su efectividad y velocidad
se incrementa si los elementos de un arreglo ya se encuentran ordenados, esto es
porque reduce el rea de bsqueda eliminando los registros que estn sobre el
elemento clave.

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.

Para implementar este algoritmo, se compara el elemento a buscar con un elemento


cualquiera del arreglo (normalmente el elemento central), si el valor de ste es
mayor que el del elemento buscado, se repite el procedimiento en la parte del
arreglo que va desde el inicio de ste hasta el elemento tomado, en caso contrario
se toma la parte del arreglo que va desde el elemento tomado hasta el final. De esta

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 la tabla de nmeros est ordenada, por ejemplo, en orden creciente, es posible


utilizar para la bsqueda un algoritmo ms eficiente que se basa en un concepto muy
utilizado en la programacin: dividir para vencer.

Si est ordenada la tabla y miramos el nmero situado en la mitad para ver si es


mayor o menor que el nmero buscado (o con suerte igual), sabremos si la bsqueda ha
de proceder en la sub-tabla con la mitad de tamao que est antes o despus de la
mitad. Si se repite recursivamente el algoritmo al final o bien encontraremos el
nmero sobre una tabla de un slo elemento, o estaremos seguros de que no se
encuentra all.

Algoritmo: (N es el nmero de componente)


Iniciar

Repetir mientras (Izq <= Der) y (Bandera=falso)

Si X=V [Cen] entonces

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 de almacenamiento disperso

o Tcnicas aleatorias

o Mtodos de transformacin de llave-a-direccin

o Tcnicas de direccionamiento directo

o Mtodos de tabla Hash

o Mtodos de Hashing

Pero el trmino ms usado es el de hashing. Al clculo que se realiza para obtener


una direccin a partir de una llave se le conoce como funcin hash.

Ventajas:

1. Se pueden usar los valores naturales de la llave, puesto que se traducen


internamente a direcciones fciles de localizar.
2. Se logra independencia lgica y fsica, debido a que los valores de las llaves
son independientes del espacio de direcciones.
3. No se requiere almacenamiento adicional para los ndices.

Desventajas:

1. No pueden usarse registros de longitud variable.


2. El archivo no est ordenado.
3. No permite llaves repetidas.
4. Solo permite acceso por una sola llave.

Bsqueda en Textos

La bsqueda de patrones en un texto es un problema muy importante en la prctica.


Sus aplicaciones en computacin son variadas, como por ejemplo la bsqueda de una
palabra en un archivo de texto o problemas relacionados con biologa computacional,
en donde se requiere buscar patrones dentro de una secuencia de ADN, la cual puede
ser modelada como una secuencia de caracteres (el problema es ms complejo que lo
descrito, puesto que se requiere buscar patrones en donde ocurren alteraciones con
cierta probabilidad, esto es, la bsqueda no es exacta).
En este captulo se considerar el problema de buscar la ocurrencia de un patrn
dentro de un texto. Se utilizarn las siguientes convenciones: n denotar el largo
del texto en donde se buscar el patrn, es decir, texto = a1 a2 ... an. Donde m
denotar el largo del patrn a buscar, es decir, patrn = b1 b2 ... bm.

Por ejemplo:

Texto = "analisis de algoritmos" n=22 y m=4


Patrn = "algo"

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

Bsqueda Directa Hacia Delante

Idea Clave: Comparar carcter a carcter texto y patrn comenzando por el extremo
izquierdo de ambos.

Si se compara el siguiente carcter


No el proceso se reinicia comenzado en la posicin siguiente a la que se inici la

Bsqueda Directa Hacia Atrs

Idea Clave: Comparar carcter a carcter texto y patrn comenzando por el extremo
derecho de ambos

Si se compara el carcter anterior


No el proceso se reinicia comenzado en la anterior posicin a la que se inici

155
Programacin I Por Jos Rodolfo Queca

FUNDAMENTOS DE LA PROGRAMACIN ORIENTADA A OBJETOS


Introduccin a la Programacin Orientada a Objetos
Un nuevo paradigma de POO
La Programacin Orientada a Objetos (POO u OOP segn sus siglas en ingls) es un
paradigma de programacin que usa objetos y sus interacciones para disear
aplicaciones y programas de computadora. Est basado en varias tcnicas, incluyendo
herencia, modularidad, polimorfismo y encapsulamiento. Su uso se populariz a
principios de la dcada de 1990. Actualmente son muchos los lenguajes de
programacin que soportan la orientacin a objetos.

Evolucin de los lenguajes de POO


La programacin OO empez hace 30 aos
En los 1990s se increment dramticamente la demanda para sistemas de software
OO, por la promesa en la revolucin en el desarrollo de software.
Han aparecido varias metodologas para el desarrollo de software, que tienen que
ver con algunas o todas las fases del ciclo de vida del software, desde los
requerimientos al mantenimiento.

Algunas caractersticas importantes de los sistemas de software actuales son:

Complejidad: la arquitectura interna de los sistemas actuales de software es


compleja, incluyen frecuentemente concurrencia y paralelismo. La abstraccin
en trminos de conceptos de OO es una tcnica que ayuda a tratar con la
complejidad.
Amigabilidad: Este es un requerimiento de suma importancia para los sistemas
de software en general.
Reusabilidad: Tomar componentes creados por otros es mejor que crearlos
nuevos. La herencia es un mecanismo de OO que estimula la reusabilidad del
software. Facilita el rpido desarrollo del software.

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

OO se define por herencia, encapsulacin, mtodos y mensajes, como en


Smalltalk.
OO se define encapsulacin, abstraccin de datos, mtodos, mensajes, herencia
y vinculacin dinmica.
Es un modelo de simula el comportamiento ya sea de una parte del mundo real o
imaginario.
Objetos, clases y herencia. Los objetos son entidades autnomas que tienen un
estado y responden a mensajes. Las clases agrupan los objetos por sus
atributos y operaciones.
Todas tienen el comn de usar objetos como una encapsulacin para proteger
los datos con todas las operaciones legales que actan sobre esa informacin
oculta.

Clasificacin de los Lenguajes de POO


La clasificacin de los lenguajes orientados a objetos basados en objetos,
orientados a objetos (puros e hbridos) basados en objetos, orientados a objetos
basados en clases.

Una descripcin breve de los lenguajes ms utilizados: Smalltalk, C++, Objetive-C,


Eiffel, Object Pascal, Visual Basic y Ada.

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.

Un objeto es una entidad caracterizada por sus atributos propios y cuyo


comportamiento est determinado por las acciones o funciones que pueden
modificarlo, as como tambin las acciones que requiere de otros objetos. Un
objeto tiene identidad e inteligencia y constituye una unidad que oculta
tanto datos como la descripcin de su manipulacin. Puede ser definido como
una encapsulacin y una abstraccin: una encapsulacin de atributos y
servicios, y una abstraccin del mundo real.

Para el contexto del Enfoque Orientado a Objetos (EOO) un objeto es una


entidad que encapsula datos (atributos) y acciones o funciones que los
manejan (mtodos). Tambin para el EOO un objeto se define como una instancia
o particularizacin de una clase.

Los objetos de inters durante el desarrollo de software no slo son tomados


de la vida real (objetos visibles o tangibles), tambin pueden ser
abstractos. En general son entidades que juegan un rol bien definido en el
dominio del problema. Un libro, una persona, un carro, un polgono, son
apenas algunos ejemplos de objeto.

Cada objeto puede ser considerado como un proveedor de servicios utilizados


por otros objetos que son sus clientes. Cada objeto puede ser a al vez
proveedor y cliente. De all que un programa pueda ser visto como un conjunto
de relaciones entre proveedores clientes. Los servicios ofrecidos por los
objetos son de dos tipos:

1.- Los datos, que llamamos atributos.


2.- Las acciones o funciones, que llamamos mtodos.

Caractersticas Generales

Un objeto se identifica por un nombre o un identificador nico que lo


diferencia de los dems. Ejemplo: el objeto Cuenta de Ahorros nmero
157
Programacin I Por Jos Rodolfo Queca
12345 es diferente al objeto Cuenta de Ahorros nmero 25789. En este
caso el identificador que los hace nicos es el nmero de la cuenta.

Un objeto posee estados. El estado de un objeto est determinado por los


valores que poseen sus atributos en un momento dado.

Un objeto tiene un conjunto de mtodos. El comportamiento general de los


objetos dentro de un sistema se describe o representa mediante sus
operaciones o mtodos. Los mtodos se utilizarn para obtener o cambiar
el estado de los objetos, as como para proporcionar un medio de
comunicacin entre objetos.

Un objeto tiene un conjunto de atributos. Los atributos de un objeto


contienen valores que determinan el estado del objeto durante su tiempo
de vida. Se implementan con variables, constantes y estructuras de datos
(similares a los campos de un registro).

Los objetos soportan encapsulamiento. La estructura interna de un objeto


normalmente est oculta a los usuarios del mismo. Los datos del objeto
estn disponibles solo para ser manipulados por los propios mtodos del
objeto. El nico mecanismo que lo conecta con el mundo exterior es el
paso de mensajes.

Un objeto tiene un tiempo de vida dentro del programa o sistema que lo


crea y utiliza. Para ser utilizado en un algoritmo el objeto debe ser
creado con una instruccin particular (New Nuevo) y al finalizar su
utilizacin es destruido con el uso de otra instruccin o de manera
automtica.

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

CODIFICACIN SIN MODULOS


N import java.io.*;
public class Program
{
I=N 1 public static void main(String[] args)throws ..
{
BufferedReader e = new Buffered..
System.out.print("n=");
J=1I int n = Integer.parseInt(e.readLine());
for (int i = n; i >= 1; i--)
{
* for (int j = 1; j <= i; j++)
{
System.out.print("* ");
}
J System.out.println();
}
System.in.read();
}
Salto d Lnea }

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.

Su sintaxis algortmica es:


Clase <Nombre de la Clase>

FClase <Nombre de la Clase>;

Sintaxis de clases

La sintaxis bsica para definir una clase es la que a continuacin se muestra:

class <nombreClase>
{
<miembros>
}

Caractersticas Generales

Una clase es un nivel de abstraccin alto. La clase permite describir un


conjunto de caractersticas comunes para los objetos que representa.
Ejemplo: La clase Avin se puede utilizar para definir los atributos
(tipo de avin, distancia, altura, velocidad de crucero, capacidad, pas
de origen, etc.) y los mtodos (calcular posicin en el vuelo, calcular
velocidad de vuelo, estimar tiempo de llegada, despegar, aterrizar,
volar, etc.) de los objetos particulares Avin que representa.
Un objeto es una instancia de una clase. Cada objeto concreto dentro de
un sistema es miembro de una clase especfica y tiene el conjunto de
atributos y mtodos especificados en la misma.
Las clases se relacionan entre s mediante una jerarqua. Entre las
clases se establecen diferentes tipos de relaciones de herencia, en las
cuales la clase hija (subclase) hereda los atributos y mtodos de la
clase padre (superclase), adems de incorporar sus propios atributos y
mtodos. Ejemplos, Superclase: Clase Avin Subclases de Avin: Clase
Avin Comercial, Avin de Combate, Avin de Transporte.
Los nombres o identificadores de las clases deben colocarse en singular
(clase Animal, clase Carro, clase Alumno).

Ejemplo 106: Realizar un programa que use Clases para manipular


datos.

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.

Estructuralmente, un mensaje consta de 3 partes:

Identidad del receptor: Nombre del objeto que contiene el mtodo a


ejecutar.
Nombre del mtodo a ejecutar: Solo los mtodos declarados pblicos.
Lista de Parmetros que recibe el mtodo (cero o ms parmetros).

Su sintaxis algortmica es:

<Variable_Objeto>.<Nombre_Mtodo> ( [<Lista de Parmetros> ] );

Ejemplo
e.Nombre
e.Mostrar()
e.Mostrar(int R)

Cuando el objeto receptor recibe el mensaje, comienza la ejecucin del


algoritmo contenido dentro del mtodo invocado, recibiendo y/o
devolviendo los valores de los parmetros correspondientes, si los tiene
ya que son opcionales: ( [ ] )

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>;

Los modos de acceso son:

Pblico: Atributos (o Mtodos) que son accesibles fuera de la clase.


Pueden ser llamados por cualquier clase, aun si no est relacionada con
ella. Este modo de acceso tambin se puede representar con el smbolo +.
Privado: Atributos (o Mtodos) que slo son accesibles dentro de la
implementacin de la clase. Tambin se puede representar con el smbolo
.
Protegido: Atributos (o Mtodos) que son accesibles para la propia clase
y sus clases hijas (subclases). Tambin se puede representar con el
smbolo #

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()

Todas las aplicaciones Java comienzan llamando al mtodo main(), y es el


punto de arranque del programa, debe ser static ya que se ejecuta antes de
que se cree cualquier objeto.

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

La sintaxis algortmica de los mtodos expresados como funciones y acciones


es:
Para funciones se pueden usar cualquiera de estas dos sintaxis:

<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

Ejemplo: Un rectngulo es un objeto caracterizado por los atributos Largo y


Ancho, y por varios mtodos, entre otros Calcular su rea y Calcular su
permetro.

La sintaxis para definir los mtodos es la siguiente:

<tipoDevuelto> <nombreMtodo> (<parametros>)


{
<instrucciones>
}

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;
}

void AdicionaV() throws IOException


{
if (cima == Tope-1)
System.out.println("pila Llena");
else
{
cima++;
System.out.print("V[" + cima + "]=");
V[cima] = Integer.parseInt(en.readLine());
}
}
void EliminaV()
{
if (cima == -1)
System.out.println("pila vacia");
else
{
dato = V[cima];
System.out.print(V[cima] + " Eliminado..");
cima--;
}
}
void ImprimeV()
{

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.*;

public class Program


{
public static void main(String[] args) throws IOException
{
Pila pilaChar;
char ch;
boolean esPal;
String pal;
BufferedReader entrada=new BufferedReader (new InputStreamReader (System.in));
try{
pilaChar =new Pila();
System.out.print("Teclee la palabra " + "a verificar si es palindromo:");
System.out.flush();
pal=entrada.readLine();
pilaChar=new Pila();
for(int i=0;i<pal.length();)
pilaChar.insertar(pal.charAt(i++));
esPal=true;
for(int j=0;esPal&&!pilaChar.pilaVacia ();)
{
esPal=pal.charAt(j++) == pilaChar.quitar();
}
pilaChar.limpiarPila();
if (esPal)
System.out.print("la Palabra " + pal + " es un palindromo \n");
else
System.out.print("la Palabra " + pal + " no es un palindromo \n");
}
catch (Exception er)
{
System.err.println("Exception: " + er);
}
}
}

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.*;

public class Program


{
public static void main(String[] args) throws IOException
{
ColaEstatica cola=new ColaEstatica(5);
BufferedReader cadena = new BufferedReader(new InputStreamReader(System.in));
int obj1,opcion;
do
{
System.out.println("1) Insertar dato");
System.out.println("2) Remover dato");
System.out.println("3) Imprimir dato");
System.out.println("4) Fin de Programa");
System.out.print("Opcion: ");
opcion=Integer.parseInt(cadena.readLine());
switch(opcion)
{
case 1: if (!cola.llena() )
{
System.out.print("Escribe un numero: ");
cola.insertar(Integer.parseInt(cadena.readLine()));
}
else
{
System.out.println("Cola Llena");
}break;
case 2: if (!cola.vacia())
System.out.println("Dato sacado " + cola.remover() );
else
System.out.println("Cola Vacia");
break;
case 3: cola.imprimir(); break;
default: System.out.println("Ingrese nuevamente");
}

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

Ejemplos de Aplicaciones de Windows


Ejemplo 120:
Realizar un programa para llenar Obtener los resultados de la ecuacin de Segundo Grado, la
codificacin se har en Visual J# (Java de Visual Studio 2005)

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.*;

public class Form1 extends System.Windows.Forms.Form


{
private GroupBox groupBox1;
private GroupBox groupBox2;
........
........
private void btnSale_Click(Object sender, System.EventArgs e)
{
super.Dispose();
}

private void btnCalcula_Click(Object sender, System.EventArgs e)


{
double x1, x2, x3, n2;
Double x = Double.valueOf(txtA.get_Text());
x1 = x.floatValue();
Double y = Double.valueOf(txtB.get_Text());
x2 = y.floatValue();
Double z = Double.valueOf(txtC.get_Text());
x3 = z.floatValue();
Segundo p = new Segundo(x1, x2, x3);
x1 = p.OperacionX1();
Double v = new Double(x1);
txtR1.set_Text(v.toString());
x2 = p.OperacionX2();
v = new Double(x2);
txtR2.set_Text(v.toString());

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;

//generacion de numeros con For


for (int i=0;i<NUM;i++)
{
double x = (double)rand()/RAND_MAX; //entre 0 y 1
datos[i] = A + x * (B - A); //entre A y B
}
//imprimir datos con While
i=0;
while(i<NUM)
{
cout << "Num:"<< setw(8) << setprecision(5) << datos[i];
cout << " Sqrt:"<< sqrt(datos[i]) << endl;
i++;
}
} //fin de main

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];
}

//convertir las May en Min y viceversa


cout << "\nConvertir de May a Min y viceversa:\n";
for (int i=0;i<len;i++)
{
if ( islower( cadena[i] ))
{ //es minuscula?
cout << (char)toupper(cadena[i]); //convierte a mayuscula.
}
else
{
cout << (char)tolower(cadena[i]); //sino conv. a minuscula.
}
}
cout << endl;
}

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;
}

private void Sale_Click(object sender, EventArgs e)


{
Dispose(true);
}
}
class Ecuacion
{
private double A, B, C, D,Im, X1, X2;
public string S1,S2;

public Ecuacion(double a1, double b1, double c1)

180
Programacin I Por Jos Rodolfo Queca
{
A = a1;
B = b1;
C = c1;
}

public void Calcule()


{
D=B*B-4*A*C;
if (D < 0)
{
D=D*(-1);
Im = (Math.Sqrt(D))/(2*A);
X1=-B/(2*A);
S1 = X1.ToString() + "+" + Im.ToString()+"i";
S2 = X1.ToString() + "-" + Im.ToString()+"i";
}
else
{
X1=(-B+Math.Sqrt(D))/(2*A);
X2=(-B+Math.Sqrt(D))/(2*A);
S1 = X1.ToString();
S2 = X2.ToString();
}
}
}
}

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();
}

private void Descendente_CheckedChanged(object sender, EventArgs e)


{
if (Descendente.Checked)
ord = false ;
Ordena();
}
private void Ordena()
{
int NUM = i;
int nn;
lstOrdenado.Items.Clear();
// 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
for (i = 0; i < NUM; i++)
{
nn = dato[i];
lstOrdenado.Items.Add("" + nn);
}
}
}
}
182
Programacin I Por Jos Rodolfo Queca

Ejemplo 128:
Escribir un programa que ingrese n mediante teclado para luego imprimir la Serie
Espiral.(Java y C#)

#include <iostream.h> En C++


#include <conio.h>
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);cout<<b;}
if(r==2){gotoxy((n+1-c)*3,i);cout<<b;}
if(r==3){gotoxy((n+1-i)*3,n+1-c);cout<<b;}
if(r==4){gotoxy(c*3,n+1-i);cout<<b;}
}
}
if(r==4){r=1;c=c+1;}else r=r+1;
if((n%2!=0)&&(b==n*n-1)){
b=b+1;
c=(n+1)/2;
gotoxy(c*3,c);cout<<b;
}
}while(b!=n*n);
}
int leeN()
{
int n;
gotoxy(30,34);cout<<"Ingrese la dimension:";
cin>>n;
return n;
}
void main(void)
{
int n;
clrscr();
n=leeN();
genera(n);
getch();
}

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.

Public Class Form1

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


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

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


End
End Sub
End Class

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).

Public Class Form1


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

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


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

Function numero(ByVal n As Integer) As String


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

185
Programacin I Por Jos Rodolfo Queca
End Select
h = h + 1
Loop Until G = 0
numero = Roman
End Function

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


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

El ejemplo se ver de la siguiente forma:

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.

Public Class Form1


Dim AcadDoc As Object
Dim AcadModel As Object
Dim CrculoObj As Object
Dim PtoCentro(2) As Double
Dim Radio As Double

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


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

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

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


End
End Sub
End Class

Nota: AutoCAD deber estar ejecutndose, caso contrario no funcionara el programa .

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 AcadDoc As Object


Dim AcadModel As Object

Dim curves(0 To 7) As Object

Dim centerP (0 To 2) As Double


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

Dim centerP1(0 To 2) As Double


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

Dim centerP2(0 To 2) As Double


Dim radius2 As Double
Dim startA2 As Double
Dim endAngle2 As Double

Dim centerP3(0 To 2) As Double


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

Dim LineaFinal(0 To 2) As Double


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

Private Sub Grafica_Click()


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

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


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

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


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

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


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

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


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

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


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

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


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

Dim regObj

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

' Define el eje de rotacion


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

' Crea el solido


Dim solidObj As Object
Set solidObj=AcadModel.AddRevolvedSolid(regObj(0),axisPt,axisDir, angle)
solidObj.Color = 4

Dim NewDirection(0 To 2) As Double


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

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


End Sub

189
Programacin I Por Jos Rodolfo Queca

Bibliografa

El Correcto y Completo Desarrollo de un Algoritmo


Eduardo Ren Rodrguez vila
Seccin de Estudios de Postgrado e Investigacin UPIICSA

Fundamentos de las Computadoras


Jan Smith 2009
http://www.jegsworks.com/lessons-sp/lessonintro.htm

El algoritmo, una iniciacin a la programacin


Wilder Urbaez
http://www.desarrolloweb.com/manuales/67/

Encarta
2006
Microsoft Corporation

190

Potrebbero piacerti anche