Вы находитесь на странице: 1из 13

Principios De Programacin

Principios de programacin Definicin de problema


La definicin del problema est dada en s por el enunciado del problema, el cul debe ser claro y complejo. Es importante que conozcamos exactamente que se desea obtener al final del proceso.

Anlisis de los datos


Para que un problema se pueda definir con precisin se requiere que las especificaciones de entrada y salida sean descritas con detalle ya que esto es un requisito para lograr una solucin. Una vez que el problema se ha definido y comprendido, deben analizarse los siguientes aspectos: Los resultados esperados. Los datos de entrada disponibles. Para facilitar esta etapa debemos de ponernos en lugar de la computadoradeduciendo los elementos que se necesitarn para alcanzar el resultado. Diseo de la solucin Las computadoras solo pueden solucionar problemas siempre y cuando se le proporcionen los pasos sucesivos que tiene que realizar, esto se refiere a un algoritmo que resuelva correctamente el problema. -Esta etapa incluye la descripcin del algoritmo resultante en un lenguaje natural de diagrama de flujo o natural de programacin. Codificacin La codificacin se refiere a la obtencin de un programa definitivo que pueda ser comprensible para la mquina. Incluye una etapa que se reconoce como compilacin. Programa Fuente.- Est escrito en un lenguaje de programacin y es entendido por el programador. Programa Ejecutable.- Est en lenguaje mquina y es entendido por la mquina. Prueba y depuracin Cuando se obtiene el programa ejecutable, este se somete a una prueba con el fin de determinar si resuelve de forma satisfactoria o no el problema planteado. Son muchas las pruebas que se le aplican al programa y por lo general dependen del tipo de problema que se est resolviendo. Generalmente se inicia la prueba de un programa introduciendo datos vlidos, invlidos e incongruentes y se observa como reacciona en cada ocasin.
Programacin. Consiste en el al problema planteado en forma de algoritmo. Resultado: documentos integrados por herramientas de representacin de algoritmos como seudocdigo, ordinogramas, etc...

diseo de la solucin

Codificacin La codificacin es la operacin de escribir la solucin del problema (de acuerdo a la lgica del diagrama de flujo o pseudocdigo), en una serie de instrucciones detalladas, en un cdigo reconocible por la computadora, la serie de instrucciones detalladas se le conoce como cdigo fuente, el cual se escribe en un lenguaje de programacin o lenguaje de alto nivel.

PRUEBA
Probar un programa es ejercitarlo con la peor intencin a fin de encontrarle fallos. El objetivo especfico de la fase de pruebas es encontrar cuantos ms errores, mejor. Probar un programa es someterle a todas las posible variaciones de los datos de entrada, tanto si son vlidos como si no lo son. tipos de prueba Pruebas de Integracin Las pruebas de integracin se llevan a cabo durante la construccin del sistema, involucran a un nmero creciente de mdulos y terminan probando el sistema como conjunto. Estas pruebas se pueden plantear desde un punto de vista estructural o funcional. Pruebas de Aceptacin Estas pruebas las realiza el cliente. Son bsicamente pruebas funcionales, sobre el sistema completo, y buscan una cobertura de la especificacin de requisitos y del manual del usuario. Estas pruebas no se realizan durante el desarrollo, pues sera impresentable de cara al cliente; sino una vez pasadas todas las pruebas de integracin por parte del desarrollador.

Depuracin (debugging)
Los depuradores pueden usarse para realizar inspecciones rigurosas sobre el comportamiento dinmico de los programas. La prctica demuestra, no obstante, que su uso es tedioso y que slo son eficaces si se persigue un objetivo muy claro. El objetivo habitual es utilizarlo como consecuencia de la deteccin de un error. Si el programa se comporta mal en un cierto punto, hay que averiguar la causa precisa para poder repararlo. La causa a veces es inmediata (por ejemplo, un operador booleano

equivocado); pero a veces depende del valor concreto de los datos en un cierto punto y hay que buscar la causa en otra zona del programa. En general es mala idea "correr al depurador", tanto por el tiempo que se pierde buceando sin una meta clara, como por el riesgo de corregir defectos intermedios sin llegar a la raiz del problema. Antes de entrar en el depurador hay que delimitar el error y sus posibles causas. Ante una prueba que falla, hay que identificar el dominio del fallo, averiguar las caractersticas de los datos que provoca el fallo (y comprobar experimentalmente que todos los datos con esas caractersticas provocan ese fallo, y los que no las tienen no lo provocan).

Documentacin Es la gua o comunicacin 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 documentacin sirve para ayudar a comprender o usar un programa o para facilitar futuras modificaciones (mantenimiento). La documentacin se divide en tres partes: Documentacin Interna Documentacin Externa Manual del Usuario

Documentacin Interna: Son los comentarios o mensaje que se aaden al cdigo fuente para hacer mas claro el entendimiento de un proceso. Documentacin Externa: Se define en un documento escrito los siguientes puntos: Descripcin del Problema Nombre del Autor Algoritmo (diagrama de flujo o pseudocdigo) Diccionario de Datos Cdigo 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.

Mantenimiento Se lleva acabo despus de terminado el programa, cuando se detecta que es necesario hacer algn cambio, ajuste o complementacin al programa para que siga trabajando de manera correcta. Para poder realizar este trabajo se requiere que el programa este correctamente documentado.

UNIDAD

ALGORITMOS

Definicin formal de algoritmo


En general, no existe ningn consenso definitivo en cuanto a la definicin formal de algoritmo. Muchos autores los sealan como listas de instrucciones para resolver unproblema abstracto, es decir, que un nmero finito de pasos convierten los datos de un problema (entrada) en una solucin (salida).1 2 3 4 5 6 Sin embargo cabe notar que algunos algoritmos no necesariamente tienen que terminar o resolver un problema en particular. Por ejemplo, una versin modificada de la criba de Eratstenes que nunca termine de calcular nmeros primos no deja de ser un algoritmo.7 A lo largo de la historia varios autores han tratado de definir formalmente a los algoritmos utilizando modelos matemticos como mquinas de Turing entre otros.8 9 Sin embargo, estos modelos estn sujetos a un tipo particular de datos como son nmeros, smbolos ogrficas mientras que, en general, los algoritmos funcionan sobre una vasta cantidad deestructuras de datos.3 1 En general, la parte comn en todas las definiciones se puede resumir en las siguientes tres propiedades siempre y cuando no consideremos algoritmos paralelos:7 Tiempo secuencial. Un algoritmo funciona en tiempo discretizado paso a paso, definiendo as una secuencia de estados "computacionales" por cada entrada vlida (la entrada son los datos que se le suministran al algoritmo antes de comenzar). Estado abstracto. Cada estado computacional puede ser descrito formalmente utilizando una estructura de primer orden y cada algoritmo es independiente de su implementacin (los algoritmos son objetos abstractos) de manera que en un algoritmo las estructuras de primer orden son invariantes bajo isomorfismo. Exploracin acotada. La transicin de un estado al siguiente queda completamente determinada por una descripcin fija y finita; es decir, entre cada estado y el siguiente solamente se puede tomar en cuenta una cantidad fija y limitada de trminos del estado actual. En resumen, un algoritmo es cualquier cosa que funcione paso a paso, donde cada paso se pueda describir sin ambigedad y sin hacer referencia a una computadora en particular, y adems tiene un lmite fijo en cuanto a la cantidad de datos que se pueden leer/escribir en un solo paso. Esta amplia definicin abarca tanto a

algoritmos prcticos como aquellos que solo funcionan en teora, por ejemplo el mtodo de Newton y la eliminacin de Gauss-Jordan funcionan, al menos en principio, con nmeros de precisin infinita; sin embargo no es posible programar la precisin infinita en una computadora, y no por ello dejan de ser algoritmos.10 En particular es posible considerar una cuarta propiedad que puede ser usada para validar la tesis de Church-Turing de que toda funcin calculable se puede programar en una mquina de Turing (o equivalentemente, en un lenguaje de programacin suficientemente general):10

Caractersticas de los algoritmos


1.Carcter finito. "Un algoritmo siempre debe terminar despus de un nmero finito de pasos". 2.Precisin. "Cada paso de un algoritmo debe estar precisamente definido; las operaciones a llevar a cabo deben ser especificadas de manera rigurosa y no ambigua para cada caso". 3.Entrada. "Un algoritmo tiene cero o ms entradas: cantidades que le son dadas antes de que el algoritmo comience, o dinmicamente mientras el algoritmo corre. Estas entradas son tomadas de conjuntos especficos de objetos". 4.Salida. "Un algoritmo tiene una o ms salidas: cantidades que tienen una relacin especfica con las entradas". 5.Eficacia. "Tambin se espera que un algoritmo sea eficaz, en el sentido de que todas las operaciones a realizar en un algoritmo deben ser suficientemente bsicas como para que en principio puedan ser hechas de manera exacta y en un tiempo finito por un hombre usando lpiz y papel".

Reglas para la construccin de algoritmos


> Definicin de Algoritmo: > >Conjunto finito de reglas que dan una secuencia de operaciones para resolver todos los

problemas de un tipo dado. De forma ms sencilla, podemos decir que un algoritmo es un conjunto de pasos que nos permite obtener un dato. Adems debe cumplir estas condiciones. > >Finitud: el algoritmo debe acabar tras un nmero finito de pasos. Es mas, es casi fundamental que sea en un nmero razonable de pasos. > >Definibilidad: el algoritmo debe definirse de forma precisa para cada paso, es decir hay que evitar toda ambigedad, puesto que el lenguaje es impreciso, los algoritmos se expresan mediante un lenguaje formal, ya sea matemtico o de programacin para un computador. > >Entrada: el algoritmo tendr cero o ms entradas es decir, cantidades dadas antes deempezar el algoritmo. Estas cantidades pertenece adems a conjuntos especificados de objetos (cadenas de caracteres, enteros, naturales, fraccionarios, etc.). Se trata siempre de cantidades representativas del mundo real expresadas de tal forma que sean acta para su interpretacin por el computador. > >Salida: el algoritmo tiene una o mas salidas en relacin con las entradas. > >Efectividad: se entiende por eso que una persona sea capa de realizar el algoritmo de modo exacto y sin ayuda de una maquina en un lapso de tiempo finito. > >Lo que pretende un algoritmo es sintetizar de alguna forma alguna tarea, calculo o mecanismo antes de ser transcrito al ordenador. > >Los pasos que hay que seguir son los siguientes: > >1. anlisis previo del problema. >2. primera visin del mtodo de resolucin. >3. descomposicin en mdulos. >4. programacin estructurada. >5. bsqueda de soluciones parciales. >6. ensamblaje de soluciones finitas. > >Lenguaje algortmico: > >El lenguaje algortmico es aquel que por medio del cual se realiza un anlisis previo del problema a resolver y encontrar un mtodo que permita resolverlo. El conjunto de todas las operaciones a realizar, y el orden en el que deben efectuarse se le denomina algoritmo. El lenguaje algortmico se divide en pseudo cdigo y diagrama de flujo. > > > > >El pseudocdigo: > >Es un conjunto de palabras reservadas y reglas para escribir algoritmos de una manera ms formal y estructurada. El objetivo es tener un algoritmo que este planteado en trminos ms cercanos a los lenguajes de programacin utilizados en la computadora. Es utilizada para los cursos de fundamentos de programacin. El pseudo cdigo ha sido concebido con algunos elementos similares a los lenguajes C para dar cierta familiaridad con el lenguaje que en estos cursos se utiliza para los proyectos. Sin embargo, el pseudo

cdigo NO ES EL LENGUAJE C. tiene diferencias sustanciales en cuanto a sus tipos de datos, operadores, representacin de variables y estructuras de control. C es un lenguaje muy rico en expresividad pero tambin es muy fcil al usarlo, escribir cdigo de mala calidad si no se tiene cuidado.

TIPOS DE ALGORITMOS El programador de computadoras es ante que nada una persona que resuelve problemas, por lo que para llegar a ser un programador eficaz se necesita aprender a resolver problemas de un modo riguroso y sistemtico. A la metodologa necesaria para resolver problemas mediante programas se denomina Metodologa de la Programacin. El eje central de esta metodologa es el concepto, ya tratado, de algoritmo. Un algoritmo es un mtodo para resolver un problema. Aunque la popularizacin del trmino ha llegado con el advenimiento de la era informtica, algoritmo proviene de Mohammed al-Khowarizmi, matemtico persa que vivi durante el siglo IX y alcanzo gran reputacin por el enunciado de las reglas para sumar, restar, multiplicar y dividir nmeros decimales; la traduccin al latn del apellido de la palabra algorismus derivo posteriormente en algoritmo. Euclides, el gran matemtico griego (del siglo IV antes de Cristo) que invento un mtodo para encontrar el mximo comn divisor de dos nmeros, se considera con Al-Khowarizmi el otro gran padre de la algoritmia (ciencia que trata de los algoritmos). El profesor Niklaus Wirth, inventor de Pascal, Modula-2 y Oberon, titulo uno de sus mas famosos libros, Algoritmos + Estructuras de Datos = Programas, significndonos que solo se puede llegar a realizar un buen programa con el diseo de un algoritmo y una correcta estructura de datos. Esta ecuacin ser de una de las hiptesis fundamentales consideradas en esta obra. La resolucin de un problema exige el diseo de un algoritmo que resuelva el problema propuesto. Los pasos para la resolucin de un problema son:

Diseo de algoritmo, que describe la secuencia ordenada de pasos que conducen a la solucin de un problema dado. (Anlisis del problema y desarrollo del algoritmo). Expresar el algoritmo como un programa de lenguaje de programacin adecuado. (Fase de codificacin.) Ejecucin y validacin del programa por la computadora. Para llegar a la realizacin de un programa es necesario el diseo previo de algoritmo, de modo que sin algoritmo no puede existir un programa. Los algoritmos son independientes tanto del lenguaje de programacin en que se expresan como de la computadora que lo ejecuta. En cada problema el algoritmo se puede expresar en un lenguaje diferente de programacin y ejecutarse en una computadora distinta; sin embargo, el algoritmo ser siempre el mismo. As, por ejemplo, en una analoga con la vida diaria, una receta de un plato de cocina se puede expresar en espaol, ingles o francs, pero cualquiera que sea el lenguaje, los pasos para la elaboracin del plato se realizaran sin importar el idioma del cocinero. En la ciencia de la computacin y en la programacin, los algoritmos son ms importantes que los lenguajes de programacin o las computadoras. Un lenguaje de programacin es tan solo un medio para expresar un algoritmo y una computadora es solo un procesador para ejecutarlo. Tanto el lenguaje de programacin como la computadora son los medios para obtener un fin: conseguir que el algoritmo se ejecute y se efecte el proceso correspondiente. Dada la importancia del algoritmo en la ciencia de la computacin, un aspecto muy importante ser el diseo de algoritmos. El diseo de la mayora de los algoritmos requiere creatividad y conocimientos profundos de la tcnica de la programacin. En esencia, la solucin de un problema se puede expresar mediante un algoritmo. Caractersticas de los Algoritmos: Las caractersticas fundamentales que debe cumplir todo algoritmo son: Un algoritmo debe ser preciso e indicar el orden de realizacin de cada paso. Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez. Un algoritmo debe ser finito. Si se sigue un algoritmo se debe terminar en algn momento; o sea, debe tener un numero finito de pasos.

La definicin de un algoritmo debe definir tres partes: Entrada, Proceso y Salida. En el algoritmo de receta de cocina citado anteriormente se tendr: Entrada: ingrediente y utensilios empleados. Proceso: elaboracin de la receta en la cocina. Salida: terminacin del plato (por ejemplo, cordero). Ejemplo de Algoritmo: Un cliente ejecuta un pedido a una fbrica. Esta examina en su banco de datos la ficha del cliente; si el cliente es solvente entonces la empresa acepta el pedido; en caso contrario rechazara el pedido. Redactar el algoritmo correspondiente. Los pasos del algoritmo son: inicio leer el pedido examinar la ficha del cliente si el cliente es solvente aceptar pedido; en caso contrario, rechazar pedido fin Diseo del Algoritmo: En la etapa de anlisis del proceso de programacin se determina que hace el programa. En la etapa de diseo se determina como hace el programa la tarea solicitada. Los mtodos mas eficaces para el proceso de diseo se basan en el conocido por Divide y Vencers, es decir, la resolucin de un problema complejo se realiza dividiendo el problema en sub problemas y a continuacin dividir estos sub problemas en otros de nivel mas bajo, hasta que pueda ser implementada una solucin en la computadora. Este mtodo se conoce tcnicamente como diseo descendente (Top Down) o modular. El proceso de romper el problema en cada etapa y expresar cada paso en forma ms detallada se denomina refinamiento sucesivo. Cada sub programa es resuelto mediante un modulo (sub programa) que tiene un solo punto de entrada y un solo punto de salida. Cualquier programa bien diseado consta de un programa principal (el modulo de nivel mas alto) que llama a sub programas (mdulos de nivel mas bajo) que a su vez pueden llamar a otros sub programas. Los programas estructurados de esta forma se dice que tienen un diseo modular y el mtodo de romper el programa en mdulos ms pequeo se llama Programacin Modular. Los

mdulos pueden ser planeados, codificados, comprobados y depurados independientemente (incluso por diferentes programadores) y a continuacin combinarlos entre si. El proceso implica la ejecucin de los siguientes pasos hasta que el programa se termina: programar modulo. Comprobar el modulo. Si es necesario, depurar el modulo. Combinar el modulo con los mdulos anteriores. El proceso que convierte los resultados del anlisis del problema en un diseo modular con refinamiento sucesivo que permitan una posterior traduccin al lenguaje se denomina diseo de algoritmo. El diseo del algoritmo es independiente del lenguaje de programacin en el que se vaya a codificar posteriormente.

Ejercicios con algoritmos


1INICIO VARIABLES ENTERO anio escribir ' Ingrese el Anio: ' leer(anio) Si (anio mod 4 = 0 ) and (anio mod 100 <> 0) or ( anio mod 400 = 0 ) Entonces Escribir ' El anio ingresado es Bisiesto' else Escribir ' El anio Ingresado no es Bisiesto ' Fin Si Fin 2Inicio Variables

entero mes escribir ' Ingrese el numero del mes: ' leer(mes) Si(mes = 1) o (mes = 3) o (mes = 5) o (mes = 7) o (mes = 8) o (mes = 10) o(mes = 12) Entonces escribir'El mes tiene 31 dias' Si no Si(mes = 4) o (mes = 6) o (mes = 9) o (mes = 11)Entonces escribir'El mes tiene 30 Dias' Sino Si(mes = 2) escribir'El mes tiene 28 dias' Fin Si Fin 3Inicio Variables entero n entero divisor <- 2 escribir'Ingrese el numero: ' leer(n) mientras (n<divisor) hacer Si(n mod divisor = 0)entonces escribir'El numero no es Primo' else divisor <= divisor + 1 Fin si fin mientras Escribir'El numero es Primo'

Unidad 3 Diagramas de flujos lineales

Tipos de operadores
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 informacin que se considere necesaria, segn su propsito. Formato horizontal: En l, el flujo o la secuencia de las operaciones, va de izquierda a derecha. Formato panormico: El proceso entero est representado en una sola carta y puede apreciarse de una sola mirada mucho ms rpido que leyendo el texto, lo que facilita su comprensin, an para personas no familiarizadas. Registra no solo en lnea vertical, sino tambin horizontal, distintas acciones simultneas y la participacin de ms de un puesto o departamento que el formato vertical no registra. Formato Arquitectnico: Describe el itinerario de ruta de una forma o persona sobre el plano arquitectnico del rea de trabajo. El primero de los flujogramas es eminentemente descriptivo, mientras que los utilizados son fundamentalmente representativos.

aritmeticos
En matemtica, la aritmtica es un sistema aritmtico para clases de equivalencia de nmeros enteros llamadas clases de congruencia. Algunas veces se le llama, sugerentemente, aritmtica del reloj, ya que los nmeros dan la vuelta tras alcanzar cierto valor llamado mdulo.1 La aritmtica modular fue introducida en 1801 por Carl Friedrich Gauss en su libro Disquisitiones Arithmeticae.2

RELACIONALES
El mapeo objeto-relacional (ms conocido por su nombre en ingls, Object-Relational mapping, o sus siglas O/RM, ORM, y O/R mapping) es una tcnica de programacin para convertir datos entre el sistema de tipos utilizado en un lenguaje de programacin orientado a objetos y el utilizado en una base de datos relacional, utilizando un motor de persistencia. En la prctica esto crea una base de datos orientada a objetos virtual, sobre la base de datos relacional. Esto posibilita el uso de las caractersticas propias de la orientacin a objetos (bsicamente herencia y polimorfismo). Hay paquetes comerciales y de uso libre disponibles que desarrollan el mapeo relacional de objetos, aunque algunos programadores prefieren crear sus propias herramientas ORM.

Operadores lgicos
Artculo principal: Operador lgico

Muy utilizados en Informtica, Lgica proposicional y lgebra booleana, entre otras disciplinas. Los operadores lgicos nos proporcionan un resultado a partir de que se cumpla o no una cierta condicin. Esto genera una serie de valores que, en los casos ms sencillos, pueden ser parametrizados con los valores numricos 0 y 1, como se puede apreciar en los ejemplos de abajo. La combinacin de dos o ms operadores lgicos conforma una funcin lgica. Los ms sencillos son (ntese su relacin con los operadores relacionales): Operador NO-lgico: 'A' significa todo lo que no es A' Operador Y-lgico: 'A B' significa 'A y B a la vez'; resultando FALSO (0) si no se

cumple y VERDADERO (1) si s lo hace. Operador O-lgico: 'A B' significa 'O bien A, o bien B, o bien los dos'; resultando

FALSO (0) si no se dan ni A ni B y VERDADERO (1) si se da alguno de los dos o los dos a la vez. Operador =: 'A = B' significa 'A debe ser igual a B'; resultando FALSO (0) si esto no

es as y VERDADERO (1) en caso contrario. Operador <: 'A < B' significa 'A debe ser menor que B'; resultando FALSO (0) si no

se satisface y VERDADERO (1) en caso contrario. Los operadores ms complejos se construyen a partir de los anteriores (podra incluirse alguno ms) y ya entran dentro de lo que sera una funcin lgica. Un ejemplo muy utilizado sera 'SI(condicin;A;B)' ('IF condicin THEN A ELSE B' en la mayora de los lenguajes de programacin) cuyo resultado sera A si se satisface la 'condicin' o B en caso contrario.