SlideShare una empresa de Scribd logo
ALGORITMOS Y ANALISI DE ALGORITMOS<br />ADRIAN GONZALEZ<br />MAURICIO RANGEL<br />ING. JOSE EGURROLA<br />UNIVERSIDAD  COOPERATIVA DE COLOMBIA<br />FACULTA DE INGENIERIA<br />SANTA MARTA<br />01/03-2011<br />JUSTIFICACION<br />                Este trabajo fue realizado con el fin de  demostrar la importancia que tiene los algoritmos para la realización de aplicaciones computacionales, que desde que apareció ha sido y seguirá siendo una herramienta útil para dar solución a procedimientos de problemas habituales. Dando como nacimiento el análisis de algoritmos, que es la ciencia que estudia el comportamiento de los algoritmos, en otras palabras, se encarga de demostrar con hechos, cuál de todos los algoritmos propuesto para la solución de un solo problema era el más óptimo a la repuesta esperada. <br />Otra razón es conocer las funcionalidades de los vectores y matrices, ya que este es un tema muy importante, porque estos nos permiten implementar la forma más eficiente de almacenar datos.<br />OBJETIVOS<br />Aclarar la definición, el funcionamiento, su utilización, características de los algoritmos.<br />Conocer las sentencias que harán posible la utilización de algoritmos óptimos, dejando en claro la función  de cada uno de ellos y cuando utilizarlos.<br />Identificar cuando un algoritmo puede ser el más óptimo.<br />Analizar cada posible algoritmo de solución de cualquier problema dado.<br />Lograr a desarrollar algoritmos eficientes y eficaces.<br />Estudiar cada uno de los comportamientos de los algoritmos, teniendo en cuenta el tiempo de ejecución, recursos y el rendimiento.<br />Conocer las principales funciones de los vectores y matrices.<br />Analizar las definiciones y característica de los vectores y matrices.<br />Lograr implementar algoritmo eficiente  por medio de la utilización de vectores y matrices.<br />Entender la diferencia entre vector y matriz.<br />INTRODUCCION<br />               En el siguiente trabajo se definirá las distintas funciones de uso, de los algoritmos para la realización de soluciones óptimas que más adelante serán aplicaciones eficientes y eficaces. Encontraremos los componentes de los algoritmos con su significado y como aplicarlos, declararemos las sentencias necesarias para desarrollar soluciones a partir de algoritmos y como poder analizar las posibles soluciones encontradas para un problema. Se mostrara la historia y características de los algoritmos, definiendo paso a paso los elementos más importantes del tema. También el comprender los distintos conceptos de vectores y matrices, dejando claro su utilización, usos, operaciones, declaraciones y sus distintas características.<br />HISTORIA DE LOS ALGORITMOS<br />Un algoritmo es un conjunto de operaciones y procedimientos que deben seguirse para resolver un problema. La palabra algoritmo se deriva del nombre latinizado del gran Matemático Árabe Mohamed Ibn Al Kow Rizmi, el cual escribió sobre los años 800 y 825 su obra Quitad Al Mugabala, donde se recogía el sistema de numeración hindú y el concepto del cero. Fue Fibinacci, el que tradujo la obra al latín y el inicio con la palabra: Algoritmi Dicit. El lenguaje algorítmico es aquel por medio al cual se realiza un análisis previo del problema a resolver y encontrar un método que permita resolverlo. El conjunto de todas las operaciones a realizar y el orden en que se deben efectuarse, se le denomina algoritmo. Es un método para resolver un problema mediante una serie de datos precisos, definidos y finitos.<br />ALGORITMO: Es una secuencia finita de operaciones que resuelve un problema en un tiempo finito.<br />Sus características son:<br />Finitos: Debe acabar en algún momento.<br />Eficientes: Deben ocupar la mínima memoria y minimizar el tiempo de ejecución.<br />Legibles: El texto que lo describe debe ser claro, tal que permita entenderlo y leerlo fácilmente.<br />Modificables: Estarán diseñados de modo que sus posteriores modificaciones sean fáciles de realizar, incluso por programadores diferentes a sus propios autores.<br />Modulares: La filosofía utilizada para su diseño debe favorecer la división del problema en módulos pequeños.<br />Único punto de entrada, único punto de salida: A los algoritmos y a los módulos que lo integran se entra por un sólo punto, inicio, y se sale por un sólo punto también, fin.<br />ELEMENTOS DE UN ALGORITMO<br />Un algoritmos consta de datos y sentencias, estos datos son almacenados en variables las cuales son involucrados en expresiones. Las sentencias describen las acciones que pueden ser ejecutadas, en general realizan cálculos, entradas/salidas y control de flujo del algoritmo.  <br />VARIABLES, CONSTANTES Y EXPRESIONES<br />Variable: Elemento del algoritmo que posee un valor, conocido por un nombre o identificador y que pertenece a un tipo de dato definido al inicio del algoritmo.<br />Debe ser declarada antes de usarse <br />En un algoritmo la declaración consta de una sentencia que especifica: el tipo de dato, su nombre y un valor inicialen algunas ocasiones.<br />Constante: los elementos del algoritmo que no cambian de valor a lo largo del algoritmo.<br />Las constantes deben ser inicializadas de acuerdo con el tipo de dato al que pertenecen<br />Expresión: es una combinación de variables, constantes, valores constantes, operadores y funciones especiales que, en cada momento, al evaluarla tiene un valor concreto.<br />Las expresiones más representativas son las numéricas y las lógicas<br />Las expresiones numéricas tienen como resultado datos numéricos, las operaciones entre paréntesis se evalúan primero, Las operaciones aritméticas se evalúan según el orden de prioridad.<br />Las expresiones lógicas son las que ofrecen como resultado después de su operación un valor lógico.<br />Los operadores lógicos que involucran son:<br /> AND, OR, NOT y los relacionales: <, >, ==, <=, >=, ~= <br />TIPOS DE DATOS<br />Pueden ser: <br />Enteros: Representan números positivos o negativos sin decimales.<br />Reales: Almacenan un valor.<br />Carácter: Representan elementos individuales de un conjunto finito de caracteres. <br />Lógico o booleano: Solo pueden tener dos posibles valores verdadero o falso.<br />Enumerado: este tipo de dato requiere que el programador defina el rango de valores que puede tomar.<br />Subrango: este tipo de dato se define a partir del tipo de dato entero, carácter o enumerado, con solo decir que el tipo de dato definido podrá tomar un conjunto de valores limitado del original.<br />Puntero: es aquel cuyo valor es la dirección en memoria de otro dato.<br />Datos estructurados<br />Registros: formada por varios elementos o campos que se refieren a una misma entidad, es heterogénea, estática y de acceso por nombre.<br />Lista: es una estructura de datos homogéneos, dinámicos y de acceso por clave. Se constituye por una cantidad no prefijada de registros, con al menos dos campos, uno de los cuales sirve para localizar al sgte. Elemento de la lista.<br />Árbol: es una estructura de datos homogénea y dinámica que ordena los elementos que la integran en forma de árbol, usando nodos y subárboles<br />Array: es una estructura de datos homogénea, estática y ordenada, formada por una cantidad fija de datos de un mismo tipo, cada uno tiene asociado uno o más índices que determinan la posición del dato en el array.<br />Cadenas de caracteres: está formada por una secuencia de caracteres en un orden determinado, por lo tanto es una estructura homogénea, estática y de acceso por posición.<br />SENTECNCIAS<br />Sentencias: Describen lo que debe hacer el algoritmo.<br /> <br />193929026543000Asignación: almacena un valor en una variable o variable o constante. Se representa con el operador  <br />Entrada/salida: Pueden almacenarse de tres formas: asociados con constantes, asignados a una variable o una sentencia de lectura.<br />Entrada: Leer lista de variables separadas por comas.<br />Salida: Escribir lista de variables o expresiones separadas por comas.<br />SENTENCIAS DE CONTROL DE FLUJOS DEL ALGORITMO<br />Secuenciales: todas las instrucciones se ejecutan una detrás de otra:<br />Ejemplo: calcular el área de un triangulo<br />Selectivas (bifurcaciones): se evalúa una expresión lógica o relacional, y en función de su resultado se selecciona cual de las posibles opciones se toma.<br />Ejemplo: dados dos números imprime el mayor de ellos.<br />OPERADORES CONDICIONANTES<br />SI (CONDICION) <br />                    ENTONCES<br />                     …………..<br />                     ……………<br /> SI-NO <br />………<br />FIN-SI<br />OPERADORES LOGICOS<br />Igual =<br />Mayor que ><br />Menor que <<br />Mayor o igual >=<br />Menor o igual <=<br />Diferente de <><br />Not : negación<br />OPERADORES RELACIONALES<br />Sirven para combinar dos o más condicionantes:<br />AND: dos condicionantes talque su salida es positiva únicamente cuando ambas condiciones son positivas.<br />OR: se utiliza para combinar dos condicionantes talque su salida es falsa únicamente cuando las dos condiciones son falsas.<br />NAND: es el inverso del and.<br />CICLOS REPETITIVOS CUALITATIVOS<br />HAGA HASTA: procesa determinada cantidad de registro o información en general hasta que la condición se cumpla su formato es el siguiente.<br />HAGA HASTA (CONDICION)<br />………………….<br />………………….<br />………………….<br />FIN –HH <br />HAGA MIENTRAS: su funcionamiento consiste en que  repite sus operaciones o líneas enmarcadas en el, mientras que la condición se planteada sea positiva.<br />HAGA MIENTRAS (CONDICION)<br />…………………<br />…………………<br />FIN-HM<br />  <br />CICLOS REPETITIVOS CUANTITATIVOS<br />FOR:  su formato es el siguiente:<br />                PARA OBJETO=[VAR INI]; OBJETO[VAR FIN]; OBJETO[INC 0 DEC]<br />…………..<br />…………..<br />FIN PARA<br />EJEMPLOS<br />Ejemplo del operador modulo<br />Ejemplo que muestra el promedio y muestra la utilización del ciclo para<br />Este ejemplo contiene líneas con distintos tipos de errores<br />Todos estos  ejemplos fueron tomados de la herramienta  PSEINT. Esta sirve para aprender la lógica de la progamacion.<br />ANALISIS DE ALGORITMO<br />El análisis de algoritmos nos permite medir la dificultad inherente de un problema y evaluar la eficiencia de un algoritmo. Como sabemos un algoritmo es la forma de resolver un problema de cualquier índole con la mejor solución posible, siendo así que para un solo problema se produce varios o muchos algoritmo dando una solución posible. Teniendo este concepto claro podemos decir que la finalidad del análisis de algoritmo,  es el que nos ayuda a saber cuál de todas estas soluciones es la más eficaz y eficiente para resolver el problema, el análisis se basa en varios parámetros, uno de ellos son el tiempo de ejecución y  los recursos consumidos por el algoritmo. <br />El análisis de algoritmo se remota del origen de las matemáticas, ya que los dos hacen estudios abstracto sin ningún tipo de implementación que rija la solución del problema. El análisis nace, para el estudio del comportamiento del algoritmo, ya que no quiere decir que si la solución es la más corta, será la solución correcta, ni viceversa. La solución más óptima será aquella que por medio de pocos recursos y menos tiempo de ejecución logre arrojar la solución más exacta a la repuesta esperada por el problema.<br />El análisis de algoritmos también les da una herramienta a los diseñadores de algoritmos para estimar si una solución propuesta es probable que satisfaga las restricciones de recursos de un problema. <br />VECTORES Y MATRICES<br />Definición de Vector:<br />Conjunto ordenado que contiene  un  nº  fijo  de  elementos  (su dimensión) de cualquier tipo válido definido con la condición de que todos deben ser del mismo tipo.<br /> Forma de declarar un vector:<br />Vector   tipo  nombre [índice mínimo .. índice máximo]<br /> Ejemplo:   Para  el  ejemplo  anterior  la  declaración  del vector quedaría de esta forma:<br />vector entero venta [1..40]<br />PROPIEDADES DE LOS VECTORES Y MATRICES<br />Todos los vectores y matrices se utilizan como conectores para almacenar datos relacionados.<br />Todos los datos almacenados en vectores y matrices tienen que ser del mismo tipo. se pueden crear vectores y matrices de tipos enteros, flotantes, etc. pero en un mismo vector o matriz no se pueden mezclar los tipos de datos.<br />A los elementos  almacenados en los vectores y matrices se accederá por medio de las posiciones que ocupan dentro del conjunto de los elementos de los vectores y matrices.<br />Operaciones con vectores<br />Asignación<br />En general, los lenguajes de programación  incluyen  como muchas instrucciones de lectura/escritura de vectores completos, siendo muy pocos la que tienen definidas otras operaciones primitivas con el vector tomado como dato único.<br />La estructura de  control  asociada  de  manera  natural con los vectores es la estructura de tipo \"
PARA\"
.<br />Ejemplo:<br />Algoritmo Inicializar_Vector<br />Vector de reales V [1 .. 100]<br />Para i de 1 hasta 100 hacer<br />V(i)    0.0<br />Fin para<br />Final<br />En algunos lenguajes se  permite  la  asignación  directa  entre vectores de  igual  dimensión y tipo.<br />La  condición  principal  para   poder  realizar  este  tipo  de asignaciones es que debe cumplirse que los  dos  vectores  sean  del mismo tipo y de la misma longitud.<br />u    v    el vector 'u' pasa a contener los datos de 'v'<br />Otra forma de hacer esta asignación  es a través de la asignación de elemento en elemento.  Este tipo de  asignación  es  la  que  se realiza de forma común en programación, y la que utilizaremos en nuestros algoritmos.<br />Para i de 1 hasta n hacer<br />u(i)    v(j)<br />Fin para<br />De  este  modo  veamos un ejemplo:  Tenemos dos vectores con  las  mismas  características  (tipo  y  longitud).  Se pretende intercambiar los datos entre dos vectores a    b.   Para ello utilizaremos un elemento de apoyo c.<br />Algoritmo Intercambio de vectores<br />    Variables enteras i, n, c<br />Vectores de enteros a [1..100], b[1..100]<br /> Escribir “Introduzca el número de elementos de los vectores”<br /> Leer n<br />- Para i de 1 a n<br />     Escribir “Introduzca el elemento a[“,i,”]”<br />     Leer a[i]<br />     Escribir “Introduzca el elemento b[“,i,”]”<br />     Leer b[i]<br />- Fin_Para<br />- Para i de 1 a n<br />     c       a[i]       Obsérvese como se realiza el proceso de <br />     a [i]   b[i]       intercambio. Necesitamos la variable de<br />     b [i]   c          apoyo para no perder por sobrescritura los datos de un vector.<br />- Fin_Para<br />- Para i de 1 a n<br />     Escribir “a[“,i,”]=”,a[i]<br />     Escribir “b[“,i,”]=”,b[i]<br />- Fin_Para<br />Final<br />NECESIDAD DEL PREDIMENSIONAMIENTO POR EXCESO<br />Es muy importante entender que la zona de declaración de variables de un algoritmo siempre se ejecuta antes que las sentencias del mismo. Debido a esto, es imposible colocar una variable como dimensión de un vector o matriz. Por ello, siempre que pretendamos manipular un número de datos escogido por el usuario, tendremos que recurrir a un predimensionamiento por exceso, considerando un tamaño superior al que éste escogerá. Habitualmente se puede poner 100 como dimensión por defecto, salvo casos en los que se vea claro que sean necesarios más elementos.<br />Lectura y Escritura<br />Como  hemos  visto  anteriormente,  en  algorítmica   podemos utilizar   la  asignación  de  forma  directa  o  por  medio  de  la asignación de los elementos.  De igual  forma  a  la  hora  de  leer podemos utilizar la lectura directa o lectura por elementos.<br />Ejemplo de lectura / escritura por elementos:<br />Para i de 1 a n hacer<br />Leer v(i) <br />Fin para<br />Para i de 1 a n hacer<br />Escribir v(i)<br />Fin para<br />Finalmente, decir que aunque por facilitar la comprensión de los ejemplos aquí mostrados, se “obviarán” las operaciones de lectura y escritura realizándolas en forma directa, los algoritmos de examen SIEMPRE deberán indicarse estas operaciones desarrolladas, es decir, por elementos.<br />Operaciones elementales con vectores numéricos<br />Suma de vectores<br />Algoritmo suma_vectores<br />Constante n= ...      Forma de resolver el problema del<br />Variable entera i                          predimensionamiento por exceso<br />Vectores reales a[1..n], b[1..n], c[1..n]<br />Leer a,b                                     LECTURA DIRECTA, NO USAR!<br />Para i de 1 a n hacer<br />c(i)    a(i)+b(i)<br />Fin para<br />Escribir c                                  ESCRITURA DIRECTA, NO USAR!<br />Final<br />Los vectores que se suman han  de  ser del mismo tipo y dimensión. <br />Ordenacion y Busqueda<br />Veamos  en  este   apartado   las   operaciones  comunes  en  el tratamiento de vectores.<br />Ordenación por selección<br />Supongamos  un  vector,  donde  parte  de  sus  elementos   están ordenados  y  otros  no.   Los  pasos  a  seguir  para  realizar  la ordenación son los siguientes:<br />rntdaHmzoksca1a2...ak-1ak.........ai......an<br />Elementos desordenados<br />a)  Para  realizar  la  ordenación  por  selección  se  hacen varios barridos del vector.  Primeramente cogemos el  primer  elemento  del vector  y  lo  comparamos con todos los elementos restantes buscando aquel elemento que posea el valor más pequeño.<br />rntdaHmzoksca1a2...ak-1ak.........ai......an<br />b) Una vez encontrado el  elemento  menor,  se coloca en la posición correspondiente, realizando un intercambio de  posiciones  entre  el elemento que hemos comparado y el que hemos encontrado.<br />antdrHmzoksca1a2...ak-1ak.........ai......an<br />c)  Una  vez  ordenado  el  primer  elemento,  realizamos  la  misma operación con los restantes. Finalmente el vector quedará ordenado.<br />acdhkMnorstza1a2...ak-1ak.........ai......an<br />El algoritmo de ordenación por selección es el siguiente.<br />Algoritmo Selección<br />constante n=...<br />variable entera i,j,k<br />real x     variable de apoyo<br />vector de reales a(1..n)<br />Leer a<br />Para i de 1 a n-1 hacer           el ultimo 'n' ya estará ordenado.<br />k    i                                     “k” es el índice del elemento menor a permutar<br />                                               con a[i], inicialmente lo ponemos igual que i<br />Para j de i+1 a n hacer<br />si a(j)  <  a(k) entones <br />k   j                         Si aparece un elemento de menor valor, fijamos<br />Finsi                                    “k” a su índice<br />Fin para<br />x    a(i)                             Permutamos a[i] con a[k]<br />a(i)    a(k)<br />a(k)    x<br />Fin para<br />Escribir a<br />Final<br />Búsqueda Lineal<br />Dado un vector  que  suponemos  desordenado, localizar un elemento que tenga un valor determinado requerirá un barrido a lo  largo  del mismo hasta encontrar dicho elemento.<br />Algoritmo búsqueda_lineal<br />constante n= ...<br />variable entera i<br />real x<br />vector de reales a(1..n)<br />Leer a<br />Leer x<br />y    1<br />mientras (a(i) x and i   n) hacer<br />i    i+1<br />fin mientras<br />si  i    n entonces<br />escribir (\"
Dato \"
;x;\"
 Encontrado en la posición: \"
;i)<br />sino escribir (\"
Dato no encontrado\"
)<br />finsi<br />Final<br />Matrices.<br />Podemos extender el concepto de vector a estructuras con dos índices, es decir, matrices. <br />De forma análoga a  la  utilización de un bucle, normalmente de tipo \"
para\"
,en el tratamiento de los elementos de  un  vector para  el  caso  de  una  matriz,  lógicamente, se requerirán dos bucles compuestos.<br />Al igual que en el caso  de vectores, todos los elementos de una matriz deben ser del mismo tipo. Declaración: <br />Matriz tipo nombre (índice fila mín..índice fila máx, índice col mín..índice col máx) <br />Los  conceptos  de  vector  y  matriz  no  son  sino   casos     particulares  de  una  estructura  general  de  \"
p\"
  dimensiones que denominaremos tabla.<br />Operaciones con matrices.<br />Asignación.<br />Por ejemplo: inicialización a cero:<br />para i de 1 a m hacer<br />para j de 1 a n hacer<br />a(i,j)    0.0<br />fin para<br />fin para<br />Definición de matriz identidad <br />para i de 1 a n hacer<br />para j de 1 a n hacer<br />si i=j entonces <br />I(i,j)    1<br />sino   I(i,j)    0<br />finsi<br />fin para<br />fin para<br />Asignación de valores introducidos por el usuario:<br />para i de 1 a m hacer<br />para j de 1 a n hacer<br />leer a(i,j)<br />fin para<br />fin para<br />Al igual que con los vectores, a efectos de simplificar los algoritmos de ejemplo, expresaremos en ocasiones la lectura y escritura de forma abreviada (NO PERMITIDO EL EJERCICIOS DE EXAMEN):<br />leer a<br />escribir a<br />Operaciones elementales con matrices numéricas.        <br /> Suma de matrices.<br />Algoritmo    suma de matrices<br />constantes   m=..., n=...<br />variables enteras   i, j<br />matrices reales     a(1..m,1..n), b(1..m,1..n), c(1..m,1..n) <br />leer  a, b<br />para j de 1 a m hacer<br />para j de 1 a n hacer<br />c(i,j)    a(i,j) + b(i,j)<br />fin para<br />fin para<br />escribir c<br />Final<br />Producto de una matriz por un escala<br />Algoritmo    producto por un escalar<br />constantes   m=..., n=...<br />variables enteras   i, j<br />variable real       x<br />matrices reales     a(1..m,1..n), b(1..m,1..n)<br />leer a<br />leer x<br />para i de 1 a m hacer<br />para j de 1 a n hacer<br />b(i,j)    x * a(i,j)<br />fin para<br />fin para<br />escribir b<br />Final<br />Producto matricial<br />Algoritmo    producto matricial<br />constantes   m=..., n=..., q=...<br />variables enteras   i, j, k<br />matrices reales     a(1..m,1..n), b(1..n,1..q), c(1..m,1..q)<br />leer a, b<br />para i de 1 a m hacer<br />para j de 1 a q hacer<br />c(i,j)    0.0<br />para k de 1 a n hacer<br />c(i,j)    c(i,j) + a(i,k)*b(k,j)<br />fin para<br />fin para<br />fin para<br />escribir c<br />Final<br />HISTORIA E INSTALACION DE NETBEANS<br />Java es un lenguaje de programación orientado a objetos que comaprte gran parte de su sintaxis con C y C++. Java es uno de los lenguajes más poderosos que existen actualmente y desde la versión 6 es un proyecto open source, por lo que tiene el soporte de toda una comunidad de programadores, además de Sun Microsystems que fueron los creadores originales. En 2005 Java se utilizaba en uno de cada cuatro proyectos, casi diez por ciento por encima de su siguiente competidor (C++) y ha seguido creciendo. Se estima que un noventa porciento de las computadoras cuentan con una máquina virtual de Java, además de que todos los celulares y una gran cantidad de dispositivos móviles también cuentan con Java.<br />NetBeans es un entorno de desarrollo integrado (IDE por sus siglas en inglés). Esto quiere decir que integra todas las herramientas que necesitamos para poder desarrollar. Originalmente la programación en Java era algo complicada porque Java cuenta con una enorme cantidad de librearías y funciones que era preciso aprenderse de memoria, viendo esto muchas compañías construyeron diferentes entornos de programación para facilitar la tarea del programador. Entre los más populares surgió Eclipse que reinó como el único y más importante IDE de Java durante varios años. Sun Microsystems desarrollo su propio IDE, que tenía la ventaja de que fue creado por las mismas personas que crearon Java años antes, este IDE fue NetBeans y después de varios años de desarrollo ha llegado a ser tan útil y poderoso como Eclipse o quizás un poco más.<br />PARA INSTALAR NETBEANS SE HACE LO SIGUIENTE<br />Lo primero que debemos hacer es descargar el kit de desarrollo de Java y el entorno de programación NetBeans. Podemos conseguir estas dos herramientas en el site oficial de Sun Microsystems. Dentro de la página de descargas debemos descargar el JDK con NetBeans. <br />53911585026500Una vez que hayamos descargado el paquete debemos correr el instalador. Después de aceptar la licencia nos pregunta dónde queremos instalar y al final instala todos los componentes necesarios. Una vez terminado de instalar debemos buscar el ícono de NetBeans en el escritorio o en el menú inicio. <br />Corremos el programa haciendo doble click y nos lleva a la pantalla principal que es similar a esta:<br />PASOS PARA CREAR UN PROYECTO EN NETBEANS IDE 6.9.1<br />INICIAMOS LA APLICACIÓN  Y APARECERA LA SIGUIENTE VENTANA<br />LUEGO DAMOS CLICK EN ARCHIVO Y  A NUEVO PROYECTO<br />-628654262755<br />EN LA SIGUIENTE VENTANA SELECCIONAMOS  JAVA APLICACIÓN<br />CLICK EN SIGUIENTE Y LE DAMOS UN NOMBRE A NUESTRO PROYECTO Y CLIC EN TERMINAR<br />Y FINALMENTE  EN ESTA VENTANA PODEMOS VISUALIZAR LA APLICACIÓN YA CREADA, EN EL PANEL SUPERIOR  IZQUIERDO  Y EL ESPACIO DE TRABAJO EN LA PARTE CENTRAL Y LISTO<br />EJEMPLOS RESUELTOS<br />Para los siguientes ejemplos utilizamos herramientas para el desarrollo de algoritmo y aplicaciones de software. Los programas utilizados son Pseint y NetBeans 6.9.1<br />En algunos ejemplo se podrán apreciar los diagramas de flujo de datos, este fue realizado por la herramienta Pseint.<br />Hacer un pseudocodigo que imprima los numeros del 1 al 100.<br />Diagrama de flujo<br />23431524701500<br />Algoritmo<br />Código realizado con java<br />package contador1;<br />/**<br /> *<br /> * @author Adrian Gonzalez<br /> */<br />public class Main {<br />    /**<br />     * @param args the command line arguments<br />     */<br />    public static void main(String[] args) {<br />        int contador = 1;<br />        while (contador <= 100) {<br />            System.out.println (contador);<br />            contador = contador+1;<br />        }<br />    }<br />}<br />2. Hacer un pseudocodigo que imprima los numeros del 100 al 0, en orden<br />decreciente.<br />package contador2;<br />/**<br /> *<br /> * @author Adrian Gonzalez<br /> */<br />public class Main {<br />    /**<br />     * @param args the command line arguments<br />     */<br />    public static void main(String[] args) {<br />        int contador = 100;<br />        while (contador >= 0) {<br />            System.out.println (contador);<br />            contador = contador-1;<br />    }<br />  }<br />}<br />3.-Hacer un pseudocodigo que imprima los numeros pares entre 0 y 100.<br />package pares;<br />/**<br /> *<br /> * @author Adrian Gonzalez<br /> */<br />public class Main {<br />    /**<br />     * @param args the command line arguments<br />     */<br />    public static void main(String[] args) {<br />        int contador = 2;<br />        while (contador <= 100) {<br />            System.out.println (contador);<br />            contador = contador+2;<br />    }<br />  }<br />}<br />4.-Hacer un programa que imprima la suma de los 100 primeros numeros.<br />package suma;<br />/**<br /> *<br /> * @author Adrian Gonzalez<br /> */<br />public class Main {<br />    /**<br />     * @param args the command line arguments<br />     */<br />    public static void main(String[] args) {<br />        int contador = 1,suma = 0;<br />        while (contador <= 100) {<br />            suma= suma+contador;<br />            System.out.println (contador);<br />            contador = contador+1;<br />    }<br />       System.out.println (\"
la suma de los 100 primeros numero es: \"
+suma);<br />  }<br />}<br />5.-Hacer un pseudocódigo que imprima los numeros impares hasta el 100 y que<br />imprima cuantos impares hay.<br />package impares;<br />/**<br /> *<br /> * @author Adrian Gonzalez<br /> */<br />public class Main {<br />    /**<br />     * @param args the command line arguments<br />     */<br />    public static void main(String[] args) {<br />        int contador = 0,i = 1;<br />        while (i < 100) {<br />            System.out.println (i);<br />            i = i+2;<br />            contador = contador+1;<br />    }<br />       System.out.println (\"
hay \"
+ contador+\"
 numeros impares\"
);<br />  }<br />}<br />    <br />6.-Hacer un pseudocodigo que imprima todos los números naturales que hay.<br />package natural;<br />import java.io.*;<br />/**<br /> *<br /> * @author Adrian Gonzalez<br /> */<br />public class Main {<br />    /**<br />     * @param args the command line arguments<br />     */<br />    public static void main(String[] args) throws IOException {<br />        int i=0,numero=0;<br />        BufferedReader obj = new BufferedReader(new InputStreamReader(System.in));<br />        System.out.println(\"
Ingrese un numero\"
);<br />        String tex = obj.readLine();<br />        numero = Integer.parseInt(tex);<br />while (i< numero) {<br />    i = i+1;<br />    System.out.println(i);<br />    <br />       }<br />    }<br />}<br />7.-Introducir tantas frases como queramos y contarlas.<br />package frases;<br />import java.io.*;<br />/**<br /> *<br /> * @author Adrian Gonzalez<br /> */<br />public class Main {<br />    /**<br />     * @param args the command line arguments<br />     */<br />    public static void main(String[] args) throws IOException {<br />        String decicion=\"
s\"
,frases=\"
\"
;<br />        int contador = 0;<br />       while ((decicion == null ? \"
s\"
 == null : decicion.equals(\"
s\"
))|(decicion == null ? \"
S\"
 == null : decicion.equals(\"
S\"
))){<br />           BufferedReader obj = new BufferedReader(new InputStreamReader(System.in));<br />        System.out.println(\"
Ingrese una frase\"
);<br />        frases = obj.readLine();<br />        contador=contador+1;<br />        System.out.println(\"
Presione (S) para ingresar otra frase o solamente enter para salir\"
);<br />        decicion = obj.readLine();<br />       }<br />        System.out.println(\"
El numero de frases escritas es: \"
+contador);<br />    }<br />}<br />8.-Hacer un pseudocodigo que solo nos permita introducir S o N.<br />package son;<br />import java.io.*;<br />/**<br /> *<br /> * @author Adrian Gonzalez<br /> */<br />public class Main {<br />    /**<br />     * @param args the command line arguments<br />     */<br />    public static void main(String[] args) throws IOException {<br />        String decicion = \"
\"
;<br />        while (!decicion.equals(\"
s\"
) && !decicion.equals(\"
n\"
)) {<br />            BufferedReader obj = new BufferedReader(new InputStreamReader(System.in));<br />            System.out.println(\"
Ingrese s o n\"
);<br />            decicion = obj.readLine();<br />        }<br />    }<br />}<br />9.-Introducir un numero por teclado. Que nos diga si es positivo o negativo.<br />package Clase_negativa_positiva;<br />import java.io.*;<br />public class Main {<br />    public static void main(String[] args)throws IOException {<br />    <br />     InputStreamReader isr=new InputStreamReader(System.in);<br />     BufferedReader br=new BufferedReader(isr);<br />     System.out.println(\"
DIGITE EL NUMERO A CALCULAR \"
);<br />     String texto=br.readLine();<br />     int numero=Integer.parseInt(texto);<br />     if(numero<0){<br />     <br />     System.out.println(\"
EL NUMERO INGRESADO ES NEGATIVO\"
);<br />     }<br />     else  {<br />       System.out.println(\"
EL NUMERO INGRESADO ES POSITIVO\"
);<br />    }<br />  }<br />}<br />10.-Introducir un numero por teclado. Que nos diga si es par o impar.<br />package paridad;<br />import java.io.*;<br />/**<br /> *<br /> * @author Adrian Gonzalez<br /> */<br />public class Main {<br />    /**<br />     * @param args the command line arguments<br />     */<br />    public static void main(String[] args) throws IOException {<br />        int num = 0;<br />        BufferedReader obj = new BufferedReader(new InputStreamReader(System.in));<br />        System.out.println(\"
Ingrese el primer numero\"
);<br />        String tex = obj.readLine();<br />        num = Integer.parseInt(tex);<br />        if ((num % 2) == 0) {<br />            System.out.println(\"
el numero es par\"
);<br />        } else {<br />            System.out.println(\"
el numero es impar\"
);<br />        }<br />    }<br />}<br />11.-Imprimir y contar los multiplos de 3 desde la unidad hasta un número que<br />Introducimos por teclado.<br />package multiplo_3;<br />import java.io.*;<br />/**<br /> *<br /> * @author Adrian Gonzalez<br /> */<br />public class Main {<br />    /**<br />     * @param args the command line arguments<br />     */<br />    public static void main(String[] args) throws IOException {<br />        int i=3,numero=0,contador=0;<br />        BufferedReader obj = new BufferedReader(new InputStreamReader(System.in));<br />        System.out.println(\"
Ingrese el primer numero\"
);<br />        String tex = obj.readLine();<br />         numero = Integer.parseInt(tex);<br />        while (i <= numero) {<br />            if ((i % 3) == 0) {<br />                System.out.println(i);<br />                contador = contador + 1;<br />            }<br />            i = i + 1;<br />        }<br />        System.out.println(\"
hay: \"
 + contador+  \"
 numeros multiplos\"
 );<br />    }<br />  }<br />12.-Hacer un pseudocodigo que imprima los números del 1 al 100. Que calcule la suma de todos los números pares por un lado, y por otro, la de todos los impares.<br />package suma_par_impar;<br />/**<br /> *<br /> * @author Adrian Gonzalez<br /> */<br />public class Main {<br />    /**<br />     * @param args the command line arguments<br />     */<br />    public static void main(String[] args) {<br />        int i = 1, sumapares = 0, sumaimpares = 0;<br />        while (i <= 100) {<br />            System.out.println(i);<br />            if ((i % 2) == 0) {<br />                sumapares = sumapares + i;<br />            }<br />             else {<br />                sumaimpares = sumaimpares + i;<br />            }<br />            i=i+1;<br />        }<br />        System.out.println(\"
La suma de los numeros pares es: \"
+sumapares);<br />        System.out.println(\"
La suma de los numeros impares es: \"
+sumaimpares);<br />    }<br />}<br />13.-Imprimir y contar los numeros que son multiplos de 2 o de 3 que hay entre 1 y 100.<br />package multiplos_2_3;<br />/**<br /> *<br /> * @author Adrian Gonzalez<br /> */<br />public class Main {<br />    /**<br />     * @param args the command line arguments<br />     */<br />    public static void main(String[] args) {<br />        int i = 1, contador = 0;<br />        while (i <= 100) {<br />            if ((i % 2 == 0) | (i % 3 == 0)) {<br />                contador = contador + 1;<br />                System.out.println(i);<br />            }<br />            i = i + 1;<br />        }<br />        System.out.println(\"
El numero de multiplos es: \"
 + contador);<br />    }<br />}<br />14.-Hacer un pseudocodigo que imprima el mayor y el menor de una serie de cinco números que vamos introduciendo por teclado.<br />package mayor_menor;<br />import java.io.*;<br />/**<br /> *<br /> * @author Adrian Gonzalez<br /> */<br />public class Main {<br />    /**<br />     * @param args the command line arguments<br />     */<br />    public static void main(String[] args) throws IOException {<br />        int contador = 0, numero = 0, nummaximo = 0, numminimo = 1000000;<br />        while (contador < 5) {<br />            BufferedReader obj = new BufferedReader(new InputStreamReader(System.in));<br />            System.out.println(\"
Ingrese el primer numero\"
);<br />            String tex = obj.readLine();<br />            numero = Integer.parseInt(tex);<br />            if (numero > nummaximo) {<br />                nummaximo = numero;<br />            }<br />            if (numero < numminimo) {<br />                numminimo = numero;<br />            }<br />            contador = contador + 1;<br />        }<br />        System.out.println(\"
El numero mayor es: \"
 + nummaximo);<br />        System.out.println(\"
El numero mayor es: \"
 + numminimo);<br />    }<br />}<br />15.-Introducir dos números por teclado. Imprimir los números naturales que hay entre ambos números empezando por el m s pequeño, contar cuantos hay y cuántos de ellos son pares. Calcular la suma de los impares.<br />package ejemplo_15;<br />import java.io.*;<br />/**<br /> *<br /> * @author Mrangel<br /> */<br />public class Main {<br />    /**<br />     * @param args the command line arguments<br />     */<br />    public static void main(String[] args) throws IOException {<br />        // TODO code application logic here<br />       int numero1 = 0, numero2 = 0, auxiliar = 0, contador = 0, pares =0, sumaimpares = 0;<br />       InputStreamReader isr=new InputStreamReader(System.in);<br />       BufferedReader br=new BufferedReader(isr);<br />       System.out.println(\"
digite el primer numero\"
);<br />       String texto=br.readLine();<br />        numero1=Integer.parseInt(texto);<br />         System.out.println(\"
digite el segundo numero\"
);<br />       String texto1=br.readLine();<br />        numero2=Integer.parseInt(texto1);<br />        if (numero1>numero2){<br />                auxiliar = numero1;<br />numero1 = numero2;<br />numero2 = auxiliar;<br />        }<br />        while(numero1 <= numero2){<br />        System.out.println(numero1);<br />        contador  += 1;<br />        if (numero1%2==0){<br />        pares +=1;<br />        }else{<br />        sumaimpares =sumaimpares+numero1;<br />        }<br />        numero1 +=1;<br />        }<br />        System.out.println(\"
hay  \"
  +   contador  +  \"
  numeros de intervalos\"
);<br />        System.out.println(\"
hay  \"
  +  pares  +  \"
  numeros pares\"
);<br />System.out.println(\"
La suma de los numeros impares es:  \"
  +  sumaimpares);<br />    }<br />}<br />16.-Imprimir diez veces la serie de números del 1 al 10.<br />package repeticion_1_a_10;<br />/**<br /> *<br /> * @author Adrian Gonzalez<br /> */<br />public class Main {<br />    /**<br />     * @param args the command line arguments<br />     */<br />    public static void main(String[] args) {<br />        int repeticion = 0, numero = 1;<br />        while (repeticion < 10) {<br />            while (numero <= 10) {<br />                System.out.print(numero);<br />                numero = numero + 1;<br />            }<br />            repeticion = repeticion + 1;<br />        }<br />    }<br />}<br />17.-Imprimir, contar y sumar los múltiplos de 2 que hay entre una serie de números, tal que el segundo sea mayor o igual que el primero.<br /> <br />package ejemplo_17;<br />import java.io.*;<br />/**<br /> *<br /> * @author Mrangel<br /> */<br />public class Main {<br />    /**<br />     * @param args the command line arguments<br />     */<br />    public static void main(String[] args) throws IOException {<br />       int contador = 0;<br />int suma =0;<br />int numero1 = 0;<br />int numero2 =999;<br />        InputStreamReader isr=new InputStreamReader(System.in);<br />       BufferedReader br=new BufferedReader(isr);<br />       System.out.println(\"
digite el  numero\"
);<br />       String texto=br.readLine();<br />        numero1=Integer.parseInt(texto);<br />        System.out.println(\"
Digite un numero mayor o igual que el anterior\"
);<br />        String texto1=br.readLine();<br />        numero2=Integer.parseInt(texto1);<br />if  (numero1%2 == 0){<br />                   // System.out.println(numero1);<br />                contador  += 1;<br />suma  += numero1;<br />        <br />        numero1  += 1;<br />        }<br />        else{<br />        System.out.println(\"
 el  numero debe ser mayor que el primer\"
);<br />        }<br /> System.out.println(\"
Numeros de multiplos de 2 es: \"
  + contador);<br />System.out.println (\"
La suma de los multiplos de 2 es: \"
  + suma);<br />}<br />}<br />19.-Hacer un pseudocodigo que simule el funcionamiento de un reloj digital y que permita ponerlo en hora.<br />package reloj;<br />/**<br /> *<br /> * @author Mrangel<br /> */<br />import java.io.*;<br />public class Main {<br />    /**<br />     * @param args the command line arguments<br />     */<br />    public static void main(String[] args) throws IOException {<br />        int horas = 0;<br />int minutos = 0;<br />int segundos = 0;<br /> InputStreamReader isr=new InputStreamReader(System.in);<br />       BufferedReader br=new BufferedReader(isr);<br />       System.out.println(\"
digite la hora\"
);<br />       String texto=br.readLine();<br />        horas=Integer.parseInt(texto);<br />         System.out.println(\"
digite los minutos\"
);<br />       String texto1=br.readLine();<br />        minutos=Integer.parseInt(texto1);<br />        System.out.println(\"
digite los segundos\"
);<br />       String texto2=br.readLine();<br />       segundos=Integer.parseInt(texto2);<br />       while (horas < 24 ){<br />while( minutos < 60 ){<br />while (segundos < 60 ){<br />                            System.out.println(\"
  \"
+ horas + \"
: \"
 + minutos + \"
:\"
 + segundos);<br />                      segundos  += 1;<br />                    }<br />minutos += 1;<br />segundos = 0;<br />           }<br />horas  += 1;<br />minutos = 0;<br />        }<br />horas = 0;<br />    }<br />}<br />20.-Calcular el factorial de un número.<br />package factorial;<br />import java.io.*;<br />/**<br /> *<br /> * @author Adrian Gonzalez<br /> */<br />public class Main {<br />   <br />    public static void main(String[] args) throws IOException {<br />        int factorial = 1,numero=0;<br />        BufferedReader obj = new BufferedReader(new InputStreamReader(System.in));<br />            System.out.println(\"
Ingrese el primer numero\"
);<br />            String tex = obj.readLine();<br />            numero = Integer.parseInt(tex);<br />            if (numero < 0){<br />                System.out.println(\"
no tiene factorial\"
);<br />            }<br /> else{<br />                while (numero > 1){<br />                    factorial=factorial*numero;<br />                    numero=numero-1;<br />                }<br /> }<br />   System.out.println(\"
el factorial: \"
+factorial);<br />    }<br />}<br />21.-Hacer un programa que calcule independientemente la suma de los pares y los impares de los números entre 1 y 1000, utilizando un switch.<br />package ejemplo_21;<br />/**<br /> *<br /> * @author Mrangel<br /> */<br />public class Main {<br />    public static void main(String[] args) {<br />        // TODO code application logic here<br />       int par = 0;<br />       int impar =0;<br />        int sw = 0;<br />        int i = 1;<br />        while (i<=1000){<br />   if (sw==0){<br />      impar  += i;<br />         sw = 1;<br />   }else{<br />         par  += i;<br />         sw = 0;<br />            }<br />      i  += 1;<br />        }<br />      System.out.println(\"
La suma de los pares es: \"
);<br />       System.out.println(par);<br />System.out.println(\"
La suma de los impares es: \"
);<br /> System.out.println(impar);<br />    }<br />}<br />24.-Comprobar si un número mayor o igual que la unidad es primo.<br />package primos;<br />import java.io.*;<br />/**<br /> * @author Adrian Gonzalez<br /> */<br />public class Main {<br />    public static void main(String[] args) throws IOException {<br />        int contador = 0, numero = 0;<br />        while (contador <= 10) {<br />            BufferedReader obj = new BufferedReader(new InputStreamReader(System.in));<br />            System.out.println(\"
Ingrese el primer numero\"
);<br />            String tex = obj.readLine();<br />            numero = Integer.parseInt(tex);<br />            int divisores = 2;<br />            if (numero > 3) {<br />                int i = 2;<br />                while (i == numero) {<br />                    if (numero != i & numero % i == 0) {<br />                        divisores = divisores + 1;<br />                    }<br />                    i = i + 1;<br />                }<br />            }<br />            if (divisores <= 2) {<br />                System.out.println(numero + \"
 es primo\"
);<br />            } else {<br />                System.out.println(numero + \"
 no es primo y tiene \"
 + divisores + \"
 divisores entre 1 y \"
 + numero);<br />            }<br />            contador = contador + 1;<br />        }<br />    }<br />}<br />25.-Introducir un número menor de 5000 y pasarlo a numero romano.<br />Proceso sin_titulo<br />Escribir \"
digite el numero\"
;<br />Leer num;<br />      MIENTRAS num < 1 O num > 5000 HACER<br />         ESCRIBIR \"
N£mero: \"
<br />         ESCRIBIR num<br />      FINMIENTRAS<br />      col <- 15<br />      MIENTRAS num >= 1000 HACER<br />          ESCRIBIR \"
M\"
<br />         num <- num - 1000<br />         col <- col + 1<br />      FINMIENTRAS<br />      SI num >= 900 ENTONCES<br />          ESCRIBIR \"
CM\"
<br />         num <- num - 900<br />         col <- col + 2<br />      FINSI<br />      SI num >= 500 ENTONCES<br />          ESCRIBIR \"
D\"
<br />         num <- num - 500<br />         col <- col + 1<br />      FINSI<br />      MIENTRAS num >= 100 HACER<br />          ESCRIBIR \"
C\"
<br />         num <- num - 100<br />         col <- col + 1<br />      FINMIENTRAS<br />      SI num >= 90 ENTONCES<br />          ESCRIBIR \"
XC\"
<br />         num <- num - 90<br />         col <- col + 2<br />      FINSI<br />      SI num >= 50 ENTONCES<br />          ESCRIBIR \"
L\"
<br />         num <- num - 50<br />         col <- col + 1<br />      FINSI<br />      SI num >= 40 ENTONCES<br />          ESCRIBIR \"
XL\"
<br />         num <- num - 40<br />         col <- col + 2<br />      FINSI<br />      MIENTRAS num >= 10 HACER<br />          ESCRIBIR \"
X\"
<br />         num <- num - 10<br />         col <- col + 1<br />      FINMIENTRAS<br />      SI num = 9 ENTONCES<br />          ESCRIBIR \"
IX\"
<br />         num <- num - 9<br />         col <- col + 2<br />      FINSI<br />      SI num >= 5 ENTONCES<br />          ESCRIBIR \"
V\"
<br />         num <- num - 5<br />         col <- col + 1<br />      FINSI<br />      SI num >= 4 ENTONCES<br />          ESCRIBIR \"
IV\"
<br />         num <- num - 4<br />         col <- col + 2<br />      FINSI<br />      MIENTRAS num > 0 HACER<br />          ESCRIBIR \"
I\"
<br />         num <- num - 1<br />         col <- col + 1<br />      FINMIENTRAS<br />FinProceso<br />package numeros_romanos;<br />import java.io.*;<br />/**<br /> *<br /> * @author Mrangel<br /> */<br />public class Main {<br />    /**<br />     * @param args the command line arguments<br />     */<br />    public static void main(String[] args) throws IOException {<br />        // TODO code application logic here<br />         InputStreamReader isr=new InputStreamReader(System.in);<br />       BufferedReader br=new BufferedReader(isr);<br />       System.out.println(\"
digite el  numero\"
);<br />       String texto=br.readLine();<br />        int num=Integer.parseInt(texto);<br />        <br />        while( num < 1 | num > 5000) {<br />        // System.out.println(\"
 numero\"
);<br />         System.out.println(num);<br />        }<br />      while( num >= 1000){<br />          System.out.println(\"
M\"
 );<br />         num  -= 1000;<br />        }<br />      if( num >= 900){<br />          System.out.println(\"
CM\"
);<br />         num  -= 900;<br />        }<br />        if (num  >= 500){<br />         System.out.println(\"
D\"
);<br />         num  -= 500;<br />        }<br />      while( num >= 100){<br />          System.out.println(\"
C\"
);<br />         num  -= 100;<br />        }<br />      if (num >= 90){<br />          System.out.println(\"
XC\"
);<br />      }<br />         num  -= 90;<br />      if (num >= 50){<br />        System.out.println(\"
L\"
);<br />         num  -= 50;<br />    }<br />      if (num >= 40){<br />System.out.println(\"
XL\"
);<br />         num  -= 40;<br />        }<br />      while (num >= 10){<br />      System.out.println(\"
X\"
);<br />         num  -= 10;<br />        }<br />      if( num == 9){<br />      System.out.println(\"
IX\"
);<br />         num -= 9;<br />        }<br />      if (num >= 5){<br />      System.out.println(\"
V\"
);<br />        num  -= 5;<br />        }<br />      if (num >= 4){<br />       System.out.println(\"
IV\"
);<br />       num  -= 4;<br />        }<br />      while (num >= 0){<br />       System.out.println(\"
I\"
);<br />         num  -= 1;<br />        }<br />    }<br />}<br />26.- hacer un ejemplo que utilice vectores.<br />package vectores;<br />/**<br /> *<br /> * @author Adrian Gonzalez<br /> */<br />public class Main {<br />    /**<br />     * @param args the command line arguments<br />     */<br />    public static void main(String[] args) {<br />          <br />int matriz[][] = new int[3][];<br />matriz[0] = new int[2];<br />matriz[1] = new int[3];<br />matriz[2] = new int[4];<br />// Ponemos datos en el array<br />for ( int i=0; i < 3; i++ ) {<br />for ( int j=0; j < matriz[i].length; j++ )<br />matriz[i][j] = i * j;<br />}<br />// y vemos su contenido, utilizando un bucle for<br />for ( int i=0; i < 3; i++ ) {<br />for ( int j=0; j < matriz[i].length; j++ )<br />System.out.print( matriz[i][j] );<br />System.out.println();<br />}<br />// Intetamos acceder a un elemento que esta fuera de los limites del array<br />System.out.println( \"
Elemento fuera de limites del array\"
 );<br />matriz[4][0] = 7;<br />// El compilador lanzara una excepción de tipo ArrayIndexOutOfBounds<br />}<br />}<br />    <br />CONCLUSIONES<br />Se puede concluir las importancia que tienes los algoritmos para la solución de problemas, ya que por medio de este se puede diseñar un procedimiento que llevara pasos lógicos para darle la respuesta más cercana y optima a un problema dado.  <br />Se concluye, que un problema dado tienes distintas soluciones y que por medio del análisis de algoritmos podemos saber cuál de todas esas posibles soluciones sería la más adecuada y cuál de ellas satisface  todos los requerimientos del problema. <br />Las matrices y vectores nos ayudan a almacenar grandes cantidades de información, y nos permiten encontrar cualquier elemento almacenado, de forma más sencilla.<br />REFERENCIAS<br />Consultado el 05 de febrero de 2011 en la página web: http://es.wikipedia.org/wiki/Algoritmo#An.C3.A1lisis_de_algoritmos <br />Consultado el 05 de febrero de 2011 en la página web : www.oocities.com/info.../analisis_de_algoritmo/Notacion_o_grande.doc<br />Consultado el 05 de febrero de 2011 en la página web: http://www.isa.cie.uva.es/~maria/tema3.pdf<br />Consultado el 06 de febrero de 2011 en la página web:<br />http://www.monografias.com/trabajos11/alcom/alcom.shtml#mar<br />Consultado el 04 de febrero de 2011 en la página web:<br />http://colabora.inacap.cl/sedes/ssur/Asignatura%20Indtroduccion%20a%20la%20Programacn/An%C3%A1lisis%20de%20Algoritmo/Manual-Analisis%20de%20Algoritmos_v1.pdf<br />Consultado el 26 de febrero de 2011 en la página web:<br />http://elvex.ugr.es/decsai/java/pdf/6A-Arrays.pdf<br />Consultado el 27 de febrero de 2011 en la página web:<br />http://serdis.dis.ulpgc.es/~itop-ib/Algoritmica/tema4-ll.doc<br />Consultado el 01 de marzo de 2011 en la página web:<br />http://www.magusoft.net/compuv/01_Netbeans.html<br />
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii
Analisis de algoritmo ii

Más contenido relacionado

DOCX
Algoritmos
DOC
Variables
PPTX
Algebra junior rico2
PPTX
Evaluación de expresiones - Método divide y vencerás
PPTX
algoritmo
PPTX
Algoritmo Matematicas
PDF
Tipos algoritmos
DOCX
Introduccion a la computacion, Algoritmos.
Algoritmos
Variables
Algebra junior rico2
Evaluación de expresiones - Método divide y vencerás
algoritmo
Algoritmo Matematicas
Tipos algoritmos
Introduccion a la computacion, Algoritmos.

La actualidad más candente (20)

PDF
Tipos de datos variables expresiones
PPT
Unidad 1.1 PROGRAMACION I
PDF
Algoritmica
PPTX
Introducción a la Programación
PPT
Entidades primitivas para algoritmos
DOCX
Operadores aritméticos, lógicos, relacionales.
PDF
Conceptos basicos de programacion
PPTX
Capitulo i modelos_matematicos_y_errores,_parte_1[1]
DOCX
Algoritmos, lenguajes de programación, datos, tipos de datos y datos primitivos.
DOCX
Algoritmos de entrada, proceso y salida
PDF
Unidad II
PDF
Algoritmos
PPTX
Diseño Estructurado de Algoritmos
PPTX
Ejercicios
DOCX
Análisis semántico
DOC
PDF
Algoritmos por-omor-azuaje2
DOCX
Tema 5 computabilidad y algoritmos
PPTX
Tarea 6
PPTX
Tipos de datos variables expresiones
Unidad 1.1 PROGRAMACION I
Algoritmica
Introducción a la Programación
Entidades primitivas para algoritmos
Operadores aritméticos, lógicos, relacionales.
Conceptos basicos de programacion
Capitulo i modelos_matematicos_y_errores,_parte_1[1]
Algoritmos, lenguajes de programación, datos, tipos de datos y datos primitivos.
Algoritmos de entrada, proceso y salida
Unidad II
Algoritmos
Diseño Estructurado de Algoritmos
Ejercicios
Análisis semántico
Algoritmos por-omor-azuaje2
Tema 5 computabilidad y algoritmos
Tarea 6
Publicidad

Destacado (20)

PDF
Instalar windows xp
PPT
Bloque de cierre
PPTX
Inicio clases escuela luis uribe orrego
PPTX
Santiago solis.roberto supe c.ap
PPS
Web 2.0 Mapa
PDF
Subsistemas del curriculo
DOCX
Plan de accion
DOCX
Tipos de cyberbullying
DOC
Ensayo tecnicas comunicacion
PPTX
Diaposuitiva red joven
PPTX
Album de fotografias
DOCX
PDF
228181 programa de formacion
PPTX
Tarjetas madre
PDF
Rostro vectorizado tatis
DOCX
Plan de aula 2
DOCX
Carolina
PPTX
10 consejos para cuidar tu mini
PPTX
Esquema estadístico de conductividad de materiales para ondas
PPSX
Presentación8
Instalar windows xp
Bloque de cierre
Inicio clases escuela luis uribe orrego
Santiago solis.roberto supe c.ap
Web 2.0 Mapa
Subsistemas del curriculo
Plan de accion
Tipos de cyberbullying
Ensayo tecnicas comunicacion
Diaposuitiva red joven
Album de fotografias
228181 programa de formacion
Tarjetas madre
Rostro vectorizado tatis
Plan de aula 2
Carolina
10 consejos para cuidar tu mini
Esquema estadístico de conductividad de materiales para ondas
Presentación8
Publicidad

Similar a Analisis de algoritmo ii (20)

DOCX
algortimos
PPT
Fundamentos programación
PPT
Entidades Primitivas Para Algoritmos
PDF
Algoritmos 02
DOCX
Algoritmo variables, constantes, tipos de datos y asignacion
PPTX
PPTX
Algoritmo
PDF
PPT
Algoritmos
PDF
Algoritmos TECNICO EN DESARROLLO DE SOFTWARE
PDF
Unidad i-guia1
PPT
Fundamentos-de-Algoritmos.ppt
PDF
1.2.3.- Pseudocódigo
PPT
Introducción a la Informática - Los Algoritmos
DOCX
Algoritmos
PPTX
algoritmos y fundamentos de programacion
PDF
DOCX
PPTX
01 metprogramacion
PPT
Algoritmos
algortimos
Fundamentos programación
Entidades Primitivas Para Algoritmos
Algoritmos 02
Algoritmo variables, constantes, tipos de datos y asignacion
Algoritmo
Algoritmos
Algoritmos TECNICO EN DESARROLLO DE SOFTWARE
Unidad i-guia1
Fundamentos-de-Algoritmos.ppt
1.2.3.- Pseudocódigo
Introducción a la Informática - Los Algoritmos
Algoritmos
algoritmos y fundamentos de programacion
01 metprogramacion
Algoritmos

Analisis de algoritmo ii

  • 1. ALGORITMOS Y ANALISI DE ALGORITMOS<br />ADRIAN GONZALEZ<br />MAURICIO RANGEL<br />ING. JOSE EGURROLA<br />UNIVERSIDAD COOPERATIVA DE COLOMBIA<br />FACULTA DE INGENIERIA<br />SANTA MARTA<br />01/03-2011<br />JUSTIFICACION<br /> Este trabajo fue realizado con el fin de demostrar la importancia que tiene los algoritmos para la realización de aplicaciones computacionales, que desde que apareció ha sido y seguirá siendo una herramienta útil para dar solución a procedimientos de problemas habituales. Dando como nacimiento el análisis de algoritmos, que es la ciencia que estudia el comportamiento de los algoritmos, en otras palabras, se encarga de demostrar con hechos, cuál de todos los algoritmos propuesto para la solución de un solo problema era el más óptimo a la repuesta esperada. <br />Otra razón es conocer las funcionalidades de los vectores y matrices, ya que este es un tema muy importante, porque estos nos permiten implementar la forma más eficiente de almacenar datos.<br />OBJETIVOS<br />Aclarar la definición, el funcionamiento, su utilización, características de los algoritmos.<br />Conocer las sentencias que harán posible la utilización de algoritmos óptimos, dejando en claro la función de cada uno de ellos y cuando utilizarlos.<br />Identificar cuando un algoritmo puede ser el más óptimo.<br />Analizar cada posible algoritmo de solución de cualquier problema dado.<br />Lograr a desarrollar algoritmos eficientes y eficaces.<br />Estudiar cada uno de los comportamientos de los algoritmos, teniendo en cuenta el tiempo de ejecución, recursos y el rendimiento.<br />Conocer las principales funciones de los vectores y matrices.<br />Analizar las definiciones y característica de los vectores y matrices.<br />Lograr implementar algoritmo eficiente por medio de la utilización de vectores y matrices.<br />Entender la diferencia entre vector y matriz.<br />INTRODUCCION<br /> En el siguiente trabajo se definirá las distintas funciones de uso, de los algoritmos para la realización de soluciones óptimas que más adelante serán aplicaciones eficientes y eficaces. Encontraremos los componentes de los algoritmos con su significado y como aplicarlos, declararemos las sentencias necesarias para desarrollar soluciones a partir de algoritmos y como poder analizar las posibles soluciones encontradas para un problema. Se mostrara la historia y características de los algoritmos, definiendo paso a paso los elementos más importantes del tema. También el comprender los distintos conceptos de vectores y matrices, dejando claro su utilización, usos, operaciones, declaraciones y sus distintas características.<br />HISTORIA DE LOS ALGORITMOS<br />Un algoritmo es un conjunto de operaciones y procedimientos que deben seguirse para resolver un problema. La palabra algoritmo se deriva del nombre latinizado del gran Matemático Árabe Mohamed Ibn Al Kow Rizmi, el cual escribió sobre los años 800 y 825 su obra Quitad Al Mugabala, donde se recogía el sistema de numeración hindú y el concepto del cero. Fue Fibinacci, el que tradujo la obra al latín y el inicio con la palabra: Algoritmi Dicit. El lenguaje algorítmico es aquel por medio al cual se realiza un análisis previo del problema a resolver y encontrar un método que permita resolverlo. El conjunto de todas las operaciones a realizar y el orden en que se deben efectuarse, se le denomina algoritmo. Es un método para resolver un problema mediante una serie de datos precisos, definidos y finitos.<br />ALGORITMO: Es una secuencia finita de operaciones que resuelve un problema en un tiempo finito.<br />Sus características son:<br />Finitos: Debe acabar en algún momento.<br />Eficientes: Deben ocupar la mínima memoria y minimizar el tiempo de ejecución.<br />Legibles: El texto que lo describe debe ser claro, tal que permita entenderlo y leerlo fácilmente.<br />Modificables: Estarán diseñados de modo que sus posteriores modificaciones sean fáciles de realizar, incluso por programadores diferentes a sus propios autores.<br />Modulares: La filosofía utilizada para su diseño debe favorecer la división del problema en módulos pequeños.<br />Único punto de entrada, único punto de salida: A los algoritmos y a los módulos que lo integran se entra por un sólo punto, inicio, y se sale por un sólo punto también, fin.<br />ELEMENTOS DE UN ALGORITMO<br />Un algoritmos consta de datos y sentencias, estos datos son almacenados en variables las cuales son involucrados en expresiones. Las sentencias describen las acciones que pueden ser ejecutadas, en general realizan cálculos, entradas/salidas y control de flujo del algoritmo. <br />VARIABLES, CONSTANTES Y EXPRESIONES<br />Variable: Elemento del algoritmo que posee un valor, conocido por un nombre o identificador y que pertenece a un tipo de dato definido al inicio del algoritmo.<br />Debe ser declarada antes de usarse <br />En un algoritmo la declaración consta de una sentencia que especifica: el tipo de dato, su nombre y un valor inicialen algunas ocasiones.<br />Constante: los elementos del algoritmo que no cambian de valor a lo largo del algoritmo.<br />Las constantes deben ser inicializadas de acuerdo con el tipo de dato al que pertenecen<br />Expresión: es una combinación de variables, constantes, valores constantes, operadores y funciones especiales que, en cada momento, al evaluarla tiene un valor concreto.<br />Las expresiones más representativas son las numéricas y las lógicas<br />Las expresiones numéricas tienen como resultado datos numéricos, las operaciones entre paréntesis se evalúan primero, Las operaciones aritméticas se evalúan según el orden de prioridad.<br />Las expresiones lógicas son las que ofrecen como resultado después de su operación un valor lógico.<br />Los operadores lógicos que involucran son:<br /> AND, OR, NOT y los relacionales: <, >, ==, <=, >=, ~= <br />TIPOS DE DATOS<br />Pueden ser: <br />Enteros: Representan números positivos o negativos sin decimales.<br />Reales: Almacenan un valor.<br />Carácter: Representan elementos individuales de un conjunto finito de caracteres. <br />Lógico o booleano: Solo pueden tener dos posibles valores verdadero o falso.<br />Enumerado: este tipo de dato requiere que el programador defina el rango de valores que puede tomar.<br />Subrango: este tipo de dato se define a partir del tipo de dato entero, carácter o enumerado, con solo decir que el tipo de dato definido podrá tomar un conjunto de valores limitado del original.<br />Puntero: es aquel cuyo valor es la dirección en memoria de otro dato.<br />Datos estructurados<br />Registros: formada por varios elementos o campos que se refieren a una misma entidad, es heterogénea, estática y de acceso por nombre.<br />Lista: es una estructura de datos homogéneos, dinámicos y de acceso por clave. Se constituye por una cantidad no prefijada de registros, con al menos dos campos, uno de los cuales sirve para localizar al sgte. Elemento de la lista.<br />Árbol: es una estructura de datos homogénea y dinámica que ordena los elementos que la integran en forma de árbol, usando nodos y subárboles<br />Array: es una estructura de datos homogénea, estática y ordenada, formada por una cantidad fija de datos de un mismo tipo, cada uno tiene asociado uno o más índices que determinan la posición del dato en el array.<br />Cadenas de caracteres: está formada por una secuencia de caracteres en un orden determinado, por lo tanto es una estructura homogénea, estática y de acceso por posición.<br />SENTECNCIAS<br />Sentencias: Describen lo que debe hacer el algoritmo.<br /> <br />193929026543000Asignación: almacena un valor en una variable o variable o constante. Se representa con el operador <br />Entrada/salida: Pueden almacenarse de tres formas: asociados con constantes, asignados a una variable o una sentencia de lectura.<br />Entrada: Leer lista de variables separadas por comas.<br />Salida: Escribir lista de variables o expresiones separadas por comas.<br />SENTENCIAS DE CONTROL DE FLUJOS DEL ALGORITMO<br />Secuenciales: todas las instrucciones se ejecutan una detrás de otra:<br />Ejemplo: calcular el área de un triangulo<br />Selectivas (bifurcaciones): se evalúa una expresión lógica o relacional, y en función de su resultado se selecciona cual de las posibles opciones se toma.<br />Ejemplo: dados dos números imprime el mayor de ellos.<br />OPERADORES CONDICIONANTES<br />SI (CONDICION) <br /> ENTONCES<br /> …………..<br /> ……………<br /> SI-NO <br />………<br />FIN-SI<br />OPERADORES LOGICOS<br />Igual =<br />Mayor que ><br />Menor que <<br />Mayor o igual >=<br />Menor o igual <=<br />Diferente de <><br />Not : negación<br />OPERADORES RELACIONALES<br />Sirven para combinar dos o más condicionantes:<br />AND: dos condicionantes talque su salida es positiva únicamente cuando ambas condiciones son positivas.<br />OR: se utiliza para combinar dos condicionantes talque su salida es falsa únicamente cuando las dos condiciones son falsas.<br />NAND: es el inverso del and.<br />CICLOS REPETITIVOS CUALITATIVOS<br />HAGA HASTA: procesa determinada cantidad de registro o información en general hasta que la condición se cumpla su formato es el siguiente.<br />HAGA HASTA (CONDICION)<br />………………….<br />………………….<br />………………….<br />FIN –HH <br />HAGA MIENTRAS: su funcionamiento consiste en que repite sus operaciones o líneas enmarcadas en el, mientras que la condición se planteada sea positiva.<br />HAGA MIENTRAS (CONDICION)<br />…………………<br />…………………<br />FIN-HM<br /> <br />CICLOS REPETITIVOS CUANTITATIVOS<br />FOR: su formato es el siguiente:<br /> PARA OBJETO=[VAR INI]; OBJETO[VAR FIN]; OBJETO[INC 0 DEC]<br />…………..<br />…………..<br />FIN PARA<br />EJEMPLOS<br />Ejemplo del operador modulo<br />Ejemplo que muestra el promedio y muestra la utilización del ciclo para<br />Este ejemplo contiene líneas con distintos tipos de errores<br />Todos estos ejemplos fueron tomados de la herramienta PSEINT. Esta sirve para aprender la lógica de la progamacion.<br />ANALISIS DE ALGORITMO<br />El análisis de algoritmos nos permite medir la dificultad inherente de un problema y evaluar la eficiencia de un algoritmo. Como sabemos un algoritmo es la forma de resolver un problema de cualquier índole con la mejor solución posible, siendo así que para un solo problema se produce varios o muchos algoritmo dando una solución posible. Teniendo este concepto claro podemos decir que la finalidad del análisis de algoritmo, es el que nos ayuda a saber cuál de todas estas soluciones es la más eficaz y eficiente para resolver el problema, el análisis se basa en varios parámetros, uno de ellos son el tiempo de ejecución y los recursos consumidos por el algoritmo. <br />El análisis de algoritmo se remota del origen de las matemáticas, ya que los dos hacen estudios abstracto sin ningún tipo de implementación que rija la solución del problema. El análisis nace, para el estudio del comportamiento del algoritmo, ya que no quiere decir que si la solución es la más corta, será la solución correcta, ni viceversa. La solución más óptima será aquella que por medio de pocos recursos y menos tiempo de ejecución logre arrojar la solución más exacta a la repuesta esperada por el problema.<br />El análisis de algoritmos también les da una herramienta a los diseñadores de algoritmos para estimar si una solución propuesta es probable que satisfaga las restricciones de recursos de un problema. <br />VECTORES Y MATRICES<br />Definición de Vector:<br />Conjunto ordenado que contiene un nº fijo de elementos (su dimensión) de cualquier tipo válido definido con la condición de que todos deben ser del mismo tipo.<br /> Forma de declarar un vector:<br />Vector tipo nombre [índice mínimo .. índice máximo]<br /> Ejemplo: Para el ejemplo anterior la declaración del vector quedaría de esta forma:<br />vector entero venta [1..40]<br />PROPIEDADES DE LOS VECTORES Y MATRICES<br />Todos los vectores y matrices se utilizan como conectores para almacenar datos relacionados.<br />Todos los datos almacenados en vectores y matrices tienen que ser del mismo tipo. se pueden crear vectores y matrices de tipos enteros, flotantes, etc. pero en un mismo vector o matriz no se pueden mezclar los tipos de datos.<br />A los elementos almacenados en los vectores y matrices se accederá por medio de las posiciones que ocupan dentro del conjunto de los elementos de los vectores y matrices.<br />Operaciones con vectores<br />Asignación<br />En general, los lenguajes de programación incluyen como muchas instrucciones de lectura/escritura de vectores completos, siendo muy pocos la que tienen definidas otras operaciones primitivas con el vector tomado como dato único.<br />La estructura de control asociada de manera natural con los vectores es la estructura de tipo \" PARA\" .<br />Ejemplo:<br />Algoritmo Inicializar_Vector<br />Vector de reales V [1 .. 100]<br />Para i de 1 hasta 100 hacer<br />V(i) 0.0<br />Fin para<br />Final<br />En algunos lenguajes se permite la asignación directa entre vectores de igual dimensión y tipo.<br />La condición principal para poder realizar este tipo de asignaciones es que debe cumplirse que los dos vectores sean del mismo tipo y de la misma longitud.<br />u v el vector 'u' pasa a contener los datos de 'v'<br />Otra forma de hacer esta asignación es a través de la asignación de elemento en elemento. Este tipo de asignación es la que se realiza de forma común en programación, y la que utilizaremos en nuestros algoritmos.<br />Para i de 1 hasta n hacer<br />u(i) v(j)<br />Fin para<br />De este modo veamos un ejemplo: Tenemos dos vectores con las mismas características (tipo y longitud). Se pretende intercambiar los datos entre dos vectores a b. Para ello utilizaremos un elemento de apoyo c.<br />Algoritmo Intercambio de vectores<br /> Variables enteras i, n, c<br />Vectores de enteros a [1..100], b[1..100]<br /> Escribir “Introduzca el número de elementos de los vectores”<br /> Leer n<br />- Para i de 1 a n<br /> Escribir “Introduzca el elemento a[“,i,”]”<br /> Leer a[i]<br /> Escribir “Introduzca el elemento b[“,i,”]”<br /> Leer b[i]<br />- Fin_Para<br />- Para i de 1 a n<br /> c a[i] Obsérvese como se realiza el proceso de <br /> a [i] b[i] intercambio. Necesitamos la variable de<br /> b [i] c apoyo para no perder por sobrescritura los datos de un vector.<br />- Fin_Para<br />- Para i de 1 a n<br /> Escribir “a[“,i,”]=”,a[i]<br /> Escribir “b[“,i,”]=”,b[i]<br />- Fin_Para<br />Final<br />NECESIDAD DEL PREDIMENSIONAMIENTO POR EXCESO<br />Es muy importante entender que la zona de declaración de variables de un algoritmo siempre se ejecuta antes que las sentencias del mismo. Debido a esto, es imposible colocar una variable como dimensión de un vector o matriz. Por ello, siempre que pretendamos manipular un número de datos escogido por el usuario, tendremos que recurrir a un predimensionamiento por exceso, considerando un tamaño superior al que éste escogerá. Habitualmente se puede poner 100 como dimensión por defecto, salvo casos en los que se vea claro que sean necesarios más elementos.<br />Lectura y Escritura<br />Como hemos visto anteriormente, en algorítmica podemos utilizar la asignación de forma directa o por medio de la asignación de los elementos. De igual forma a la hora de leer podemos utilizar la lectura directa o lectura por elementos.<br />Ejemplo de lectura / escritura por elementos:<br />Para i de 1 a n hacer<br />Leer v(i) <br />Fin para<br />Para i de 1 a n hacer<br />Escribir v(i)<br />Fin para<br />Finalmente, decir que aunque por facilitar la comprensión de los ejemplos aquí mostrados, se “obviarán” las operaciones de lectura y escritura realizándolas en forma directa, los algoritmos de examen SIEMPRE deberán indicarse estas operaciones desarrolladas, es decir, por elementos.<br />Operaciones elementales con vectores numéricos<br />Suma de vectores<br />Algoritmo suma_vectores<br />Constante n= ... Forma de resolver el problema del<br />Variable entera i predimensionamiento por exceso<br />Vectores reales a[1..n], b[1..n], c[1..n]<br />Leer a,b LECTURA DIRECTA, NO USAR!<br />Para i de 1 a n hacer<br />c(i) a(i)+b(i)<br />Fin para<br />Escribir c ESCRITURA DIRECTA, NO USAR!<br />Final<br />Los vectores que se suman han de ser del mismo tipo y dimensión. <br />Ordenacion y Busqueda<br />Veamos en este apartado las operaciones comunes en el tratamiento de vectores.<br />Ordenación por selección<br />Supongamos un vector, donde parte de sus elementos están ordenados y otros no. Los pasos a seguir para realizar la ordenación son los siguientes:<br />rntdaHmzoksca1a2...ak-1ak.........ai......an<br />Elementos desordenados<br />a) Para realizar la ordenación por selección se hacen varios barridos del vector. Primeramente cogemos el primer elemento del vector y lo comparamos con todos los elementos restantes buscando aquel elemento que posea el valor más pequeño.<br />rntdaHmzoksca1a2...ak-1ak.........ai......an<br />b) Una vez encontrado el elemento menor, se coloca en la posición correspondiente, realizando un intercambio de posiciones entre el elemento que hemos comparado y el que hemos encontrado.<br />antdrHmzoksca1a2...ak-1ak.........ai......an<br />c) Una vez ordenado el primer elemento, realizamos la misma operación con los restantes. Finalmente el vector quedará ordenado.<br />acdhkMnorstza1a2...ak-1ak.........ai......an<br />El algoritmo de ordenación por selección es el siguiente.<br />Algoritmo Selección<br />constante n=...<br />variable entera i,j,k<br />real x variable de apoyo<br />vector de reales a(1..n)<br />Leer a<br />Para i de 1 a n-1 hacer el ultimo 'n' ya estará ordenado.<br />k i “k” es el índice del elemento menor a permutar<br /> con a[i], inicialmente lo ponemos igual que i<br />Para j de i+1 a n hacer<br />si a(j) < a(k) entones <br />k j Si aparece un elemento de menor valor, fijamos<br />Finsi “k” a su índice<br />Fin para<br />x a(i) Permutamos a[i] con a[k]<br />a(i) a(k)<br />a(k) x<br />Fin para<br />Escribir a<br />Final<br />Búsqueda Lineal<br />Dado un vector que suponemos desordenado, localizar un elemento que tenga un valor determinado requerirá un barrido a lo largo del mismo hasta encontrar dicho elemento.<br />Algoritmo búsqueda_lineal<br />constante n= ...<br />variable entera i<br />real x<br />vector de reales a(1..n)<br />Leer a<br />Leer x<br />y 1<br />mientras (a(i) x and i n) hacer<br />i i+1<br />fin mientras<br />si i n entonces<br />escribir (\" Dato \" ;x;\" Encontrado en la posición: \" ;i)<br />sino escribir (\" Dato no encontrado\" )<br />finsi<br />Final<br />Matrices.<br />Podemos extender el concepto de vector a estructuras con dos índices, es decir, matrices. <br />De forma análoga a la utilización de un bucle, normalmente de tipo \" para\" ,en el tratamiento de los elementos de un vector para el caso de una matriz, lógicamente, se requerirán dos bucles compuestos.<br />Al igual que en el caso de vectores, todos los elementos de una matriz deben ser del mismo tipo. Declaración: <br />Matriz tipo nombre (índice fila mín..índice fila máx, índice col mín..índice col máx) <br />Los conceptos de vector y matriz no son sino casos particulares de una estructura general de \" p\" dimensiones que denominaremos tabla.<br />Operaciones con matrices.<br />Asignación.<br />Por ejemplo: inicialización a cero:<br />para i de 1 a m hacer<br />para j de 1 a n hacer<br />a(i,j) 0.0<br />fin para<br />fin para<br />Definición de matriz identidad <br />para i de 1 a n hacer<br />para j de 1 a n hacer<br />si i=j entonces <br />I(i,j) 1<br />sino I(i,j) 0<br />finsi<br />fin para<br />fin para<br />Asignación de valores introducidos por el usuario:<br />para i de 1 a m hacer<br />para j de 1 a n hacer<br />leer a(i,j)<br />fin para<br />fin para<br />Al igual que con los vectores, a efectos de simplificar los algoritmos de ejemplo, expresaremos en ocasiones la lectura y escritura de forma abreviada (NO PERMITIDO EL EJERCICIOS DE EXAMEN):<br />leer a<br />escribir a<br />Operaciones elementales con matrices numéricas. <br /> Suma de matrices.<br />Algoritmo suma de matrices<br />constantes m=..., n=...<br />variables enteras i, j<br />matrices reales a(1..m,1..n), b(1..m,1..n), c(1..m,1..n) <br />leer a, b<br />para j de 1 a m hacer<br />para j de 1 a n hacer<br />c(i,j) a(i,j) + b(i,j)<br />fin para<br />fin para<br />escribir c<br />Final<br />Producto de una matriz por un escala<br />Algoritmo producto por un escalar<br />constantes m=..., n=...<br />variables enteras i, j<br />variable real x<br />matrices reales a(1..m,1..n), b(1..m,1..n)<br />leer a<br />leer x<br />para i de 1 a m hacer<br />para j de 1 a n hacer<br />b(i,j) x * a(i,j)<br />fin para<br />fin para<br />escribir b<br />Final<br />Producto matricial<br />Algoritmo producto matricial<br />constantes m=..., n=..., q=...<br />variables enteras i, j, k<br />matrices reales a(1..m,1..n), b(1..n,1..q), c(1..m,1..q)<br />leer a, b<br />para i de 1 a m hacer<br />para j de 1 a q hacer<br />c(i,j) 0.0<br />para k de 1 a n hacer<br />c(i,j) c(i,j) + a(i,k)*b(k,j)<br />fin para<br />fin para<br />fin para<br />escribir c<br />Final<br />HISTORIA E INSTALACION DE NETBEANS<br />Java es un lenguaje de programación orientado a objetos que comaprte gran parte de su sintaxis con C y C++. Java es uno de los lenguajes más poderosos que existen actualmente y desde la versión 6 es un proyecto open source, por lo que tiene el soporte de toda una comunidad de programadores, además de Sun Microsystems que fueron los creadores originales. En 2005 Java se utilizaba en uno de cada cuatro proyectos, casi diez por ciento por encima de su siguiente competidor (C++) y ha seguido creciendo. Se estima que un noventa porciento de las computadoras cuentan con una máquina virtual de Java, además de que todos los celulares y una gran cantidad de dispositivos móviles también cuentan con Java.<br />NetBeans es un entorno de desarrollo integrado (IDE por sus siglas en inglés). Esto quiere decir que integra todas las herramientas que necesitamos para poder desarrollar. Originalmente la programación en Java era algo complicada porque Java cuenta con una enorme cantidad de librearías y funciones que era preciso aprenderse de memoria, viendo esto muchas compañías construyeron diferentes entornos de programación para facilitar la tarea del programador. Entre los más populares surgió Eclipse que reinó como el único y más importante IDE de Java durante varios años. Sun Microsystems desarrollo su propio IDE, que tenía la ventaja de que fue creado por las mismas personas que crearon Java años antes, este IDE fue NetBeans y después de varios años de desarrollo ha llegado a ser tan útil y poderoso como Eclipse o quizás un poco más.<br />PARA INSTALAR NETBEANS SE HACE LO SIGUIENTE<br />Lo primero que debemos hacer es descargar el kit de desarrollo de Java y el entorno de programación NetBeans. Podemos conseguir estas dos herramientas en el site oficial de Sun Microsystems. Dentro de la página de descargas debemos descargar el JDK con NetBeans. <br />53911585026500Una vez que hayamos descargado el paquete debemos correr el instalador. Después de aceptar la licencia nos pregunta dónde queremos instalar y al final instala todos los componentes necesarios. Una vez terminado de instalar debemos buscar el ícono de NetBeans en el escritorio o en el menú inicio. <br />Corremos el programa haciendo doble click y nos lleva a la pantalla principal que es similar a esta:<br />PASOS PARA CREAR UN PROYECTO EN NETBEANS IDE 6.9.1<br />INICIAMOS LA APLICACIÓN Y APARECERA LA SIGUIENTE VENTANA<br />LUEGO DAMOS CLICK EN ARCHIVO Y A NUEVO PROYECTO<br />-628654262755<br />EN LA SIGUIENTE VENTANA SELECCIONAMOS JAVA APLICACIÓN<br />CLICK EN SIGUIENTE Y LE DAMOS UN NOMBRE A NUESTRO PROYECTO Y CLIC EN TERMINAR<br />Y FINALMENTE EN ESTA VENTANA PODEMOS VISUALIZAR LA APLICACIÓN YA CREADA, EN EL PANEL SUPERIOR IZQUIERDO Y EL ESPACIO DE TRABAJO EN LA PARTE CENTRAL Y LISTO<br />EJEMPLOS RESUELTOS<br />Para los siguientes ejemplos utilizamos herramientas para el desarrollo de algoritmo y aplicaciones de software. Los programas utilizados son Pseint y NetBeans 6.9.1<br />En algunos ejemplo se podrán apreciar los diagramas de flujo de datos, este fue realizado por la herramienta Pseint.<br />Hacer un pseudocodigo que imprima los numeros del 1 al 100.<br />Diagrama de flujo<br />23431524701500<br />Algoritmo<br />Código realizado con java<br />package contador1;<br />/**<br /> *<br /> * @author Adrian Gonzalez<br /> */<br />public class Main {<br /> /**<br /> * @param args the command line arguments<br /> */<br /> public static void main(String[] args) {<br /> int contador = 1;<br /> while (contador <= 100) {<br /> System.out.println (contador);<br /> contador = contador+1;<br /> }<br /> }<br />}<br />2. Hacer un pseudocodigo que imprima los numeros del 100 al 0, en orden<br />decreciente.<br />package contador2;<br />/**<br /> *<br /> * @author Adrian Gonzalez<br /> */<br />public class Main {<br /> /**<br /> * @param args the command line arguments<br /> */<br /> public static void main(String[] args) {<br /> int contador = 100;<br /> while (contador >= 0) {<br /> System.out.println (contador);<br /> contador = contador-1;<br /> }<br /> }<br />}<br />3.-Hacer un pseudocodigo que imprima los numeros pares entre 0 y 100.<br />package pares;<br />/**<br /> *<br /> * @author Adrian Gonzalez<br /> */<br />public class Main {<br /> /**<br /> * @param args the command line arguments<br /> */<br /> public static void main(String[] args) {<br /> int contador = 2;<br /> while (contador <= 100) {<br /> System.out.println (contador);<br /> contador = contador+2;<br /> }<br /> }<br />}<br />4.-Hacer un programa que imprima la suma de los 100 primeros numeros.<br />package suma;<br />/**<br /> *<br /> * @author Adrian Gonzalez<br /> */<br />public class Main {<br /> /**<br /> * @param args the command line arguments<br /> */<br /> public static void main(String[] args) {<br /> int contador = 1,suma = 0;<br /> while (contador <= 100) {<br /> suma= suma+contador;<br /> System.out.println (contador);<br /> contador = contador+1;<br /> }<br /> System.out.println (\" la suma de los 100 primeros numero es: \" +suma);<br /> }<br />}<br />5.-Hacer un pseudocódigo que imprima los numeros impares hasta el 100 y que<br />imprima cuantos impares hay.<br />package impares;<br />/**<br /> *<br /> * @author Adrian Gonzalez<br /> */<br />public class Main {<br /> /**<br /> * @param args the command line arguments<br /> */<br /> public static void main(String[] args) {<br /> int contador = 0,i = 1;<br /> while (i < 100) {<br /> System.out.println (i);<br /> i = i+2;<br /> contador = contador+1;<br /> }<br /> System.out.println (\" hay \" + contador+\" numeros impares\" );<br /> }<br />}<br /> <br />6.-Hacer un pseudocodigo que imprima todos los números naturales que hay.<br />package natural;<br />import java.io.*;<br />/**<br /> *<br /> * @author Adrian Gonzalez<br /> */<br />public class Main {<br /> /**<br /> * @param args the command line arguments<br /> */<br /> public static void main(String[] args) throws IOException {<br /> int i=0,numero=0;<br /> BufferedReader obj = new BufferedReader(new InputStreamReader(System.in));<br /> System.out.println(\" Ingrese un numero\" );<br /> String tex = obj.readLine();<br /> numero = Integer.parseInt(tex);<br />while (i< numero) {<br /> i = i+1;<br /> System.out.println(i);<br /> <br /> }<br /> }<br />}<br />7.-Introducir tantas frases como queramos y contarlas.<br />package frases;<br />import java.io.*;<br />/**<br /> *<br /> * @author Adrian Gonzalez<br /> */<br />public class Main {<br /> /**<br /> * @param args the command line arguments<br /> */<br /> public static void main(String[] args) throws IOException {<br /> String decicion=\" s\" ,frases=\" \" ;<br /> int contador = 0;<br /> while ((decicion == null ? \" s\" == null : decicion.equals(\" s\" ))|(decicion == null ? \" S\" == null : decicion.equals(\" S\" ))){<br /> BufferedReader obj = new BufferedReader(new InputStreamReader(System.in));<br /> System.out.println(\" Ingrese una frase\" );<br /> frases = obj.readLine();<br /> contador=contador+1;<br /> System.out.println(\" Presione (S) para ingresar otra frase o solamente enter para salir\" );<br /> decicion = obj.readLine();<br /> }<br /> System.out.println(\" El numero de frases escritas es: \" +contador);<br /> }<br />}<br />8.-Hacer un pseudocodigo que solo nos permita introducir S o N.<br />package son;<br />import java.io.*;<br />/**<br /> *<br /> * @author Adrian Gonzalez<br /> */<br />public class Main {<br /> /**<br /> * @param args the command line arguments<br /> */<br /> public static void main(String[] args) throws IOException {<br /> String decicion = \" \" ;<br /> while (!decicion.equals(\" s\" ) && !decicion.equals(\" n\" )) {<br /> BufferedReader obj = new BufferedReader(new InputStreamReader(System.in));<br /> System.out.println(\" Ingrese s o n\" );<br /> decicion = obj.readLine();<br /> }<br /> }<br />}<br />9.-Introducir un numero por teclado. Que nos diga si es positivo o negativo.<br />package Clase_negativa_positiva;<br />import java.io.*;<br />public class Main {<br /> public static void main(String[] args)throws IOException {<br /> <br /> InputStreamReader isr=new InputStreamReader(System.in);<br /> BufferedReader br=new BufferedReader(isr);<br /> System.out.println(\" DIGITE EL NUMERO A CALCULAR \" );<br /> String texto=br.readLine();<br /> int numero=Integer.parseInt(texto);<br /> if(numero<0){<br /> <br /> System.out.println(\" EL NUMERO INGRESADO ES NEGATIVO\" );<br /> }<br /> else {<br /> System.out.println(\" EL NUMERO INGRESADO ES POSITIVO\" );<br /> }<br /> }<br />}<br />10.-Introducir un numero por teclado. Que nos diga si es par o impar.<br />package paridad;<br />import java.io.*;<br />/**<br /> *<br /> * @author Adrian Gonzalez<br /> */<br />public class Main {<br /> /**<br /> * @param args the command line arguments<br /> */<br /> public static void main(String[] args) throws IOException {<br /> int num = 0;<br /> BufferedReader obj = new BufferedReader(new InputStreamReader(System.in));<br /> System.out.println(\" Ingrese el primer numero\" );<br /> String tex = obj.readLine();<br /> num = Integer.parseInt(tex);<br /> if ((num % 2) == 0) {<br /> System.out.println(\" el numero es par\" );<br /> } else {<br /> System.out.println(\" el numero es impar\" );<br /> }<br /> }<br />}<br />11.-Imprimir y contar los multiplos de 3 desde la unidad hasta un número que<br />Introducimos por teclado.<br />package multiplo_3;<br />import java.io.*;<br />/**<br /> *<br /> * @author Adrian Gonzalez<br /> */<br />public class Main {<br /> /**<br /> * @param args the command line arguments<br /> */<br /> public static void main(String[] args) throws IOException {<br /> int i=3,numero=0,contador=0;<br /> BufferedReader obj = new BufferedReader(new InputStreamReader(System.in));<br /> System.out.println(\" Ingrese el primer numero\" );<br /> String tex = obj.readLine();<br /> numero = Integer.parseInt(tex);<br /> while (i <= numero) {<br /> if ((i % 3) == 0) {<br /> System.out.println(i);<br /> contador = contador + 1;<br /> }<br /> i = i + 1;<br /> }<br /> System.out.println(\" hay: \" + contador+ \" numeros multiplos\" );<br /> }<br /> }<br />12.-Hacer un pseudocodigo que imprima los números del 1 al 100. Que calcule la suma de todos los números pares por un lado, y por otro, la de todos los impares.<br />package suma_par_impar;<br />/**<br /> *<br /> * @author Adrian Gonzalez<br /> */<br />public class Main {<br /> /**<br /> * @param args the command line arguments<br /> */<br /> public static void main(String[] args) {<br /> int i = 1, sumapares = 0, sumaimpares = 0;<br /> while (i <= 100) {<br /> System.out.println(i);<br /> if ((i % 2) == 0) {<br /> sumapares = sumapares + i;<br /> }<br /> else {<br /> sumaimpares = sumaimpares + i;<br /> }<br /> i=i+1;<br /> }<br /> System.out.println(\" La suma de los numeros pares es: \" +sumapares);<br /> System.out.println(\" La suma de los numeros impares es: \" +sumaimpares);<br /> }<br />}<br />13.-Imprimir y contar los numeros que son multiplos de 2 o de 3 que hay entre 1 y 100.<br />package multiplos_2_3;<br />/**<br /> *<br /> * @author Adrian Gonzalez<br /> */<br />public class Main {<br /> /**<br /> * @param args the command line arguments<br /> */<br /> public static void main(String[] args) {<br /> int i = 1, contador = 0;<br /> while (i <= 100) {<br /> if ((i % 2 == 0) | (i % 3 == 0)) {<br /> contador = contador + 1;<br /> System.out.println(i);<br /> }<br /> i = i + 1;<br /> }<br /> System.out.println(\" El numero de multiplos es: \" + contador);<br /> }<br />}<br />14.-Hacer un pseudocodigo que imprima el mayor y el menor de una serie de cinco números que vamos introduciendo por teclado.<br />package mayor_menor;<br />import java.io.*;<br />/**<br /> *<br /> * @author Adrian Gonzalez<br /> */<br />public class Main {<br /> /**<br /> * @param args the command line arguments<br /> */<br /> public static void main(String[] args) throws IOException {<br /> int contador = 0, numero = 0, nummaximo = 0, numminimo = 1000000;<br /> while (contador < 5) {<br /> BufferedReader obj = new BufferedReader(new InputStreamReader(System.in));<br /> System.out.println(\" Ingrese el primer numero\" );<br /> String tex = obj.readLine();<br /> numero = Integer.parseInt(tex);<br /> if (numero > nummaximo) {<br /> nummaximo = numero;<br /> }<br /> if (numero < numminimo) {<br /> numminimo = numero;<br /> }<br /> contador = contador + 1;<br /> }<br /> System.out.println(\" El numero mayor es: \" + nummaximo);<br /> System.out.println(\" El numero mayor es: \" + numminimo);<br /> }<br />}<br />15.-Introducir dos números por teclado. Imprimir los números naturales que hay entre ambos números empezando por el m s pequeño, contar cuantos hay y cuántos de ellos son pares. Calcular la suma de los impares.<br />package ejemplo_15;<br />import java.io.*;<br />/**<br /> *<br /> * @author Mrangel<br /> */<br />public class Main {<br /> /**<br /> * @param args the command line arguments<br /> */<br /> public static void main(String[] args) throws IOException {<br /> // TODO code application logic here<br /> int numero1 = 0, numero2 = 0, auxiliar = 0, contador = 0, pares =0, sumaimpares = 0;<br /> InputStreamReader isr=new InputStreamReader(System.in);<br /> BufferedReader br=new BufferedReader(isr);<br /> System.out.println(\" digite el primer numero\" );<br /> String texto=br.readLine();<br /> numero1=Integer.parseInt(texto);<br /> System.out.println(\" digite el segundo numero\" );<br /> String texto1=br.readLine();<br /> numero2=Integer.parseInt(texto1);<br /> if (numero1>numero2){<br /> auxiliar = numero1;<br />numero1 = numero2;<br />numero2 = auxiliar;<br /> }<br /> while(numero1 <= numero2){<br /> System.out.println(numero1);<br /> contador += 1;<br /> if (numero1%2==0){<br /> pares +=1;<br /> }else{<br /> sumaimpares =sumaimpares+numero1;<br /> }<br /> numero1 +=1;<br /> }<br /> System.out.println(\" hay \" + contador + \" numeros de intervalos\" );<br /> System.out.println(\" hay \" + pares + \" numeros pares\" );<br />System.out.println(\" La suma de los numeros impares es: \" + sumaimpares);<br /> }<br />}<br />16.-Imprimir diez veces la serie de números del 1 al 10.<br />package repeticion_1_a_10;<br />/**<br /> *<br /> * @author Adrian Gonzalez<br /> */<br />public class Main {<br /> /**<br /> * @param args the command line arguments<br /> */<br /> public static void main(String[] args) {<br /> int repeticion = 0, numero = 1;<br /> while (repeticion < 10) {<br /> while (numero <= 10) {<br /> System.out.print(numero);<br /> numero = numero + 1;<br /> }<br /> repeticion = repeticion + 1;<br /> }<br /> }<br />}<br />17.-Imprimir, contar y sumar los múltiplos de 2 que hay entre una serie de números, tal que el segundo sea mayor o igual que el primero.<br /> <br />package ejemplo_17;<br />import java.io.*;<br />/**<br /> *<br /> * @author Mrangel<br /> */<br />public class Main {<br /> /**<br /> * @param args the command line arguments<br /> */<br /> public static void main(String[] args) throws IOException {<br /> int contador = 0;<br />int suma =0;<br />int numero1 = 0;<br />int numero2 =999;<br /> InputStreamReader isr=new InputStreamReader(System.in);<br /> BufferedReader br=new BufferedReader(isr);<br /> System.out.println(\" digite el numero\" );<br /> String texto=br.readLine();<br /> numero1=Integer.parseInt(texto);<br /> System.out.println(\" Digite un numero mayor o igual que el anterior\" );<br /> String texto1=br.readLine();<br /> numero2=Integer.parseInt(texto1);<br />if (numero1%2 == 0){<br /> // System.out.println(numero1);<br /> contador += 1;<br />suma += numero1;<br /> <br /> numero1 += 1;<br /> }<br /> else{<br /> System.out.println(\" el numero debe ser mayor que el primer\" );<br /> }<br /> System.out.println(\" Numeros de multiplos de 2 es: \" + contador);<br />System.out.println (\" La suma de los multiplos de 2 es: \" + suma);<br />}<br />}<br />19.-Hacer un pseudocodigo que simule el funcionamiento de un reloj digital y que permita ponerlo en hora.<br />package reloj;<br />/**<br /> *<br /> * @author Mrangel<br /> */<br />import java.io.*;<br />public class Main {<br /> /**<br /> * @param args the command line arguments<br /> */<br /> public static void main(String[] args) throws IOException {<br /> int horas = 0;<br />int minutos = 0;<br />int segundos = 0;<br /> InputStreamReader isr=new InputStreamReader(System.in);<br /> BufferedReader br=new BufferedReader(isr);<br /> System.out.println(\" digite la hora\" );<br /> String texto=br.readLine();<br /> horas=Integer.parseInt(texto);<br /> System.out.println(\" digite los minutos\" );<br /> String texto1=br.readLine();<br /> minutos=Integer.parseInt(texto1);<br /> System.out.println(\" digite los segundos\" );<br /> String texto2=br.readLine();<br /> segundos=Integer.parseInt(texto2);<br /> while (horas < 24 ){<br />while( minutos < 60 ){<br />while (segundos < 60 ){<br /> System.out.println(\" \" + horas + \" : \" + minutos + \" :\" + segundos);<br /> segundos += 1;<br /> }<br />minutos += 1;<br />segundos = 0;<br /> }<br />horas += 1;<br />minutos = 0;<br /> }<br />horas = 0;<br /> }<br />}<br />20.-Calcular el factorial de un número.<br />package factorial;<br />import java.io.*;<br />/**<br /> *<br /> * @author Adrian Gonzalez<br /> */<br />public class Main {<br /> <br /> public static void main(String[] args) throws IOException {<br /> int factorial = 1,numero=0;<br /> BufferedReader obj = new BufferedReader(new InputStreamReader(System.in));<br /> System.out.println(\" Ingrese el primer numero\" );<br /> String tex = obj.readLine();<br /> numero = Integer.parseInt(tex);<br /> if (numero < 0){<br /> System.out.println(\" no tiene factorial\" );<br /> }<br /> else{<br /> while (numero > 1){<br /> factorial=factorial*numero;<br /> numero=numero-1;<br /> }<br /> }<br /> System.out.println(\" el factorial: \" +factorial);<br /> }<br />}<br />21.-Hacer un programa que calcule independientemente la suma de los pares y los impares de los números entre 1 y 1000, utilizando un switch.<br />package ejemplo_21;<br />/**<br /> *<br /> * @author Mrangel<br /> */<br />public class Main {<br /> public static void main(String[] args) {<br /> // TODO code application logic here<br /> int par = 0;<br /> int impar =0;<br /> int sw = 0;<br /> int i = 1;<br /> while (i<=1000){<br /> if (sw==0){<br /> impar += i;<br /> sw = 1;<br /> }else{<br /> par += i;<br /> sw = 0;<br /> }<br /> i += 1;<br /> }<br /> System.out.println(\" La suma de los pares es: \" );<br /> System.out.println(par);<br />System.out.println(\" La suma de los impares es: \" );<br /> System.out.println(impar);<br /> }<br />}<br />24.-Comprobar si un número mayor o igual que la unidad es primo.<br />package primos;<br />import java.io.*;<br />/**<br /> * @author Adrian Gonzalez<br /> */<br />public class Main {<br /> public static void main(String[] args) throws IOException {<br /> int contador = 0, numero = 0;<br /> while (contador <= 10) {<br /> BufferedReader obj = new BufferedReader(new InputStreamReader(System.in));<br /> System.out.println(\" Ingrese el primer numero\" );<br /> String tex = obj.readLine();<br /> numero = Integer.parseInt(tex);<br /> int divisores = 2;<br /> if (numero > 3) {<br /> int i = 2;<br /> while (i == numero) {<br /> if (numero != i & numero % i == 0) {<br /> divisores = divisores + 1;<br /> }<br /> i = i + 1;<br /> }<br /> }<br /> if (divisores <= 2) {<br /> System.out.println(numero + \" es primo\" );<br /> } else {<br /> System.out.println(numero + \" no es primo y tiene \" + divisores + \" divisores entre 1 y \" + numero);<br /> }<br /> contador = contador + 1;<br /> }<br /> }<br />}<br />25.-Introducir un número menor de 5000 y pasarlo a numero romano.<br />Proceso sin_titulo<br />Escribir \" digite el numero\" ;<br />Leer num;<br /> MIENTRAS num < 1 O num > 5000 HACER<br /> ESCRIBIR \" N£mero: \" <br /> ESCRIBIR num<br /> FINMIENTRAS<br /> col <- 15<br /> MIENTRAS num >= 1000 HACER<br /> ESCRIBIR \" M\" <br /> num <- num - 1000<br /> col <- col + 1<br /> FINMIENTRAS<br /> SI num >= 900 ENTONCES<br /> ESCRIBIR \" CM\" <br /> num <- num - 900<br /> col <- col + 2<br /> FINSI<br /> SI num >= 500 ENTONCES<br /> ESCRIBIR \" D\" <br /> num <- num - 500<br /> col <- col + 1<br /> FINSI<br /> MIENTRAS num >= 100 HACER<br /> ESCRIBIR \" C\" <br /> num <- num - 100<br /> col <- col + 1<br /> FINMIENTRAS<br /> SI num >= 90 ENTONCES<br /> ESCRIBIR \" XC\" <br /> num <- num - 90<br /> col <- col + 2<br /> FINSI<br /> SI num >= 50 ENTONCES<br /> ESCRIBIR \" L\" <br /> num <- num - 50<br /> col <- col + 1<br /> FINSI<br /> SI num >= 40 ENTONCES<br /> ESCRIBIR \" XL\" <br /> num <- num - 40<br /> col <- col + 2<br /> FINSI<br /> MIENTRAS num >= 10 HACER<br /> ESCRIBIR \" X\" <br /> num <- num - 10<br /> col <- col + 1<br /> FINMIENTRAS<br /> SI num = 9 ENTONCES<br /> ESCRIBIR \" IX\" <br /> num <- num - 9<br /> col <- col + 2<br /> FINSI<br /> SI num >= 5 ENTONCES<br /> ESCRIBIR \" V\" <br /> num <- num - 5<br /> col <- col + 1<br /> FINSI<br /> SI num >= 4 ENTONCES<br /> ESCRIBIR \" IV\" <br /> num <- num - 4<br /> col <- col + 2<br /> FINSI<br /> MIENTRAS num > 0 HACER<br /> ESCRIBIR \" I\" <br /> num <- num - 1<br /> col <- col + 1<br /> FINMIENTRAS<br />FinProceso<br />package numeros_romanos;<br />import java.io.*;<br />/**<br /> *<br /> * @author Mrangel<br /> */<br />public class Main {<br /> /**<br /> * @param args the command line arguments<br /> */<br /> public static void main(String[] args) throws IOException {<br /> // TODO code application logic here<br /> InputStreamReader isr=new InputStreamReader(System.in);<br /> BufferedReader br=new BufferedReader(isr);<br /> System.out.println(\" digite el numero\" );<br /> String texto=br.readLine();<br /> int num=Integer.parseInt(texto);<br /> <br /> while( num < 1 | num > 5000) {<br /> // System.out.println(\" numero\" );<br /> System.out.println(num);<br /> }<br /> while( num >= 1000){<br /> System.out.println(\" M\" );<br /> num -= 1000;<br /> }<br /> if( num >= 900){<br /> System.out.println(\" CM\" );<br /> num -= 900;<br /> }<br /> if (num >= 500){<br /> System.out.println(\" D\" );<br /> num -= 500;<br /> }<br /> while( num >= 100){<br /> System.out.println(\" C\" );<br /> num -= 100;<br /> }<br /> if (num >= 90){<br /> System.out.println(\" XC\" );<br /> }<br /> num -= 90;<br /> if (num >= 50){<br /> System.out.println(\" L\" );<br /> num -= 50;<br /> }<br /> if (num >= 40){<br />System.out.println(\" XL\" );<br /> num -= 40;<br /> }<br /> while (num >= 10){<br /> System.out.println(\" X\" );<br /> num -= 10;<br /> }<br /> if( num == 9){<br /> System.out.println(\" IX\" );<br /> num -= 9;<br /> }<br /> if (num >= 5){<br /> System.out.println(\" V\" );<br /> num -= 5;<br /> }<br /> if (num >= 4){<br /> System.out.println(\" IV\" );<br /> num -= 4;<br /> }<br /> while (num >= 0){<br /> System.out.println(\" I\" );<br /> num -= 1;<br /> }<br /> }<br />}<br />26.- hacer un ejemplo que utilice vectores.<br />package vectores;<br />/**<br /> *<br /> * @author Adrian Gonzalez<br /> */<br />public class Main {<br /> /**<br /> * @param args the command line arguments<br /> */<br /> public static void main(String[] args) {<br /> <br />int matriz[][] = new int[3][];<br />matriz[0] = new int[2];<br />matriz[1] = new int[3];<br />matriz[2] = new int[4];<br />// Ponemos datos en el array<br />for ( int i=0; i < 3; i++ ) {<br />for ( int j=0; j < matriz[i].length; j++ )<br />matriz[i][j] = i * j;<br />}<br />// y vemos su contenido, utilizando un bucle for<br />for ( int i=0; i < 3; i++ ) {<br />for ( int j=0; j < matriz[i].length; j++ )<br />System.out.print( matriz[i][j] );<br />System.out.println();<br />}<br />// Intetamos acceder a un elemento que esta fuera de los limites del array<br />System.out.println( \" Elemento fuera de limites del array\" );<br />matriz[4][0] = 7;<br />// El compilador lanzara una excepción de tipo ArrayIndexOutOfBounds<br />}<br />}<br /> <br />CONCLUSIONES<br />Se puede concluir las importancia que tienes los algoritmos para la solución de problemas, ya que por medio de este se puede diseñar un procedimiento que llevara pasos lógicos para darle la respuesta más cercana y optima a un problema dado. <br />Se concluye, que un problema dado tienes distintas soluciones y que por medio del análisis de algoritmos podemos saber cuál de todas esas posibles soluciones sería la más adecuada y cuál de ellas satisface todos los requerimientos del problema. <br />Las matrices y vectores nos ayudan a almacenar grandes cantidades de información, y nos permiten encontrar cualquier elemento almacenado, de forma más sencilla.<br />REFERENCIAS<br />Consultado el 05 de febrero de 2011 en la página web: http://es.wikipedia.org/wiki/Algoritmo#An.C3.A1lisis_de_algoritmos <br />Consultado el 05 de febrero de 2011 en la página web : www.oocities.com/info.../analisis_de_algoritmo/Notacion_o_grande.doc<br />Consultado el 05 de febrero de 2011 en la página web: http://www.isa.cie.uva.es/~maria/tema3.pdf<br />Consultado el 06 de febrero de 2011 en la página web:<br />http://www.monografias.com/trabajos11/alcom/alcom.shtml#mar<br />Consultado el 04 de febrero de 2011 en la página web:<br />http://colabora.inacap.cl/sedes/ssur/Asignatura%20Indtroduccion%20a%20la%20Programacn/An%C3%A1lisis%20de%20Algoritmo/Manual-Analisis%20de%20Algoritmos_v1.pdf<br />Consultado el 26 de febrero de 2011 en la página web:<br />http://elvex.ugr.es/decsai/java/pdf/6A-Arrays.pdf<br />Consultado el 27 de febrero de 2011 en la página web:<br />http://serdis.dis.ulpgc.es/~itop-ib/Algoritmica/tema4-ll.doc<br />Consultado el 01 de marzo de 2011 en la página web:<br />http://www.magusoft.net/compuv/01_Netbeans.html<br />