lunes, 28 de noviembre de 2016

Tercer Parcial

En el tercer parcial el tema principal fueron los arreglos.


Arreglo

Un arreglo es una estructura de datos, o más técnicamente, un espacio de memoria que permite almacenar una colección de elementos, todos del mismo tipo.
Conviene imaginar un arreglo como una secuencia contigua de celdas (espacios de memoria), o casillas, en cada una de las cuales se puede guardar un elemento de la colección.


Tipos de Arreglos

Básicamente en programación los tipos de arreglos son:
*1* Arreglos unidimensionales
*2* Arreglos bidimensionales
*3* Arreglos multidimensionales

1) Un arreglo unidimensional es un tipo de datos estructurado que está formado de una colección finita y ordenada de datos del mismo tipo. Es la estructura natural para modelar listas de elementos iguales.


2) El arreglo bidimensional, al igual que el anterior, es un tipo de dato estructurado, finito ordenado y homogéneo. El acceso a ellos también es en forma directa por medio de un par de índices.
Los arreglos bidimensionales se usan para representar datos que pueden verse como una tabla con filas y columnas.

3) El arreglo multidimensional, también es un tipo de dato estructurado, que está compuesto por n dimensiones. Para hacer referencia a cada componente del arreglo es necesario utilizar n índices, uno para cada dimensión


Creación de Arreglos

Para crear un arreglo en PseInt se utiliza lo siguiente:

Dimensión Nombre[x]

donde x es la dimensión del arreglo y nombre el nombre del arreglo.


Ciclos Para

El ciclo for o para en español, es un ciclo repetitivo donde el usuario decide cuantas veces quiere que repita una pregunta en el algoritmo. La estructura de este ciclo es la siguiente.



Creación de Ciclos Para

para( expresión lógica) expresión incrementada.
instrucción
fin para

Los ciclos son importantes ya que son utilizados para recorrer arreglos y modificarlos.






sábado, 29 de octubre de 2016

2do Parcial


Aprendizajes en el 2do parcial.


Resultado de imagen para Condiciones IF
Los conocimientos que adquirí en el segundo parcial fueron sobre las diferentes estructuras de control:

Las condicionales como lo es el if, aprendimos a través de la practica, creando programas que utilizaran condiciones para realizar acciones.
Después comenzaron a introducirnos a ciclos, estos sirven para que una acción se repita hasta que una condición cambie, por ejemplo hasta que se responda a una pregunta correctamente, etc. Fue un proceso que ayudo a reducir los algoritmos para ser mas cortos y simples de entender.Resultado de imagen para Ciclos programacion





Todo esto fue complementado a traducir los algoritmos a diagramas de flujo utilizando el programa DFD, ahí se puede entender mejor el algoritmo ya que se explica de manera más visual que realizándolo por escrito.

Método de Ordenamiento

La Ordenación de burbuja (Bubble Sort en inglés)

 Es un sencillo algoritmo de ordenamiento. Funciona revisando cada elemento de la lista que va a ser ordenada con el siguiente, intercambiándolos de posición si están en el orden equivocado. Es necesario revisar varias veces toda la lista hasta que no se necesiten más intercambios, lo cual significa que la lista está ordenada.

El primer procedimiento del método de la burbuja es:

Generar un ciclo que inicie desde uno hasta el número de elementos del arreglo.
Generar un segundo ciclo dentro del anterior que inicie desde cero hasta el número de elementos del arreglo menos dos.
Dentro del segundo ciclo debe existir una comparación que determina el tipo de ordenamiento (ascendente o descendente) entre el primer elemento (posición generado por el segundo ciclo) y el segundo elemento (el que le  sigue), si la respuesta a la condición es verdadera se realiza un intercambio entre los dos elementos.
Para realizar el intercambio se genera un almacenamiento temporal, el cual guarda el dato del primer elemento, el segundo elemento toma el lugar del primero y en el lugar del segundo se coloca lo que contiene el almacenamiento temporal.
Resultado de imagen para metodo de ordenamiento burbuja
Un segundo procedimiento del método de la burbuja es:

Generar un ciclo que inicie desde cero hasta el número de elementos menos dos.
Generar un segundo ciclo desde el valor del ciclo anterior mas uno hasta el número de elementos menos uno;
Dentro del segundo ciclo debe existir una comparación que determina el tipo de ordenamiento (ascendente o descendente) entre el primer elemento (posición generada por el primer ciclo) y el segundo elemento (posición generada por el segundo ciclo), si la respuesta a la condición es verdadera se realiza un intercambio entre los dos elementos.
Para realizar el intercambio se genera un almacenamiento temporal, el cual guarda el dato del primer elemento, el segundo elemento toma el lugar del primero y en el lugar del segundo se coloca lo que contiene el almacenamiento temporal.

Un tercer procedimiento del método de la burbuja es el siguiente:

Generar un ciclo que inicie desde uno hasta el número de elementos menos uno.
Generar un segundo ciclo que inicie desde el número de elementos menos uno y mientras que ese valor sea mayor o igual al del ciclo anterior (con decrementos).
Dentro del segundo ciclo debe existir una comparación que determina el tipo de ordenamiento (ascendente o descendente) entre el primer elemento (posición generada por el segundo ciclo) y el segundo elemento (posición generada por el segundo ciclo menos uno), si la respuesta a la condición es verdadera se realiza un intercambio entre los dos elementos.
Para realizar el intercambio se genera un almacenamiento temporal, el cual guarda el dato del primer elemento, el segundo elemento toma el lugar del primero y en el lugar del segundo se coloca lo que contiene el almacenamiento temporal

Ordenamiento Shell

El método se denomina Shell en honor de su inventor Donald Shell. Su implementación original, requiere O(n2) comparaciones e intercambios en el peor caso. . Aunque es fácil desarrollar un sentido intuitivo de cómo funciona este algoritmo, es muy difícil analizar su tiempo de ejecución.

El algoritmo Shell sort mejora el ordenamiento por inserción comparando elementos separados por un espacio de varias posiciones. Esto permite que un elemento haga "pasos más grandes" hacia su posición esperada. Los pasos múltiples sobre los datos se hacen con tamaños de espacio cada vez más pequeños. El último paso del Shell sort es un simple ordenamiento por inserción, pero para entonces, ya está garantizado que los datos del vector están casi ordenados.
Resultado de imagen para metodo de ordenamiento shell
 El procedimiento para aplicar el algoritmo de shellsort es el siguiente:
Generar un ciclo que se encargue de controlar el tamaño que deben tener los incrementos.
Este ciclo debe iniciar con la división del tamaño del arreglo entre dos.
Mientras que el incremento sea mayor a cero debe continuar.
Y el cambio de incremento se elige de entre dos opciones: un uno o la división del incremento anterior entre dos.

Un segundo ciclo dentro del anterior, controla el número de comparaciones que se deben hacer según el tamaño del incremento.
El control de este ciclo debe iniciar con el incremento generado anteriormente.

Mientras el control del ciclo sea menor que el tamaño del arreglo.
El control debe cambiar de uno en uno.

Un tercer ciclo dentro del segundo controla en que momento se detienen las comparaciones o se hacen los posibles intercambios entre los elementos.
El control de este ciclo debe iniciar con el valor del ciclo anterior.
Mientras que el control sea mayor o igual al incremento del primer ciclo y el elemento del arreglo de la posición del control de este ciclo menos el incremento, sea mayor que el elemento del arreglo de la posición control de este ciclo, realice los intercambios entre estas posiciones.
Y el control se decremente con el valor del incremento.

 Ordenamiento por inserción
Resultado de imagen para metodo de ordenamiento por insercion
Es una manera muy natural de ordenar para un ser humano, y puede usarse fácilmente para ordenar un mazo de cartas numeradas en forma arbitraria. Requiere O(n²) operaciones para ordenar una lista de n elementos.

Inicialmente se tiene un solo elemento, que obviamente es un conjunto ordenado. Después, cuando hay k elementos ordenados de menor a mayor, se toma el elemento k+1 y se compara con todos los elementos ya ordenados, deteniéndose cuando se encuentra un elemento menor (todos los elementos mayores han sido desplazados una posición a la derecha) o cuando ya no se encuentran elementos (todos los elementos fueron desplazados y este es el más pequeño). En este punto se inserta el elemento k+1 debiendo desplazarse los demás elementos.


Resultado de imagen para metodo de ordenamiento por seleccionOrdenamiento por selección
Es un algoritmo de ordenamiento que requiere
O(n²) operaciones para ordenar una lista de n elementos.
Su funcionamiento es el siguiente:
Buscar el mínimo elemento de la lista
Intercambiarlo con el primero
Buscar el mínimo en el resto de la lista
Intercambiarlo con el segundo
Y en general:
Buscar el mínimo elemento entre una posición i y el final de la lista
Intercambiar el mínimo con el elemento de la posición i
De esta manera se puede escribir el siguiente pseudocódigo para ordenar una lista de n elementos indexados desde el 1

Método de Polya

El método de Polya es nombrado gracias es un método originalmente utilizado para resolver problemas matemáticos, pero comenzó a utilizarse para programación gracias a la publicación del libro de Simon Thompson, How to Program It.

Consiste en 4 pasos:

1. Entender el problema


El primer paso es identificar la base del problema, identificar los datos que se nos dan y determinar si el problema se puede resolver con la información proporcionada.

2. Configurar un plan



El segundo paso consiste en tratar de relacionar el problema planteado con uno que se haya solucionado anteriormente o uno similar, para tomarlo como una base, de no ser el caso se elabora un plan nuevo que utilize los datos proporcionados para llegar a la solucion de manera eficaz.

 3. Ejecutar el plan

En este paso se lleva a cabo el plan concebido en el paso anterior, se comprueban cada uno de los pasos.Se identifica si el plan puede ser reducido a algo mas simple y se si se puede utilizar para resolver otros problemas similares.

4.Examinar la solución obtenida

Se analiza el resultado del problema, ¿Se llegó a la solución del problema?
¿Qué puedo hacer para agilizar el proceso de resolución?

Ciclo de Vida del Software





El término ciclo de vida del software describe el desarrollo de software, desde la fase inicial hasta la fase final. Hay varios modelos a seguir para el establecimiento de un proceso para el desarrollo de software, cada uno de los cuales describe un enfoque diferente para diferentes actividades que tienen lugar durante el proceso.

El ciclo de vida básico de un software consta de los siguientes procedimientos:
  • Definición de objetivos: definir el resultado del proyecto y su papel en la estrategia global.
  • Análisis de los requisitos y su viabilidad: recopilar, examinar y formular los requisitos del cliente y examinar cualquier restricción que se pueda aplicar.
  • Diseño: requisitos generales de la arquitectura de la aplicación y definición precisa de cada subconjunto de la aplicación.
  • Programación (programación e implementación): es la implementación de un lenguaje de programación para crear las funciones definidas durante la etapa de diseño.
  • Prueba de unidad: prueba individual de cada subconjunto de la aplicación para garantizar que se implementaron de acuerdo con las especificaciones.
  • Integración: para garantizar que los diferentes módulos se integren con la aplicación. Éste es el propósito de la prueba de integración que está cuidadosamente documentada.
  • Implementación
  • Mantenimiento: para todos los procedimientos correctivos (mantenimiento correctivo) y las actualizaciones secundarias del software (mantenimiento continuo).

Modelo en cascada

Resultado de imagen para modelo de ordenamiento cascadaEl modelo de ciclo de vida en cascada comenzó a diseñarse en 1966 y se terminó alrededor de 1970. Se define como una secuencia de fases en la que al final de cada una de ellas se reúne la documentación para garantizar que cumple las especificaciones y los requisitos antes de pasar a la fase siguiente: 
Modelo Espiral:
Resultado de imagen para modelo de ordenamiento espiralLa principal característica del modelo en espiral es la gestión de riesgos de forma periódica en el ciclo de desarrollo. Este modelo fue creado en 1988 por Barry Boehm, combinando algunos aspectos clave de las metodologías del modelo de cascada y del desarrollo rápido de aplicaciones, pero dando énfasis en un área que para muchos no jugó el papel que requiere en otros modelos: un análisis iterativo y concienzudo de los riesgos, especialmente en el caso de sistema complejos de gran escala.
La espiral se visualiza como un proceso que pasa a través de algunas interaciones con el diagrama de los cuatro cuadrantes representativos de 4 actividades:

Modelo V:

El modelo de ciclo de vida V proviene del principio que establece que los procedimientos utilizados para probar si la aplicación cumple las especificaciones ya deben haberse creado en la fase de diseño. 

Ciclo de vida V


Ejercicios 2do Parcial

Comisión



Promedio


Descuento

Resistencia

jueves, 27 de octubre de 2016

Primer Parcial


Algoritmo Computacional


Secuencia de pasos necesarios para resolver un problema mediante una computadora.

El algoritmo se puede aplicar a cualquier problema de la vida diaria


Definición de Algoritmo


Conjunto de pasos en orden para resolver un problema.

Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural, pseudocódigo, diagramas de flujo y lenguajes de programación entre otros.

Las descripciones en lenguaje natural tienden a ser ambiguas y extensas.


Clasificaciones de Algoritmos.

Cualitativos


±El algortimo cualitativo es el que usamos en la vida diaria a través de palabras, por ejemplo la receta para preparar unas galletas.

Cuantitativos

±El algoritmo cuantitativo se crea a través de cálculos numéricos, por ejemplo para realizar operaciones matemáticas.


Elementos Constitutivos de un Algoritmo


Los elementos principales constitutivos de un algoritmo son 3:


Entrada: 
En esta parte se introducen los datos en forma de variables.


Proceso: 

Se realizan las operaciones aritméticas necesarias para llegar al resultado.


Salida: 
Se muestra el resultado del proceso.


Estructura de un Algortimo

Secuenciales


Son aquellos cuya estructura se forma una secuencia de un paso tras otro.

Condicionales

Son aquellos que permiten comparar una variable contra otro valor, se utilizan para tomar decisiones lógicas.

Cíclicas

Son aquellos tipos de estructura que repite una secuencia un numero determinado de veces, para encontrar la solución al problema.


Técnicas de Diseño de Algoritmos

Algoritmos determinativos:

 El comportamiento del algoritmo es lineal: cada paso del algoritmo tiene únicamente un paso sucesor y otro antecesor.

Algoritmos no determinativos:

 El comportamiento del algoritmo tiene forma de árbol y a cada paso del algoritmo puede bifurcarse a cualquier número de pasos inmediatamente posteriores, además todas las ramas se ejecutan simultáneamente.






Operadores Lógicos

Son aquéllos que permiten la combinación de condiciones para formar una sola expresión lógica.


Proporcionan resultados lógicos.


±Existen 4 principales:


NOT: Se obtiene verdadero si el operador es falso.


AND: Se obtiene si dos operadores son verdaderos.


OR: Al menos un elemento es verdadero.


XOR: Solo uno de los elementos es verdadero.