miércoles, 12 de diciembre de 2012

UNIDAD I.- ALGORITMOS


1.2.-  ALGORITMO
  es un conjunto prescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad.2 Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución. Los algoritmos son el objeto de estudio de la algoritmia.
En la vida cotidiana, se emplean algoritmos frecuentemente para resolver problemas. Algunos ejemplos son los manuales de usuario, que muestran algoritmos para usar un aparato, o las instrucciones que recibe un trabajador por parte de su patrón. Algunos ejemplos en matemática son el algoritmo de la división para calcular el cociente de dos números, el algoritmo de Euclides para obtener el máximo común divisor de dos enteros positivos, o el método de Gauss para resolver un sistema lineal de ecuaciones.

MEDIOS DE EXPRESIÓN DE UN ALGORITMO

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. El usar pseudocódigo y diagramas de flujo evita muchas ambigüedades del lenguaje natural. Dichas expresiones son formas más estructuradas para representar algoritmos; no obstante, se mantienen independientes de un lenguaje de programación específico.

La descripción de un algoritmo usualmente se hace en tres niveles:
 1. Descripción de alto nivel. Se establece el problema, se selecciona un modelo matemático y se explica el algoritmo de manera verbal, posiblemente con ilustraciones y omitiendo detalles.
 2. Descripción formal. Se usa pseudocódigo para describir la secuencia de pasos que encuentran la solución.
 3. Implementación. Se muestra el algoritmo expresado en un lenguaje de programación específico o algún objeto capaz de llevar a cabo instrucciones.


LOS DIAGRAMAS DE FLUJO
son descripciones gráficas de algoritmos; usan símbolos conectados con flechas para indicar la secuencia de instrucciones y están regidos por ISO.

Los diagramas de flujo son usados para representar algoritmos pequeños, ya que abarcan mucho espacio y su construcción es laboriosa. Por su facilidad de lectura son usados como introducción a los algoritmos, descripción de un lenguaje y descripción de procesos a personas ajenas a la computación.

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. El usar pseudocódigo y diagramas de flujo evita muchas ambigüedades del lenguaje natural. Dichas expresiones son formas más estructuradas para representar algoritmos; no obstante, se mantienen independientes de un lenguaje de programación específico.

EL PSEUDOCODIGO
(falso lenguaje, el prefijo pseudo significa falso) es una descripción de alto nivel de un algoritmo que emplea una mezcla de lenguaje natural con algunas convenciones sintácticas propias de lenguajes de programación, como asignaciones, ciclos y condicionales, aunque no está regido por ningún estándar. Es utilizado para describir algoritmos en libros y publicaciones científicas, y como producto intermedio durante el desarrollo de un algoritmo, como los diagramas de flujo, aunque presentan una ventaja importante sobre estos, y es que los algoritmos descritos en pseudocódigo requieren menos espacio para representar instrucciones complejas.

UNIDAD II.- METODOLOGIA PARA LA RESOLUCION DE PROBLEMAS POR MEDIO DE COMPUTADORAS.


2.1.- DEFINICION DE PROBLEMA.
            Suele ser un asunto del que se espera una solución aunque esta dista de ser obvia( falsa o verdadera).
PROBLEMA DE DECISIÓN: Es un conjunto de frases de longitud finita en donde las respuestas posibles son si o no.
2.2.- ANALISIS DE DATOS.
            Es la actividad de transformar un conjunto de datos con el objetivo de poder verificarlos muy bien dándoles al mismo tiempo una razón de ser o un análisis racional( pueden ser estos datos cualitativos o cuantitativos).
Los datos de entrada.
Cual es la información que se desea producir (salida)
Los métodos y fórmulas que se necesitan para procesar los datos.
Una recomendación muy practica es el que nos pongamos en el lugar de la computadora y analicemos que es lo que necesitamos que nos ordenen y en que secuencia para producir los resultados esperados.

2.3.- DISEÑO DE SOLUCION.
Diseño del Algoritmo: Las características de un buen algoritmo son:
Debe tener un punto particular de inicio.
Debe ser definido, no debe permitir dobles interpretaciones.
Debe ser general, es decir, soportar la mayoría de las variantes que se puedan presentar en la definición del problema.
Debe ser finito en tamaño y tiempo de ejecución.



2.4.-     CODIFICACION
 La codificación es la operación de escribir la solución del problema (de acuerdo a la lógica del diagrama de flujo o pseudocodigo), en una serie de instrucciones detalladas, en un código reconocible por la computadora, la serie de instrucciones detalladas se le conoce como código fuente, el cual se escribe en un lenguaje de programación o lenguaje de alto nivel.

2.5.-PRUEBA Y DEPURACION
 Los errores humanos dentro de la programación de computadoras son muchos y aumentan considerablemente con la complejidad del problema. El proceso de identificar y eliminar errores, para dar paso a una solución sin errores se le llama depuración. La depuración o prueba resulta una tarea tan creativa como el mismo desarrollo de la solución, por ello se debe considerar con el mismo interés y entusiasmo. Resulta conveniente observar los siguientes principios al realizar una depuración, ya que de este trabajo depende el éxito de nuestra solución.

2.6.-DOCUMENTACION
 Es la guía o comunicación escrita es sus variadas formas, ya sea en enunciados, procedimientos, dibujos o diagramas. A menudo un programa escrito por una persona, es usado por otra. Por ello la documentación sirve para ayudar a comprender o usar un programa o para facilitar futuras modificaciones (mantenimiento). La documentación se divide en tres partes:
Documentación Interna: Son los comentarios o mensaje que se añaden al código fuente para hacer mas claro el entendimiento de un proceso.
Documentación Externa: Se define en un documento escrito los siguientes puntos:
·        Descripción del Problema
·        Nombre del Autor
·        Algoritmo (diagrama de flujo o pseudocodigo)
·        Diccionario de Datos
·        Código Fuente (programa)
Manual del Usuario: Describe paso a paso la manera como funciona el programa, con el fin de que el usuario obtenga el resultado deseado.

2.7.-MANTENIMIENTO
 Se lleva acabo después de terminado el programa, cuando se detecta que es necesario hacer algún cambio, ajuste o complementación al programa para que siga trabajando de manera correcta. Para poder realizar este trabajo se requiere que el programa este correctamente documentado. 
Comprobación, medición, reemplazo, ajuste y reparación necesario para reparar una unidad o mantenerla funcionando, de forma en que pueda desempeñar su función.

UNIDAD III.- ENTIDADES PRIMITIVAS PARA EL DISEÑO DE INSTRUCCIONES.


3.1- TIPOS DE DATOS.
Es una restricción impuesta para la interpretación, manipulación y representación de datos. Los tipos de datos en lenguajes de programación son los tipos primitivos( enteros, caracteres, etc), los simples ( numéricos, alfanuméricos, lógicos) y estructurados(vectores, matrices y registros).

3.2.- OPERADORES Y OPERANDOS.
            Un operando es un valor( un argumento), el opoerando puede ser un registro, una dirección de memoria, una constante literal, una etiqueta.
Ejemplo:
3+9=12
Operando.- 3,9,12
Operador:- +

3.3..- EXPRESIONES.
            Es una combinación de constantes, variables o funciones que se interpretan de acuerdo a las normas particulares de precedencia y asociación.

 3.4.- IDENTIFICADORES COMO LOCALIDADES DE MEMORIA.
            Son elementos textuales, llamados símbolos que nombran entidades del lenguaje., entre ellas están las variables, constantes, tipo de datos, etiquetas, paquetes, palabras reservadas y palabras claves.

UNIDAD IV.- TECNICAS DE DISEÑO.

4.1.- TOP DOWN.
 Formula un resumen del sistema, sin especificar detalles, cada parte del sistema se va detallando hasta que es lo suficientemente detallada para validar el modelo.

 4.2.- BOTTON-. UP
 Las partes individuales se diseñan con detalle y luego se enlazan para formar componentes mas grandes, que a la vez se enlazan hasta formar el sistema completo.

 4.3.- WARNER.
 Se encarga de proteger a los ususarios de las computadoras, monitoreando todas las actividades y procesos, rastrea la actividad del usuario para solucionar problemas,

UNIDAD V.- TECNICAS PARA LA FORMULACION DE ALGORITMOS.


5.1.-DIAGRAMAS DE FLUJO
El diagrama de flujo o diagrama de actividades es la representación gráfica del algoritmo o proceso.
Un diagrama de flujo siempre tiene un único punto de inicio y un único punto de término.

Las siguientes son acciones previas a la realización del diagrama de flujo:
 Identificar las ideas principales a ser incluidas en el diagrama de flujo. Deben estar presentes el autor o responsable del proceso, los autores o responsables del proceso anterior y posterior y de otros procesos interrelacionados, así como las terceras partes interesadas.
 Definir qué se espera obtener del diagrama de flujo.
 Identificar quién lo empleará y cómo.
 Establecer el nivel de detalle requerido.
 Determinar los límites del proceso a describir.

Los pasos a seguir para construir el diagrama de flujo son:
 Establecer el alcance del proceso a describir. De esta manera quedará fijado el comienzo y el final del diagrama. Frecuentemente el comienzo es la salida del proceso previo y el final la entrada al proceso siguiente.
 Identificar y listar las principales actividades/subprocesos que están incluidos en el proceso a describir y su orden cronológico.
 Si el nivel de detalle definido incluye actividades menores, listarlas también.
 Identificar y listar los puntos de decisión.
 Construir el diagrama respetando la secuencia cronológica y asignando los correspondientes símbolos.
 Asignar un título al diagrama y verificar que esté completo y describa con exactitud el proceso elegido.
Formato vertical: En él, el flujo o la secuencia de las operaciones, va de arriba hacia abajo. Es una lista ordenada de las operaciones de un proceso con toda la información que se considere necesaria, según su propósito.
 Formato horizontal: En él, el flujo o la secuencia de las operaciones, va de izquierda a derecha.
Simbología y significado
 Óvalo o Elipse: Inicio y término (Abre y/o cierra el diagrama).
 Rectángulo: Actividad (Representa la ejecución de una o más actividades o procedimientos).
 Rombo: Decisión (Formula una pregunta o cuestión).
 Círculo: Conector (Representa el enlace de actividades con otra dentro de un procedimiento).
 Triángulo boca abajo: Archivo definitivo (Guarda un documento en forma permanente).
 Triángulo boca arriba: Archivo temporal (Proporciona un tiempo para el almacenamiento del documento).




5.2.-PSEUDOCODIGO

la utilización de un Código Fuente, que es escrito en un Lenguaje de Alto Nivel, que tenemos en este caso una interpretación por parte de un usuario que conoce de estos términos, bajo unas normas específicas, y que permite elaborar un Programa a través de una estructura determinada.
En contraposición a esto tenemos el Código Objeto, que se basa simplemente en la interpretación por parte del ordenador, por lo que utiliza un Lenguaje de Bajo Nivel, y que está estrictamente ligado a cómo el equipo va a ejecutar estas órdenes, mediante la utilización de un Código Binario que se basa en la transmisión o no-transmisión de impulsos eléctricos.

Ajeno a estos dos Códigos, tenemos el que es conocido como Pseudocódigo, que es considerado a su vez como un Lenguaje Falso, que no se puede enmarcar ni en un Alto ni en Bajo Nivel, por lo que se considera como una especie de camino medio entre el que es el Lenguaje de Programación y aquel que utilizamos cotidianamente.

5.3.-DIAGRAMAS ESTRUCTURADOS.
Diagrama Nassi-Schneiderman  El diagrama N-S, también conocido como diagrama de Cahpin, es como un diagrama de flujo en el que se omiten las flchas de unión y las cajas son contigüas. Las acciones sucesivas se escriben en cajas y como en los diagramas de flujo, se pueden escribir diferentes acciones en una caja.

Los diagramas estructurados, son una técnica que permite formular algoritmos mediante una representación geométrica y de asignación de espacios de un bloque específico.

UNIDAD VI.-ESTRUCTURAS ALGORITMICAS


ESTRUCTURAS ALGORITMICAS
Las estructuras de operación de programas son un grupo de formas de trabajo, que permiten, mediante la manipulación de variables, realizar ciertos procesos específicos que noslleven a la solución de problemas. Estas estructuras se clasifican de acuerdo con sucomplejidad en:


6.1.- Estructuras Secuenciales
La estructura secuencial es aquella en la que una acción (instrucción) sigue a otra ensecuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin del proceso. Una estructura secuencial se representa de lasiguiente forma:InicioAccion1Accion2..AccionNFin
6.1.1.-Asignación:
La asignación consiste, en el paso de valores o resultados a una zona de lamemoria. Dicha zona será reconocida con el nombre de la variable que recibe el valor.La asignación se puede clasificar de la siguiente forma:
Simples:
Consiste en pasar un valor constate a una variable (a=15)
Contador:
Consiste en usarla como un verificador del numero de veces que se realiza unproceso (a=a+1)
Acumulador:
Consiste en usarla como un sumador en un proceso (a=a+b)
De trabajo:
Donde puede recibir el resultado de una operación matemática queinvolucre muchas variables (a = c + b * 2 / 4 ).
Lectura:
La lectura consiste en recibir desde un dispositivo de entrada (p.ej. el teclado) unvalor. Esta operación se representa en un pseudocódigo como sigue:
Leer a, b
Donde “a” y “b” son las variables que recibirán los valores
Escritura:
Consiste en mandar por un dispositivo de salida (p.e. monitor o impresora) unresultado o mensaje. Este proceso se representa en un pseudocódigo como sigue:
Escribir “El resultado es:”, R
Donde “El resultado es:” es un mensaje que se desea aparezca y R es una variable que
contiene un valor.

Problemas Secuenciales resueltos
1)
Suponga que una persona desea invertir su capital en el ”BancoEstado” y desea saber
cuanto dinero ganara después de un mes si el banco paga a razón de 2% mensual.
Inicio
Leer cap_inv
gan = cap_inv * 0.02
Imprimir gan
Fin
2)
Un vendedor recibe un sueldo base más un 10% extra por comisión de sus ventas, elvendedor desea saber cuanto dinero obtendrá por concepto de comisiones por las tresventas que realiza en el mes y el total que recibirá en el mes tomando en cuenta susueldo base y comisiones.
Inicio
Leer SueldoBase, Venta1, Venta2, Venta3
Total_Ventas = Venta1 + Venta2 + Venta3
Comisión = Total_Ventas * 0.10
Total_Pagar = Sueldo_Base + Comisión
Imprimir Total_Pagar , Comisión
Fin
19
6.2.- ESTRUCTURAS DE CONDICIONALES
Las estructuras condicionales comparan una variable contra otro(s) valor(es), para queen base al resultado de esta comparación, se siga un curso de acción dentro del programa. Cabemencionar que la comparación se puede hacer contra otra variable o contra una constante,según se necesite. Existen dos tipos básicos, las simples y las múltiples.
Simples:
Las estructuras condicionales simples se les conoce como “Tomas de decisión”.
Estas tomas de decisión tienen la siguiente forma:
Si <condición> entoncesAcción(es)Fin-si
Dobles:
Las estructuras condicionales dobles permiten elegir entre dos opciones oalternativas posibles en función del cumplimiento o no de una determinada condición. Serepresenta de la siguiente forma:Si <condición> entoncesAcción(es)si noAcción(es)Fin-siDonde:
Si …………………Indica el comando de comparación
Condición…………Indica la condición a evaluar
entonces……..……Precede a las acciones a realizar cuando se cumple la condición
acción(es)…………Son las acciones a realizar cuando se cumple o no la condición
si no………………..…Precede a las acciones a realizar cuando no se cumple la condición
Dependiendo de si la comparación es cierta o falsa, se pueden realizar una o mas acciones.
Múltiples:
Las estructuras de comparación múltiples, son tomas de decisión especializadas que permiten comparar una variable contra distintos posibles resultados, ejecutando para cada caso una serie de instrucciones especificas. La forma común es la siguiente:
Si <condición> entonces
Acción(es)
si no
Si <condición> entonces
Acción(es)
si no.
Varias condiciones

6.3.- ESTRUCTURAS CÍCLICAS
Se llaman problemas repetitivos o cíclicos a aquellos en cuya solución es necesarioutilizar un mismo conjunto de acciones que se puedan ejecutar una cantidad específica deveces. Esta cantidad puede ser fija (previamente determinada por el programador) o puede servariable (estar en función de algún dato dentro del programa). Los ciclos se clasifican en:

Ciclos con un Numero Determinado de Iteraciones (Para - Hacer)
Son aquellos en que el numero de iteraciones se conoce antes de ejecutarse el ciclo. Laforma de esta estructura es la siguiente:

Para V.C = L.I a L.S Hacer
Accion1
Accion2
.
.
AccionN
Fin-para
Donde:
V.C Variable de control del ciclo
L.I Límite inferir
L.S Límite superior

En este ciclo la variable de control toma el valor inicial del ciclo y el ciclo se repite hasta que lavariable de control llegue al límite superior.
Problemas ( Cilco : Para Hacer )
1)

Calcular el promedio de un alumno que tiene 7 calificaciones en la asignatura deIntroducción a la Programación.
Inicio
Sum=0
Leer Nom
Para c = 1 a 7 Hacer
Leer calif
Sum = sum + calif
Fin-para
prom = sum /7
Imprimir prom
Fin