Está en la página 1de 28

INSTITUTO TECNOLGICO SUPERIOR DE ACATLAN DE OSORIO

PROGRAMAS ELABORADOS EN JAVA

NOMBRE DEL ALUMNO: JUAN DE DIOS RAMREZ VIVAR

NOMBRE DE LA ASIGNATURA: ESTRUCTURA DE DATOS CARRERA: INGENIERA EN INFORMTICA

SEMESTRE: 3. SEMESTRE

NOMBRE DEL DOCENTE: L.IC. MIGUEL FUENTES CORTES

ACATLAN DE OSORIO PUE; A 03 DE DICIEMBRE DE 2011.

Materia: Estructura de Datos

1
Contenido
DIAGRAMA DE FLUJO.............................................................................................................................3

DIAGRAMA DE FLUJO
Declarar: INICI Introduce Quieres hacer FI nmeros para la suma realizar nueva suma? suma= n1+n2+n3+n4+n5; int n1,n2,n3,n4,n5,total; N Leer Mostrar total de suma nmeros O String Respuesta; int opcion=1; int op=1;

Docente: Lic. Miguel Fuentes Cortes Ramrez Vivar

Alumno: Juan de Dios

Materia: Estructura de Datos

SEUDOCDIGO.
Inicio.
Docente: Lic. Miguel Fuentes Cortes Ramrez Vivar Alumno: Juan de Dios

Materia: Estructura de Datos

Continuar: carcter. Nmeros: enteros. Suma: enteros. Realizar Pedir nmeros para la nueva suma. Leer nmeros. suma= n1+n2+n3+n4+n5; Mientras ((op==1));

Escribir suma. Fin.

PRUEBA DE ESCRITORIO Instruccin Leer numero Leer numero Leer numero Leer numero Leer numero Entrada 5 4 3 2 1 Suma Suma=5 Suma=5+4 Suma=9+3 Suma=12+2 Suma=14+1 Respuesta Si Si Si Si no Mostrar resultado Pantalla

Docente: Lic. Miguel Fuentes Cortes Ramrez Vivar

Alumno: Juan de Dios

Materia: Estructura de Datos

PANTALLAS DE PROGRAMA EJECUTNDOSE

Fig. 1.1 Visualizacin del programa ejecutndose y mostrando el tipo de sistema .

Docente: Lic. Miguel Fuentes Cortes Ramrez Vivar

Alumno: Juan de Dios

Materia: Estructura de Datos

Fig. 1.2 Visualizacin del programa ejecutndose y pidiendo nmeros.

Fig. 1.3 Visualizacin del programa mostrando resultado y preguntando si desea realizar una

nueva suma.

Docente: Lic. Miguel Fuentes Cortes Ramrez Vivar

Alumno: Juan de Dios

Materia: Estructura de Datos

LNEAS DE CDIGO DE PROGRAMA QUE SUMA NMEROS ENTEROS

import javax.swing.JOptionPane; public class sumanumeros { /** * @param args */ public static void main(String[] args) { int n1,n2,n3,n4,n5,suma; String Respuesta; int opcion=1; int op=1; JOptionPane.showMessageDialog(null, "SISTEMA QUE SUMA NUMEROS ENTEROS"); op=1; do{ System.out.println("INTRODUCE EL NUMERO:"); n1=in.datoInt(); System.out.println("INTRODUCE EL NUMERO::"); n2=in.datoInt(); System.out.println("INTRODUCE EL NUMERO::"); n3=in.datoInt(); System.out.println("INTRODUCE EL NUMERO::"); n4=in.datoInt(); System.out.println("INTRODUCE EL NUMERO::"); n5=in.datoInt(); suma= n1+n2+n3+n4+n5; System.out.println("Total: $ " + suma); System.out.println("Presiona == 1 == PARA op= in.datoInt(); }while((op==1)); }

REALIZAR NUEVA SUMA...");

Docente: Lic. Miguel Fuentes Cortes Ramrez Vivar

Alumno: Juan de Dios

Materia: Estructura de Datos

Este programa resuelve dos ecuaciones lineales bajo una condicin, si el valor de x es >= 0 realiza Y=X2+6 en caso contrario realizara Y=3x+6

Imprimir (x*x)+6 (3*X+6) INICIO fin X>=0 y

DIAGRAMA DE FLUJO

LINEA DE CODIGO
import java.util.Scanner;; public class Principal3 { public static void main(String[]args) { Clase3 yo = new Clase3(); Scanner lector = new Scanner(System.in);

Docente: Lic. Miguel Fuentes Cortes Ramrez Vivar

Alumno: Juan de Dios

Materia: Estructura de Datos

int x; System.out.println("Introduce el valor de la variable X"); x= lector.nextInt(); if (x>=0) { yo.Xmayor(x); System.out.println("El valor de: Y es igual a:"+yo.getresultado()); } else { yo.Xmenor(x); System.out.println("El valor de: Y es igual a:"+yo.getresultado1()); }

} }

public class Clase3 { int y; public Clase3() { y=0; } public void Xmayor(int x) { y=(x*x)+6; } public int getresultado() { return y; } public void Xmenor(int x) { y= (3*x)+6; } public int getresultado1() { return y; } }

Docente: Lic. Miguel Fuentes Cortes Ramrez Vivar

Alumno: Juan de Dios

Materia: Estructura de Datos

PROGRAMA PARA SACAR FACTORIAL DIAGRAMA DE FLUJO


ac=1 n==0||n==1 i++ no ac=ac*i si i=1;i<=n ImprimirFIac int ac+1 N

Docente: Lic. Miguel Fuentes Cortes Ramrez Vivar

Alumno: Juan de Dios

Materia: Estructura de Datos

PRUEBA DE ESCRITORIO DE FACTORIAL DE 5

LINEAS DE CODIGO
import java.util.*; public class factorialint { static int factorialint(int n){ int ac=1; if (n==0 || n==1) return 1; else {

n 5

i 1 2 3 4 5 6

I<=n 1<=5 2<=5 3<=5 4<=5 5<=5 6<=5

I++ 2 3 4 5 6 NO

Ac=ac*i 1=1*1 2=1*2 6=2*3 24=6*4 120=24*5

imprimir 120
for (int i=1; i<=n; i++) ac=ac*i; return ac;

} } public static void main(String[] args) { int num;

Docente: Lic. Miguel Fuentes Cortes Ramrez Vivar

Alumno: Juan de Dios

Materia: Estructura de Datos


System.out.println("Introduce un numero"); num=Leer.datoInt(); System.out.println("El factorial interactivo es: " +factorialint(num)); } }

PROGRAMA DE FIBONACCI PRUEBA DE ESCRITORIO PARA SACAR FIBONACCI DE 5 [ [ [ [ [ [ [ [ 13]Fibonacci_rec 12]Fibonacci_rec 9 ]Fibonacci_rec 5 ]Fibonacci_rec 4 ]Fibonacci_rec 3 ]Fibonacci_rec 2 ]Fibonacci_rec 1 ]Fibonacci_rec ( ( ( ( ( ( ( ( 1 2 1 1 2 3 4 5 ) ) ) ) ) ) ) ) + + + + + + + [15]Fibonacci_rec [14]Fibonacci_rec [10]Fibonacci_rec [ 6]Fibonacci_rec [7 ]Fibonacci_rec [ 8]Fibonacci_rec [11]Fibonacci_rec ( ( ( ( ( ( ( 0 1 0 0 1 2 3 ) ) ) ) ) ) )

1+0=1 1+1=2 2+1=3 3+2=5

Docente: Lic. Miguel Fuentes Cortes Ramrez Vivar

Alumno: Juan de Dios

Materia: Estructura de Datos

LINEA DE CODIGO DE FIBONACCI


//programa que muestra el fibonacci de un numero public class fibonacci { public static void main (String []args) { int numero; System.out.println("Introduce un numero: "); numero=Leer.datoInt(); System.out.println("fibonacci de "+ numero +" es: "+fibonacci_rec(numero)); } static int fibonacci_rec(int n) { if (n==0) return 0; else if (n==1) return 1; else return fibonacci_rec(n-1)+fibonacci_rec(n-2); } }

PROGRAMA QUE SOLICITA CALIFICACIONES Y DA PROMEDIO E IMPRIME OBSERVACIONES SI ES APROBATORIA O NO ACREDITADA DIAGRAMA DE FLUJO

Docente: Lic. Miguel Fuentes Cortes Ramrez Vivar

Alumno: Juan de Dios

Materia: Estructura de Datos

no promedio >=70 siNombre Mensaje + "NO ACREDITADA"; Mensaje "APROBATORIA"; FI Ingresar==TU PROMEDIO promedio=(cal1+cal2+cal3) Nombre;nombre; ES +promedio+ Ingresar cal 1: cal1; N "TU CALIFICACION ES: " Igresar + Mensaje cal2; cal 2; Ingresar cal 3; cal3; promedio ;

Mensaje= ;

Docente: Lic. Miguel Fuentes Cortes Ramrez Vivar

Alumno: Juan de Dios

Materia: Estructura de Datos

LNEAS DE CDIGO DE PROGRAMA DE CALIFICACIONES

import java.io.*; public class Cal3 { public static void main( String [] Args) { //declaracion de variables String Nombre; int cal1, cal2, cal3; int promedio; String Mensaje=""; System.out.println("SISTEMA DE CALIFICACIONES:" + "\n======================================================================"+"\n"); System.out.print("INTRODUCE TU NOMBRE: "); Nombre=Leer.datoString(); System.out.print("INTRODUCE CALIFICACION 1: "); cal1=Leer.datoInt(); System.out.print("INTRODUCE CALIFICACION 2: "); cal2=Leer.datoInt(); System.out.print("INTRODUCE CALIFICACION 3: "); cal3=Leer.datoInt(); promedio=(cal1+cal2+cal3)/3; if(1>= 70&& 2>=70 && 3 >=70) { Mensaje = "APROBATORIA"; } else if (1<=69&& 2<=69 && 3 <=69) { Mensaje = "(NA) NO ACREDITADA"; } System.out.println("\n"+ Nombre + ": TU PROMEDIO ES : "+ promedio + "\n"+"NOTA:CON UNA CALIFICACION REPROBADA TE VAS A REPITE."); System.out.println("TU CALIFICACION ES: " + Mensaje); } }

Docente: Lic. Miguel Fuentes Cortes Ramrez Vivar

Alumno: Juan de Dios

Materia: Estructura de Datos

PROGRAMA QUE IMPRIME QUE TIPO DE TRIANGULO ES DE ACUERDO A SUS NGULOS


(a >= 91 && aMensajeb<=89 &&c<=89)a, b, c; (a<=89 Introduce el valor del ||c>=91 && c <180 ) &&||b "Rectangulo"; "acutangulo"; int no <180FI ="Obtusangulo"; si Mensaje = >=91 && b<180 angulo a: (a==90 Introduce el String del angulo b: || b==90 ||c==90) N valor Mensaje;

Introduce el valor del angulo c:

Docente: Lic. Miguel Fuentes Cortes Ramrez Vivar

Alumno: Juan de Dios

Materia: Estructura de Datos

LINEA DE CODIGO
import java.io.*; public class Triangulos { public static void main( String [] Args) { //declaracion de variables int a, b, c; String Mensaje=""; ANGULO:" System.out.println("SISTEMA QUE MUESTRA TIPO DE TRIANGULO DE ACUERDO A SU

+ "\n======================================================================"+"\n"); System.out.print("INTRODUCE TIPO DE VALOR DEL ANGULO A:"); a=Leer.datoInt(); System.out.print("INTRODUCE TIPO DE VALOR DEL ANGULO B:"); b=Leer.datoInt(); System.out.print("INTRODUCE TIPO DE VALOR DEL ANGULO C:"); c=Leer.datoInt(); if(a==90 || b==90 ||c==90) { Mensaje = "Rectangulo"; } else if (a >= 91 && a <180 ||b >=91 && b<180 ||c>=91 && c <180 ) { Mensaje = "Obtusangulo";

Docente: Lic. Miguel Fuentes Cortes Ramrez Vivar

Alumno: Juan de Dios

Materia: Estructura de Datos


} else if (a<=89 && b<=89 &&c<=89) { Mensaje = "acutangulo"; } System.out.println("EL TRIANGULO ES : " + Mensaje); } }

PROGRAMA QUE SOLICITA 10 NUMEROS Y QUE IMPRIME EL NUMERO MAYOR Y EL MENOR


DIAGRAMA DE FLUJO

int numeros[]=new int[10]; Ac=1 no i=0;i<numeros.length;i++ siInt i=1;1<=n;i++ ImprimirFIac Ac=ac*i

Docente: Lic. Miguel Fuentes Cortes Ramrez Vivar

Alumno: Juan de Dios

Materia: Estructura de Datos

LINEAS DE CODIGO
import java.util.Scanner; public class ImprimeMayorMenor { public static void main(String Args[]){ Scanner leer=new Scanner(System.in); ParesImpares Nums=new ParesImpares(); int numeros[]=new int[10]; for(int i=0;i<numeros.length;i++){ System.out.print("Introduce el numero: ");
Docente: Lic. Miguel Fuentes Cortes Ramrez Vivar Alumno: Juan de Dios

Materia: Estructura de Datos

numeros[i]=leer.nextInt(); } Nums.NumMayor(numeros); System.out.println("El numero mayor es: "+Nums.Mayor()); System.out.println("El numero menor es: "+Nums.Menor()); }

PROGRAMA QUE LEE 10 NUMEROS EN UN ARREGLO E IMPRIME LA CANTIDAD DE NUMEROS QUE SON CERO, ABAJO CERO Y ARRIBA CERO
import java.util.*; public class Ejer8 { public static void main(String Args[]){ Scanner leer=new Scanner(System.in); int nums[]=new int[10]; int int int int abajoCero=0; arribaCero = 0; igualCero=0; i;

System.out.println("Ingresa numeros"); for(i=0; i<nums.length;i++){ nums[i]=leer.nextInt();

Docente: Lic. Miguel Fuentes Cortes Ramrez Vivar

Alumno: Juan de Dios

Materia: Estructura de Datos


} for(i=0;i<nums.length;i++){ if(nums[i]>0){ arribaCero++; } if(nums[i]<0){ abajoCero++; } if(nums[i]==0){ igualCero++; } } System.out.println("Total de Numeros arriba de Cero: "+arribaCero); System.out.println("Total de Numeros abajo de Cero: "+abajoCero); System.out.println("Total de Numeros igual a Cero: "+igualCero); } }

PROGRAMA QUE SUMA 5 NUMEROS PERO QUE TIENE UN ACUMULADOR


Int inicio Imprimir suma Suma=suma+num num C<5 fin C=0, suma=0 C=c+1

Docente: Lic. Miguel Fuentes Cortes Ramrez Vivar

Alumno: Juan de Dios

Materia: Estructura de Datos

DIAGRAMA DE FLUJO

Docente: Lic. Miguel Fuentes Cortes Ramrez Vivar

Alumno: Juan de Dios

Materia: Estructura de Datos


LINEA DE CODIGO import java.lang.*; import javax.swing.*; public class acumulador{ public static void main(String args[]){ int num, c=0, suma=0; while (c<5){ num=Integer.parseInt(JOptionPane.showInputDialog(null,"Teclea un numero")); c=c+1; suma=suma+num; } System.out.println("la suma de los 5 numeros es: "+suma); System.exit(0); } }

QU ES LA RECURSIVIDAD? La recursividad es un concepto fundamental en matemticas y en computacin. Es una alternativa diferente para implementar estructuras de repeticin (ciclos). Los mdulos se hacen llamadas recursivas. Se puede usar en toda situacin en la cual la solucin pueda ser expresada como una secuencia de movimientos, pasos o transformaciones gobernadas por un conjunto de reglas no ambiguas. Podemos entender por recursividad el hecho de que un sistema, este compuesto a su vez de objetos que tambin son sistemas. En general que un sistema sea subsistema de otro ms grande. Representa la jerarquizacin de todos los sistemas existentes es el concepto unificador de la realidad y de los objetos. El concepto de recursividad se aplica a sistemas dentro de sistemas mayores.

Docente: Lic. Miguel Fuentes Cortes Ramrez Vivar

Alumno: Juan de Dios

Materia: Estructura de Datos

Funcin recursiva Las funciones recursivas se componen de: Caso base: una solucin simple para un caso particular (puede haber ms de un caso base). La secuenciacin, iteracin condicional y seleccin son estructuras vlidas de control que pueden ser consideradas como enunciados. NOTA: Regla recursiva Las estructuras de control que se pueden formar combinando de manera vlida la secuenciacin, iteracin condicional y seleccin tambin son vlidos. Caso recursivo: una solucin que involucra volver a utilizar la funcin original, con parmetros que se acercan ms al caso base. Los pasos que sigue el caso recursivo son los siguientes: 1. El procedimiento se llama a s mismo 2. El problema se resuelve, resolviendo el mismo problema pero de tamao menor 3. La manera en la cual el tamao del problema disminuye asegura que el caso base eventualmente se alcanzar

Docente: Lic. Miguel Fuentes Cortes Ramrez Vivar

Alumno: Juan de Dios

Materia: Estructura de Datos

Por qu escribir programas recursivos? Son mas cercanos a la descripcin matemtica. Generalmente mas fciles de analizar Se adaptan mejor a las estructuras de datos recursivas. Los algoritmos recursivos ofrecen soluciones estructuradas, modulares y elegantemente simples. Cmo escribir una funcin en forma recursiva? <tipo_de_regreso><nom_fnc> (<param>){ [declaracin de variables] [condicin de salida] [instrucciones] [llamada a <nom_fnc> (<param>)] return <resultado> }

Cundo usar recursividad? Para simplificar el cdigo. Cuando la estructura de datos es recursiva ejemplo : rboles. Cundo no usar recursividad? Cuando los mtodos usen arreglos largos. Cuando el mtodo cambia de manera impredecible de campos. Cuando las iteraciones sean la mejor opcin. Algunas Definiciones. Cuando un procedimiento incluye una llamada a s mismo se conoce como recursin directa. Cuando un procedimiento llama a otro procedimiento y ste causa que el procedimiento original sea invocado, se conoce como recursin indirecta.
Docente: Lic. Miguel Fuentes Cortes Ramrez Vivar Alumno: Juan de Dios

Materia: Estructura de Datos

NOTA: Cuando un procedimiento recursivo se llama recursivamente a si mismo varias veces, para cada llamada se crean copias independientes de las variables declaradas en el procedimiento.

Ejemplos de recursividad: Inversin de una cadena esttica Cad invierte (Cad cadena, int limIzq, int limDer) si limDer = limIzq entonces regresa cadena sino regresa invierte (cadena, limDer, limIzq+1) + cadena [limIzq] fin Ejemplo: Las torres de Hanoi Mover n discos del poste 1 al poste 3 (utilizando el poste 2 como auxiliar):

hanoi (n, 1, 2, 3); Solucin recursiva:

void hanoi (int n, int inic, int tmp, int final) { if (n > 0) { // Mover n-1 discos de "inic" a "tmp". // El temporal es "final". hanoi (n-1, inic, final, tmp); // Mover el que queda en "inic" a "final" printf (Del poste %d al %d.\n, inic, final); // Mover n-1 discos de "tmp" a "final". // El temporal es "inic". hanoi (n-1, tmp, inic, final); } }

Solucin para 3 discos

Docente: Lic. Miguel Fuentes Cortes Ramrez Vivar

Alumno: Juan de Dios

Materia: Estructura de Datos

Docente: Lic. Miguel Fuentes Cortes Ramrez Vivar

Alumno: Juan de Dios

Materia: Estructura de Datos

Entonces, por lo que hemos podido ver, el programa podra definirse de la siguiente manera: Si es un solo disco, lo movemos de A a C. En otro caso, suponiendo que n es la cantidad de aros que hay que mover Movemos los n-1 aros superiores - es decir, sin contar el ms grande- de A a B (utilizando a C como auxiliar). Movemos el ltimo aro (el ms grande) de A a C. Movemos los aros que quedaron en B a C (utilizando a A como auxiliar).

A manera de conclusin muchas veces es posible dividir un problema en subproblemas ms pequeos, generalmente del mismo tamao, resolver los subproblemas y entonces combinar sus soluciones para obtener la solucin del problema original. Dividir para vencer es una tcnica natural para las estructuras de datos, ya que por definicin estn compuestas por piezas. Cuando una estructura de tamao finito se divide, las ltimas piezas ya no podrn ser divididas.

Docente: Lic. Miguel Fuentes Cortes Ramrez Vivar

Alumno: Juan de Dios