Sie sind auf Seite 1von 38

UNIDAD 1: INTRODUCCION A LA PROGRAMACION 1.

1 DEFINICIN DEL PROBLEMA

El primer paso en la planeacin de un proyecto de programacin es preparar un enunciado breve del problema que se solucionar y de las restricciones que existen en su resolucin. El enunciado definitivo del problema debe de incluir una descripcin de la situacin actual y de las metas que debe lograr el nuevo sistema.

La definicin del problema requiere de un entendimiento cabal del dominio del problema y del entorno de ste. Las tcnicas para obtener este conocimiento, por parte del planeador, son entrevistas con el cliente, observacin de las tareas problemticas, y desarrollo de las reales. El planeador debe ser muy hbil en las tcnicas de definicin del problema, ya que distintos representantes del cliente tendrn diferentes puntos de vista, y prejuicios que influirn en la percepcin del alcance del problema.

Algunas veces los sistemas se construyen para dar solucin a un sntoma, y no a la causa primaria del problema. Esto ocurre cuando el problema se entiende, pero no puede resolverse debido a circunstancias econmicas, polticas o sociales, cuando el cliente no es capaz de comunicar el problema real o cuando el planeador no entiende la explicacin del cliente sobre el problema.

El segundo paso en la planeacin de un proyecto de programacin es determinar lo apropiado de una solucin computacional. Adems de ser eficaz en trminos de costo, un sistema computacional debe aceptarse social y polticamente. Para ser eficiente en costo, un nuevo producto de programacin debe proporcionar los mismos servicios e informacin que el sistema antiguo, usando menos tiempo y personal, o proporcionar servicios e informacin que antes eran inaccesibles. Un sistema que desplace a muchos trabajadores puede ser econmica y tcnicamente posible, pero inaceptable social o polticamente para el usuario.

Una vez dado el enunciado preciso del problema y la indicacin de las restricciones que existen para la solucin, se pueden formular metas y requisitos preliminares. Las metas son logros por alcanzar; sirven para establecer el marco de referencia para el proyecto de desarrollo del producto de programacin. stas se usan para el proceso de desarrollo y los productos finales, y pueden ser cualitativas y cuantitativas.

Los requisitos especifican las capacidades que debe tener un sistema para la solucin de un problema. stos se establecen para la funcionalidad, el rendimiento, el equipo, la programacin en el equipo, la programacin y las interfaces con el usuario. Los requisitos pueden establecer tambin estndares de desarrollo y de control de calidad tanto para el desarrollo como para el producto; deben ser cuantificados siempre que sea posible. Las metas y los requisitos de alto nivel se pueden expresar en trminos de atributos de calidad que el sistema deber poseer. Es importante que los criterios de alto nivel para la aceptacin del sistema se definan durante la fase de planeacin. Cada requisito debe incluir el mtodo que se emplear durante su verifiacin.

1.2 ANLISIS DE LOS DATOS

Es la comprensin a fondo de los datos y sus detalles y es un requisito para lograr una solucin eficaz. Es precesamente en esta fase donde se definen formal y correctamente la Entrada que recibir el programa (datos o materia prima), la Salida que producir (informacin o resultados) y el Proceso necesario para su solucin (el mtodo para convertir los datos de entrada en informacin de salida). Cada uno de estos aspectos coincide respectivamente con las preguntas planteadas en la fase de Definicin del Problema. A este enfoque se le conoce comnmente como E-P-S (Entrada-Proceso-Salida).

1.3 DISEO DE LA SOLUCIN

En esta fase se disea la lgica de la solucin a usar, o sea, cmo har el programa la tarea que se desea automatizar usando los datos de entrada para generar los datos de salida, enfatizndose los diseos limpios, sencillos y claros. Pueden plantearse diferentes alternativas de solucin al problema y elegir la ms adecuada, la que produzca los resultados esperados en el menor tiempo y al menor costo. El proceso de diseo se realiza en dos pasos: 1 Elaboracin del Algoritmo Un algoritmo es una secuencia lgica y cronolgica de pasos encaminados a resolver un problema. Las acciones bsicas que puede llevar a cabo un algoritmo son: pedir datos, desplegar datos, evaluar condiciones y ejecutar operaciones.

Los programas se estructuran a partir de los algoritmos, los cuales se pueden escribir utilizando la tcnica convencional del pseudocdigo (mezcla de lenguaje comn, trminos tcnicos de computacin, smbolos y palabras reservadas de algn lenguaje de programacin) y los diagramas de flujo (flujogramas) que son la representacin grfica de un algoritmo, plasmados en papel para su estudio. En el caso de emplear diagramas de flujo pueden emplearse herramientas de software tales como el DFD v1.0. Si se opta por el pseudocdigo, se recomienda escribirlos a doble interlnea para efecto de facilitar modificaciones o adicin de acciones no consideradas y dotarlos de las siguientes caractersticas. 2 Caractersticas de los Algoritmos Un algoritmo debe tener un punto de inicio o partida. Debe ser preciso e indicar el orden de realizacin de cada paso. Debe estar bien definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez. Debe ser finito (tener un nmero finito de pasos). Si se sigue un algoritmo, se debe terminar en algn momento. La definicin de un algoritmo debe describir con claridad las tres partes fundamentales del problema: Entrada, Proceso y Salida encontradas en las fases de Definicin y Anlisis del problema. Se deja sentado que todos los programas empiezan primero en papel, no directamente frente a la computadora. An los programadores ms experimentados plasman en papel sus ideas y soluciones antes de programarlas. Pero es comn que los novatos vayan directamente a la computadora sin haber siquiera ledo bien el problema o pensado siquiera el algoritmo. Eventualmente podrn concluir el programa y alcanzar una solucin, pero slo despus de probar diferentes ideas, hacer miles de cambios y perder gran cantidad de tiempo y esfuerzo. Los que se toman tiempo para analizar el problema, pensar y plasmar su solucin en papel mediante un algoritmo tendrn un tiempo de respuesta (el tiempo para obtener el programa terminado) mucho menor, y se convierten en mejores programadores. Es un hecho. Los problemas complejos pueden solucionarse ms eficazmente utilizndo el mtodo "Divide y Vencers", el que consiste en fraccionar un problema complejo en otros ms simples y ms fciles de solucionar. Esto conduce a la Modulacin del programa auxiliado por el mtodo de diseo Top-Down o Descendente en el que se da un refinamiento de los pasos del algoritmo. De hecho, el enfoque E-P-S mencionado anteriemente es un buen ejemplo de esto, pues al concentrarse en resolver cada uno de los tres aspectos del enfoque de manera independiente se lograr la solucin del problema completo.

3 Realizacin de Pruebas de Escritorio comprobaciones a mano del algoritmo planteado (en pseudocdigo o en diagrama de flujo) con datos y resultados de prueba conocidos, papel, lpiz y calculadora (si es necesaria) para simular su ejecucin y evaluar su correcta operacin. Si la lgica es correcta, los resultados sern satisfactorios. Si no, el algoritmo deber modificarse y volverlo a probar hasta que est correcto. Algunos programas no son fciles de probar a mano por su complejidad y/o tamao, pero en tu ayuda est la verificacin durante la programacin inicial (la creacin del algoritmo), el trace and debugging (rastreo y deteccin de errores) automtico que incorporan los lenguajes de compiladores de los lenguajes de programacin y otras tcnicas. Se hace notar que ste acpite depende de los anteriores. Si la definicin y el anlisis son errados, el diseo del programa tambin lo ser, por lo que se tendr que rehacer, retrocediendo quiz hasta la fase de Definicin del problema.

1.4 CODIFICACIN

En este paso se traduce el algoritmo ya estructurado, verificado y comprobado a mano, al lenguaje de programacin que vaya a utilizarse. Slo se convierten las acciones del algoritmo en instrucciones de computadora usando la sintaxis de un lenguaje particular, pero requiere de conocimientos del lenguaje y de sumo cuidado en la colocacin de las instrucciones, las que deben apegarse y seguir fielmente a la lgica del algoritmo y la semntica y sintaxis del lenguaje. La digitacin, el acto de teclear el algoritmo codificado, se lleva a cabo para almacenar el programa en la memoria de la computadora (virtual o fsica) y pueda ser aceptado por esta. Con frecuencia los programadores realizan la codificacin y la digitacin al mismo tiempo a fin de ahorrar tiempo, pero esto puede conducir a errores debido a la prdida de concentracin que implica el uso de un editor. La compilacin, o correccin de los errores sintcticos y semnticos del cdigo, es la eliminacin de los errores "gramaticales" segn las reglas de construccin de instrucciones particulares del propio lenguaje (la sintaxis). Puede hacerse a medida que se traduce, pero es mejor al final para no perder la secuencia de la codificacin. Al terminar debe tenerse el cdigo libre de los errores antes mencionados. Para realizar la compilacin puede hacerse uso de un compilador, el cual es un programa especial que analiza todo el cdigo fuente y detecta los errores antes mencionados ocasionados durante la codificacin o la digitacin. Las fallas de lgica que puedan existir en nuestro programa no son detectadas por este

software. Los errores que s son evidenciados por el compilador deben corregirse modificando el programa fuente.

1.5 PRUEBA Y DEPURACIN

Una vez compilado el programa, este es sometido a pruebas a fin de determinar si resuelve o no el problema planteado en forma satisfactoria. Para ello le suministramos datos de prueba, como lo hicimos en la prueba de escritorio. El programa codificado y compilado no garantiza que funcione correctamente. Debe depurarse (librarse de errores de lgica o de ejecucin) realizando corridas de prueba continuas con datos y respuestas conocidas como lo hicimos en la prueba de escritorio, verificando todas las posibles alternativas del programa y sus respuestas y haciendo el mayor nmero de variantes con sus combinaciones, a fin de determinar si resuelve o no el problema planteado en forma satisfactoria.

Las pruebas que se aplican al programa son de diversa ndole y generalmente dependen del tipo de problema que se est resolviendo. Comnmente se inicia la prueba de un programa introduciendo datos vlidos, invlidos e incongruentes y observando como reacciona en cada ocasin.

Los resultados obtenidos en las pruebas pueden ser cualquiera de los siguientes: La lgica del programa esta bien, pero hay errores sencillos, los cuales los corregimos eliminando o modificando algunas instrucciones o incluyendo nuevas. Hay errores ocasionados por fallas en la lgica, lo que nos obliga a regresar a las fases de Diseo y Codificacin para revisin y modificacin del diagrama. Hay errores muy graves y lo ms aconsejable es que regresemos a la fase 2 para analizar nuevamente el problema, y repetir todo el proceso. No hay errores y los resultados son los esperados. En este caso guardamos el programa permanentemente en un medio de almacenamiento. Puede ser necesario en la mayora de los casos retroceder a fases previas de desarrollo, revisar el algoritmo otra vez en caso de errores de anlisis y/o lgica (que son los ms difciles de detectar, a diferencia de los de sintaxis y semntica), realizar ajustes al cdigo y una serie de nuevas ejecuciones de prueba para que el programa funcione correctamente. Si no existen errores en

el programa, puede entenderse la depuracin como una etapa de refinamiento en la que se ajustan detalles para optimizar el desempeo del programa.

Si se est automatizando alguna tarea manual, es comn poner a funcionar por un tiempo y de forma paralela ambas alternativas, a fin de comparar las salidas de ambas y adquirir confianza en la solucin automatizada.

1.6 DOCUMENTACIN

Es la fase ms ignorada por la mayora de los programadores noveles, por razones de tiempo, costos o simple pereza. Pero no documentar los programas es un mal hbito en programacin y un gran error. Ser muy difcil a los usuarios entender un programa si no cuentan con un manual de operaciones (el Manual de Usuario). Tambin para los programadores que necesiten darle mantenimiento o hacerle modificaciones si no existe ninguna documentacin acerca de sus fases de desarrollo. Incluso ser difcil de entender para el mismo autor, algn tiempo despus.

La documentacin es la gua o comunicacin escrita en sus variadas formas, ya sea en enunciados, procedimientos, dibujos o diagramas y sirve para ayudar a comprender o usar un programa o para facilitar futuras modificaciones (mantenimiento). Recoge todos los elementos encontrados y material creado en las diferentes fases del desarrollo, adems de las normas de instalacin o las recomendaciones para la ejecucin del programa.

La documentacin se divide en tres partes: Documentacin Interna Documentacin Externa Manual del Usuario Documentacin Interna: Son los comentarios que se aaden al cdigo fuente para clarificarlo.Documentacin Externa: Es todo el material creado y empleado en las diferentes fases del desarrollo del programa. Incluye: Descripcin del Problema Narrativo con la descripcin de la solucin Autor(s) Algoritmo (diagrama de flujo y/o pseudocdigo)

Cdigo Fuente (programa) Relacin de los elementos utilizados en el programa, cada uno con su respectiva funcin Limitaciones del programa Manual del Usuario: Describe paso a paso la manera como funciona el programa, con el fin de que los usuarios pueda operarlo correctamente y obtener los resultados deseados.

1.7 MANTENIMIENTO

Es posible que el programa deba revisarse cada cierto tiempo para ajustes. Estos cambios pueden ser por la dinmica del problema, por la naturaleza del cdigo, las exigencias del tiempo o las modernas necesidades que surgen frecuentemente, por lo que se considera que ningn programa es esttico. Los programas siempre son susceptibles de mejoras y de mantenimiento. Por tales razones, es comn que se tenga que retornar a una de las fases iniciales de desarrollo para corregir o aadir funcionalidades, repitiendo el proceso en cada fase subsiguiente para introducir los cambios pertinentes y lograr que el programa funcione correctamente con los cambios realizados. Se enfatiza el hecho de que cualquier actualizacin o cambio en el programa deber reflejarse en su documentacin para que sta mantenga su vigencia.-

UNIDAD 2 ALGORITMOS

Algoritmo: Conjunto de operaciones que se utilizan para resolver un problema especfico. En este conjunto de instrucciones se indica la secuencia de operaciones que se deben realizar para, a partir de los datos de entrada, obtener el resultado buscado. El concepto de algoritmo es anterior a los ordenadores, y ampliamente utilizado en el mundo de la ciencia para la resolucin metdica de problemas. Sin embargo, con la aparicin de los ordenadores se comprob que era una herramienta ideal, ya que cualquier algoritmo puede transformarse en un programa informtico. Caractersticas del algoritmo: Tiene que ser finito (con un final), preciso (detallar el orden de las operaciones a realizar) y unvoco (al aplicar el algoritmo a los mismos datos de entrada, siempre se obtendr el mismo resultado a la salida). Un Algoritmo es un conjunto ordenado y finito de pasos o instrucciones que conducen a la solucin de un problema. La naturaleza de los problemas varan con el mbito o con el contexto donde estan planteados; as, existen problemas matemticos, qumicos, filosficos, etc. Segn esto la naturaleza de los algoritmos tambin es variada y no todos ellos pueden ser ejecutados por la computadora. En este curso consideramos aquellos algoritmos que expresan soluciones usando reglas cuantitativas cuyas instrucciones pueden ser introducidas en la computadora, a este tipo de algoritmos se denominan Algoritmos Computacionales. En la resolucin de un problema con la computadora la parte pensante esta en el algoritmo. As pues la eficacia de un programador no esta en conocer la herramienta de programacin, cosa necesaria, sino en saber resolver problemas con la computadora para lo cual se requiere conocer un concepto conocido como metodologa de la programacin cuyo eje central es el algoritmo. Una vez que la solucin de un problema ha sido expresada mediante un algoritmo el paso siguiente es convertirlo a programa para lo cual se elige un lenguaje de programacin. De modo que un programa resulta ser la implementacin de un algoritmo en un determinado lenguaje de programacin. Esto significa, por otro lado, que un algoritmo es independiente del lenguaje de programacin.

PROBLEMA -> ALGORITMO -> PROGRAMA El pseudocdigo es una herramienta algortmica que permite escribir pseudoprogramas (una imitacin de un programa real) utilizando un lenguaje de pseudoprogramacin que es una imitacin de los lenguajes de programacin de alto nivel. As, un pseudocdigo es una combinacin de smbolos (+, -, *, /, %, >, >=, <, <=, !=, ==, y, o, no), trminos (Leer, Imprimir, Abrir, Cerrar, Hacer...Mientras, Mientras...Hacer, Para...Mientras, etc) y otras caractersticas comnmente utilizadas en uno o ms lenguajes de alto nivel. No existen reglas que determinen que es o no es un pseudocdigo, sino que vara de un programador a otro. El objetivo del pseudocdigo es permitir al programador centrarse en los aspectos lgicos de la solucin evitando las reglas de sintxis de un lenguaje de programacin. Posteriormente el pseudocdigo debe ser traducido a programa usando un lenguaje de programacin de alto nivel como Java, C++, C, etc. Ejemplo 2.1:Disee un algoritmo para preparar una limonada.

INICIO Llenar una jarra con un litro de agua

Echar el jugo de tres limones Echar cuatro cucharadas de azcar Remover el agua hasta disolver completamente el azcar

FIN Ejemplo 2.2 :- Disee un algoritmo que permita hallar la suma y el promedio de tres nmeros. INICIO LEER numero1, numero2, numero3 suma = numero1 + numero2 + numero3 promedio = suma / 3 IMPRIMIR suma, promedio FIN

2.1 DEFINICION Y CARACTERISTICAS DE LOS ALGORITMOS Definicin de Algoritmo

La palabra algoritmo se deriva de la traduccin al latn de la palabra rabe alkhowarizmi, nombre de un matemtico y astrnomo rabe que escribi un tratado sobre manipulacin de nmeros y ecuaciones en el siglo IX. Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir, para dar solucin a un problema especifico.

Tipos de Algoritmos

CUALITATIVOS: Son aquellos en los que se describen los pasos utilizando palabras. CUANTITATIVOS: Son aquellos en los que se utilizan clculos numricos para definir los pasos del proceso. LAS CARACTERSTICAS DE ALGORITMO SON:

*Debe tener un punto particular de inicio. *Debe ser definido, no debe permitir dobles interpretaciones. *Debe ser general, es decir, soportar la mayora de las variantes que se puedan presentar en la definicin del problema. *Debe ser finito en tamao y tiempo de ejecucin

2.2 REGLAS PARA LA CONSTRUCCION DE ALGORITMOS.

Identificar todas las variables que intervienen en el problema a resolver. Para ello, te puedes auxiliar de una tabla como la que se muestra a continuacin: Nombre de la Posibles variable valores Descripcin Cmo tomar su valor

Una vez que las has identificado, en el algoritmo slo podrs utilizar el nombre que le has asignado. Cudate de no cambiarles nombre, ni significado, durante el desarrollo de tu algoritmo.

Toda variable debe tener un valor, ya sea por que se le solicita como entrada o por que se le asigna dentro del algoritmo. Respeta las reglas para la creacin de identificadores al momento de crear los nombres para tus variables. En el smbolo de proceso, slo se pueden utilizar los operadores aritmticos (+,-,, *, /, mod) y asignacin (=) En el smbolo condicional, slo se pueden utilizar los operadores relacionales (<, <=, >, >=, ==, !=), y los operadores lgicos (AND, OR, NOT &&, ||, ! ) Ejem.: x >z y==5 Si se trata de una condicin compuesta, el formato ser: (variable operador variable/valor) AND/OR (variable operador variable/valor) De la misma forma, en el caso de una operacin de asignacin, su formato ser: variable = variable/valor operador variable/valor Ejem.: x=y*3

2.3 TIPOS DE ALGORITMOS

La mayora de los sistemas expertos utilizan algoritmos para el razonamiento. Este planteamiento tiene una limitacin importante: el sistema es capaz de resolver solamente las situaciones previstas por quien ha diseado el algoritmo. Por este motivo nadie califica de "inteligente" a un sistema de estas caractersticas. Existen distintos tipos de algoritmos de razonamiento: Algoritmos estticos, es decir, algoritmos que funcionan siempre igual, independientemente del tipo de problema tratado. Por ejemplo, los sistemas basados en el mtodo de resolucin. Algoritmos probabilsticos, es decir, algoritmos que no utilizan valores de verdad booleanos sino continuos. Por ejemplo, los sistemas basados en lgica difusa.

Algoritmos adaptativos, es decir, algoritmos con cierta capacidad de aprendizaje. Por ejemplo, los sistemas basados en redes neuronales. Los Algortmos permiten resolver problemas computacionales mediante lenguajes de programacin. Como Ejemplo podemos poner dos de los ms usuales: Divide y Vencers: Consiste en descomponer un problema en subproblemas, resolver cada subproblema y combinar las soluciones. El resultado, es la solucin del problema original. Si los subproblemas son todava demasiado grandes, se utiliza la misma tctica con ellos, esto es, dividirlos a ellos tambin, utilizando un algoritmo recursivo que vaya dividiendo ms el sub-problema hasta que su solucin sea trivial. Backtracking: El Backtracking o esquema de vuelta atrs, es un esquema que de forma sistemtica y organizada, genera y recorre un espacio que contiene todas las posibles secuencias de decisiones. Este espacio se denomina el espacio de bsqueda del problema, y se representa como un rbol sobre el que el algoritmo hace un recorrido en profundidad partiendo de la raz. Se conoce de antemano el orden en que se van a generar y recorrer sus nodos, y se contina recorriendo el rbol mientras se cumplan las restricciones. ste mtodo tiene tres posibles esquemas: encontrar una solucin factible, encontrar todas las soluciones factibles, encontrar la mejor solucin factible. Un algoritmo pueden adems ser: Deterministico, s en cada paso del algoritmo, es posible predecir la salida para una entrada dada. No determinsticos, s existe uno ms pasos en el algoritmo, para el cual es posible predecir cual ser la salida. Por esa razn se tienen los siguiente tipos de problemas: I) Polinomial: Existe al menos un algoritmo polinomial determinstico que lo resuelve. II) No -Polinomiales: Solo existen algoritmos polinomiales del tipo no deterministico que los resuelven.

2.4 EJERCICIOS CON ALGORITMOS 1.1 X(X-1) Inicio Var; x, y :Enteros X=0, Z=0 Dame X Z=X-1 S Z <> 0 entonces vea 5 sino X = X * Z Fin 1.2 (x) + (x+1)..... x = 100 Inicio Var; x : Enteros x=1 x=x+1 S x <= 100 vea a 6 si no ve a 4 Fin 1.3 (x + 2) + (x+4) + (x+6) ..... la suma >= 200 Inicio Var; x, z, Suma :Enteros x = 0, z = 0, suma=0 Dame X z=z+2 Suma= Suma + (x + z) Si Suma es >= 200 vea a 8 sino vea a 5 Fin 1.4 Xx-y Inicio Var; X,Y,Z : Enteros X=0, Y=0, Z=0 Dame X Dame Y Si Y > X entonces vea 5 sino vea 7 Z=X W = (x - y) - 1 Si W= 0 entonces vea 10 sino vea 11 Z=1 Z=Z*X Si w <> 0 entonces vea 7 sino vea 10 Fin 1.5 Ao Bisiesto Inicio a, z : Entero Dame A z = a mod 4 Si z = 0 entonces vea 6 si no vea 7 Imprime el ao es bisiesto vea 8 Imprime el ao no es bisiesto vea 8 Fin 1.6 Nmero Mayor, Medio y menor

Inicio a, b : Reales Dame a Dame b S a > b entonces vea 7 S no entonces vea 8 Imprime "a" es mayor que b vea 9 Imprime "b" es mayor que a vea 9 Fin 1.7 Distinguir si es o no es nmero primo Inicio a,n,b : Entero Dame a S (n > 100) o (n < 1) entonces vea 3 S (n = 1) o (n =2) entonces vea 11 a=1 a=a+1 b = n mod a Si (b = 0) entonces vea 7, sino vea 10 N es primo vea 12 N no es primo ve a 12 Fin 1.8 x!/1 + x!/3 + x!/2 + x!/5 + x!/4 Inicio Var Fac, x,z, y :entero w:Real Dame X fac = x z=x z=z-1 fac = fac * z S z <> 1 entonces vea 6 X = -2 x = x + 3 vea 11 x = x - 1 S x= 1 entonces w=w + (fac/x) x = x + 2 fin si si no vea 13 S x <= 20 entonces vea 14 w = w + ( fac / x ) y = x mod 2 Si y = 0 entonces vea 17 Fin

UNIDAD 3: DIAGRAMAS DE FLUJO LINEAL Diagrama de flujo

Diagrama de flujo sencillo con los pasos a seguir si una lmpara no funciona. Un diagrama de flujo es una forma ms tradicional de especificar los detalles algortmicos de un proceso y constituye la representacin grfica de un proceso multifactorial. Se utiliza principalmente en programacin, economa y procesos industriales, pasando tambin a partir de estas disciplinas a formar parte fundamental de otras, como la psicologa cognitiva; estos diagramas utilizan una serie de smbolos con significados especiales. Son la representacin grfica de los pasos de un proceso, que se realiza para entenderlo mejor. Son modelos tecnolgicos utilizados para comprender los rudimentos de la programacin lineal.

3.1 TIPOS DE OPERADORES operadores Son elementos que relacionan de forma diferente, los valores de una o mas variables y/o constantes. Es decir, los operadores nos permiten manipular valores.

3.1.1 OPERADORES ARITMTICOS.

Los operadores aritmticos permiten la realizacin de operaciones matemticas con los valores (variables y constantes).

Los operadores aritmticos pueden ser utilizados con tipos de datos enteros o reales. Si ambos son enteros, el resultado es entero; si alguno de ellos es real, el resultado es real.

Operadores Aritmticos + Suma - Resta * Multiplicacin / Divisin

Todas las expresiones entre parntesis se evalan primero. Las expresiones con parntesis anidados se evalan de dentro a fuera, el parntesis ms interno se evala primero.

3.1.2 OPERADORES RELACIONALES.

Se utilizan para establecer una relacin entre dos valores. Luego compara estos valores entre si y esta comparacin produce un resultado de certeza o falsedad (verdadero o falso). Los operadores relacionales comparan valores del mismo tipo (numricos o cadenas). Estos tienen el mismo nivel de prioridad en su evaluacin. Los operadores relacinales tiene menor prioridad que los aritmticos.

3.1.3 OPERADORES LOGICOS Estos operadores se utilizan para establecer relaciones entre valores lgicos. Estos valores pueden ser resultado de una expresin relacional.

3.2 CONCEPTOS 3.2.1 EXPRECIONES DIAGRAMA DE FLUJO


LEER ESCRIBIR INICIO FIN IF (Decisin) END IF READ WRITE

3.2.2 CONTADORES Un contador es una variable cuyo valor se incrementa o decrementa en una cantidad constante cada vez que se produce un determinado suceso o accin. Los contadores se utilizan con la finalidad de contar sucesos o acciones internas de un bucle; deben realizar una operacin de inicializacin y posteriormente las sucesivas de incremento o decremento del mismo. La inicializacin consiste en asignarle al contador un valor. Se situar antes y fuera del bucle. Representacin: <nombre del contador> nombre del contador> + <valor constante> Si en vez de incremento es decremento se coloca un menos en lugar del ms. Ejemplo: i = i + 1 3.2.3 ACUMULADORES Es una variable que suma sobre s misma un conjunto de valores para de esta manera tener la suma de todos ellos en una sola variable. La diferencia entre un contador y un acumulador es que mientras el primero va aumentando de uno en uno, el acumulador va aumentando en una cantidad variable. Representacin: <Nombre del acumulador> <nombre del acumulador> + <valor variable> Valores Suma = 0 Producto = 1 de inicializacin

3.3 DEFINICIN Y CLASIFICACIN DE DIAGRAMAS.

Definicin de Diagrama de flujo

Representacin grfica, mediante la utilizacin de signos convencionales, del proceso que sigue la informacin en un programa determinado. Se utilizan habitualmente en la fase de desarrollo de aplicaciones por los programadores. El diagrama de flujo o Flowchart es una de las tcnicas de representacin de algoritmos ms antigua, y consiste en representar mediante smbolos las operaciones a realizar. Por ejemplo: el inicio y el fin del algoritmo se representan con un smbolo elptico, las entradas y salidas con un paralelogramo, las decisiones con un rombo, los procesos con un rectngulo, etc.

-Control de FlujoControl de Flujo Mecanismo de protocolo que permite al receptor controlar la razn a la que enva datos un transmisor. El control de flujo hace posible que un receptor que... -Diagrama IPDiagrama IP Forma de un paquete enviado por una interred TCP/IP. Cada datagrama tiene una cabecera que identifica tanto al transmisor como al receptor, seguida de datos.... -Casos de usoCasos de uso Un casos de uso es una secuencia de transacciones que son desarrolladas por un sistema en respuesta a un evento que inicia un actor sobre el propio... -BIT (Binario)Un bit no es otra cosa que un dgito dentro del sistema de numeracin binario, es decir que un bit puede ser un 1 o un 0. El trmino proviene... -FicheroFichero Denominado tambin como archivo, consiste en una unidad de informacin en la que se almacena el resultado de utilizar un programa de proceso de textos, base de datos o... CLASIFICACIN DE LOS DIAGRAMAS DE FLUJO Por su presentacin: De bloque: Se representan en trminos generales con el objeto de destacar determinados aspectos.

De detalle: Plasman las actividades en su ms detallada expresin. Por su formato: De formato vertical: En el que el flujo de las operaciones va de arriba hacia abajo y de derecha a izquierda. De formato horizontal: En el que la secuencia de las operaciones va de izquierda a derecha en forma descendente. De formato tabular: Tambin conocido como de formato columnar o panormico, en el que se presenta en una sola carta el flujo total de las operaciones, correspondiendo a cada puesto o unidad una columna. De formato arquitectnico: Muestra el movimiento o flujo de personas, formas, materiales, o bien la secuencia de las operaciones a travs del espacio donde se realizan. Por su propsito: De forma: El cual se ocupa fundamentalmente de documentos con poca y/o ninguna descripcin de operaciones. Vertical Horizontal De labores: Indica el flujo o secuencia de las operaciones, as como quin o en donde se realiza y en qu consiste sta. De mtodo: Muestra la secuencia de operaciones, la persona que las realiza y la manera de hacerlas. Analtico: Describe no slo el procedimiento quin lo hace, y cmo hacer cada operacin, sino para qu sirven. De espacio: Indica el espacio por el que se desplaza una forma o una persona. Combinados: Emplean dos o ms diagramas en forma integrada. De ilustraciones y texto: Ilustra el manejo de la informacin con textos y dibujos. Asistido por computadora: El flujo de informacin se hace con recursos de software.

3.4 SIMBOLOGA

Inicio o fin del programa

Pasos, procesos o lneas de instruccion de programa de computo

Operaciones de entrada y salida

Toma de desicines y Ramificacin

Conector para unir el flujo a otra parte del diagrama

Cinta magntica

Disco magntico

Conector de pagina

Lneas de flujo

Anotacin

Display, para mostrar datos

Enva datos a la impresora

Dentro de los simbolos fundamentales para la creaacin de diagramas de flujo, los smbolos grficos son utilizdos especificamente para para operacines aritmticas y relacines condicionales. La siguiente es una lista de los smbolos ms comunmente utilizados: + * / = > < Sumar Menos Multiplicacin Divisin Mas o menos Equivalente a Mayor que Menor que Mayor o igual que Menor o igual que

o <> Diferente de Si No True False

3.5 ESTRUCTURA DE CONTROL

En lenguajes de programacin, las estructuras de control permiten modificar el flujo de ejecucin de las instrucciones de un programa. Con las estructuras de control se puede: De acuerdo a una condicin, ejecutar un grupo u otro de sentencias (If-ThenElse y Select-Case)

Ejecutar un grupo de sentencias mientras exista una condicin (Do-While) Ejecutar un grupo de sentencias hasta que exista una condicin (Do-Until) Ejecutar un grupo de sentencias un nmero determinado de veces (For-Next) Etc Todas las estructuras de control tienen un nico punto de entrada y un nico punto de salida. Las estructuras de control se puede clasificar en : secuenciales, iterativas y de control avanzadas. Esto es una de las cosas que permite que la programacin se rija por los principios de la programacin estructurada. Los lenguajes de programacin modernos tienen estructuras de control similares. Bsicamente lo que vara entre las estructuras de control de los diferentes lenguajes es su sintaxis, cada lenguaje tiene una sintaxis propia para expresar la estructura. Otros lenguajes ofrecen estructuras diferentes, como por ejemplo los comandos guardados.

3.5.1ESTRUCTURA SECUENCIAL.

Se caracteriza porque una accin se ejecuta detrs de otra. El flujo del programa coincide con el orden fsico en el que se han ido poniendo las instrucciones. Dentro de este tipo podemos encontrar operaciones de inicio/fin, inicializacin de variables, operaciones de asignacin, clculo, sumarizacin, etc. Este tipo de estructura se basa en las 5 fases de que consta todo algoritmo o programa:

Definicin de variables (Declaracin) Inicializacin de variables. Lectura de datos Clculo Salida

3.5.2 ESTRUCTURA DE CONTROL

Estructura de control selectivas: IF simple. Sentencia IF Toma una decisin referente a la accin a ejecutar en un programa entre dos alternativas basndose en el resultado (verdadero o falso) en una expresin. Sintaxis: if (condicin) Instruccin ejecutada cuando la condicin es "verdadera"; else Instruccin ejecutada cuando la condicin es "falsa"; Cuando en un programa que se est ejecutando se encuentra la instruccin if, la condicin ser evaluada para determinar su valor numrico, el cual ser interpretado como verdadero o falso. Si la condicin produce cualquier valor numrico positivo o negativo que no sea cero, ser considerada como condicin "verdadera" y se ejecutar la instruccin que sigue al if. Si la condicin produce un valor numrico de cero, ser considerada "falsa" y se ejecutar la instruccin que sigue al else La parte del else es opcional y se puede omitir. Los operadores relacionales o lgicos sern utilizados para operndos con nmeros enteros, flotantes, dobles o caracter en la instruccin if.

Ejemplos: edad > 40 3<4 da != 5 largo <= 50 marcador == terminar 2.0 > 3.3 temp > 98.6 num_id ==682 hora > 40

edad > 40 && edad < 20 // si edad es mayor a 40 Y edad

es menor que 20 numero > 2 && numero <= 9 // si numero es mayor a 2 Y numero es menor o igual que 9 numero > 5 || numero <= 15 // si numero es mayor a 5 O numero es menor o igual que 15 numero > 8 || numero <= 12 // si numero es mayor a 8 O numero es menor o igual que 12 Ejemplos invlidos: largo =< 50 // operador fuera de orden 2.0 >>3 // operador invalido marcador = = terminar // no se permiten espacios intermedios Sintaxis a utilizar dentro de un programa: #include<iostream.h> #include<dos.h> #include<conio.h> int main ( ) { textbackground(3) ; // sirve para asignar color al fondo de pantalla clrscr() ; textcolor(2) ; // sirve para asignar color al texto clrscr() ; int num; cout<<"Dame un numero al azar no mayor a 30" << endl; cin>>num; if ( num > 30 ) cout<<"Nmero invalido"; if ( num > 1 ) && (num < 30) cout<<"Bien acertaste el rango";

getch(); return 0; }

3.5.2.1 IF, IF ELSE

La sentencia if La sentencia if, acta como cabra esperar. Si la condicin es verdadera, la sentencia se ejecuta, de otro modo, se salta dicha sentencia, continuando la ejecucin del programa con otras sentencias a continuacin de sta. La forma general de la sentencia if es: if (condicin) sentencia;

Si el resultado del test es verdadero (true) se ejecuta la sentencia que sigue a continuacin de if, en caso contrario, falso (false), se salta dicha sentencia, tal como se indica en la figura. La sentencia puede consistir a su vez, en un conjunto de sentencias agrupadas en un bloque. if (condicin){ sentencia1; sentencia2; }

En el siguiente ejemplo, si el nmero del boleto que hemos adquirido coincide con el nmero aparecido en el sorteo, nos dicen que hemos obtenido un premio. if(numeroBoleto==numeroSorteo) System.out.println("has obtenido un premio");

La sentencia if...else La sentencia if...else completa la sentencia if, para realizar una accin alternativa if (condicin) sentencia1; else sentencia2

Las dos primeras lneas indican que si la condicin es verdadera se ejecuta la sentencia 1. La palabra clave else, significa que si la condicin no es verdadera se ejecuta la sentencia 2, tal como se ve en la figura.. Dado que las sentencias pueden ser simples o compuestas la forma general de if...else es if (condicin){ sentencia1; sentencia2;

}else{ sentencia3 sentencia4; sentencia5; } Existe una forma abreviada de escribir una sentencia condicional if...else como la siguiente: if (numeroBoleto==numeroSoreteo) premio=1000; else premio=0; en una sola lnea premio=(numeroBoleto==numeroSoreteo) ? 1000 : 0; Un ejemplo significativo es el siguiente: el signo de un nmero elevado a una potencia par es positivo, y es negativo cuando est elevado a una potencia impar. int signo=(exponente%2==0)?1:-1; La condicin entre parntesis es la siguiente: un nmero es par, cuando el resto de la divisin entera de dicho nmero entre dos vale cero.

3.5.2.2 SWITCH

En la sentencia switch, se compara el valor de una variable o el resultado de evaluar una expresin, con un conjunto de nmeros enteros valor1, valor2, valor3, .. o con un conjunto de caracteres, cuando coinciden se ejecuta el bloque de sentencias que estn asociadas con dicho nmero o carcter constante. Dicho bloque de sentencias no est entre llaves sino que empieza en la palabra reservada case y termina en su asociado break. Si el compilador no encuentra coincidencia, se ejecuta la sentencia default, si es que est presente en el cdigo. Veamos ahora un ejemplo sencillo: dado el nmero que identifica al mes (del 1 al 12) imprimir el nombre del mes.

public class SwitchApp1 { public static void main(String[] args) { int mes=3; switch (mes) { case 1: System.out.println("Enero"); break; case 2: System.out.println("Febrero"); break; case 3: System.out.println("Marzo"); break; case 4: System.out.println("Abril"); break; case 5: System.out.println("Mayo"); break; case 6: System.out.println("Junio"); break; case 7: System.out.println("Julio"); break; case 8: System.out.println("Agosto"); break; case 9: System.out.println("Septiembre"); break; case 10: System.out.println("Octubre"); break; case 11: System.out.println("Noviembre"); break; case 12: System.out.println("Diciembre"); break; default: System.out.println("Este mes no existe"); break; } } }

3.5.3 REPETITIVAS Estructura de control repetitiva o ciclo For

3.5.3.1 FOR

Ciclo el cual permite ejecutar una sentencia simple o compuesta repetidamente un numero de veces conocido, la sentencia adecuada FOR.

Sintaxis for ( inicializacin; condicin; variacin ) { sentencias } Ejemplo:

int i;

int i;

for ( i = 1; i <= for ( i = 10; i >= 10; i++ ) 1; i - - ) { printf ("hola"); } } { printf ("hola");

3.5.3.2 WHILE

Evalan una expresin al inicio y ejecuta la sentencia un numero de veces requerido. Sintaxis: Sentencia Ejemplo: #include<iostream.h> #include<conio.h> #include<dos.h> int main () { int i; i=1; while ( i <= 10) { cout <<" hola"; i = i + 1; // Es los mismo que i getch ++; Puesto que los dos son (); contadores while ( expresin )

} return 0; }

3.5.3.3 DO WHILE

Acompaada del while sirve para repetir la ejecucin de sentencias en funcin de una condicin al menos una vez. Sintaxis: { sentencias } while ( condicin ); Ejemplo 1: #include<iostream.h> #include<conio.h> #include<dos.h> main () { int i; i = 1; do { cout << i = i while ( i <= 10); " + hola"; 1; do

} getch (); return 0; }

3.6 ELABORACIN DE DIAGRAMAS

Los Diagramas de flujo deben escribirse de arriba hacia abajo, y/o de izquierda a derecha. Los smbolos se unen con lneas, las cuales tienen en la punta una flecha que indica la direccin que fluye la informacin procesos, se deben de utilizar solamente lneas de flujo horizontal o verticales (nunca diagonales). Se debe evitar el cruce de lneas, para lo cual se quisiera separar el flujo del diagrama a un sitio distinto, se pudiera realizar utilizando los conectores. Se debe tener en cuenta que solo se vana utilizar conectores cuando sea estrictamente necesario. No deben quedar lneas de flujo sin conectar Todo texto escrito dentro de un smbolo debe ser legible, preciso, evitando el uso de muchas palabras. Todos los smbolos pueden tener ms de una lnea de entrada, a excepcin del smbolo final. Solo los smbolos de decisin pueden y deben tener mas de una lnea de flujo de salida. Ejemplos de diagramas de flujo Diagrama de flujo que encuentra la suma de los primeros 50 numeros naturales

Bueno, y ahora la descripcin del diagrama anterior Suma, es la variable a la que se le va agregando la valor de cada nmero natural. N, es el contador. ste recorrer lo nmeros hasta llegar al 50. El primer bloque indica el inicio del Diagrama de flujo

El segundo bloque, es un Smbolo de procesos En este bloque se asume que las variables suma y N han sido declaradas previamente y las inicializa en 0 para comenzar a el conteo y la suma de valores (Para declararlas existe el bloque Tarjeta perforada).

El tercer bloque, es tambin un Smbolo de procesos En ste paso se incrementa en 1 la variable N (N = N + 1). Por lo que, en la primera pasada esta N valdr 1, ya que estaba inicializada en 0.

El cuarto bloque es exactamente lo mismo que el anterior Pero en ste, ya se le agrega el valor de N a la variable que contendr la suma (En el primer caso contendr 1, ya que N = 1). El quinto bloque es uno Smbolo de Toma de decisiones y Ramificacin Lo que hay dentro del bloque es una pregunta que se le hace a los valores que actualmente influyen en el proceso (Por decir algo, no se como decirlo, soy

muy sope :D) Es N=50?, Obviamente la respuesta es no, ya que N todava es 1. por lo que el flujo de nuestro programa se dirigir haca la parte en donde se observa la palabra no: Tercer Bloque, ste le sumar 1 (N=N+1) y vuelve a llegar a ste bloque, donde preguntar Es N=50?... No!, todava es 2. Ha pues, regresa al Tercer bloque y vuelve hacer lo mismo. Y as hasta llegar a 50, obteniendo as la suma de los primeros 50 primeros nmeros naturales. Por ltimo indicamos que el resultado ser mostrado en la impresora (Este lo

puedes cambiarlo por el display para mostrar datos).

Fin del programa (o diagrama)

3.7 PSEUDOCDIGO

El pseudocdigo es un lenguaje de especificacin de algoritmos. En s es una mezcla de lenguaje de programacin y de lenguaje natural. La idea del pseudocdigo consiste en aprovechar la flexibilidad y poder expresivo del lenguaje natural por un lado, y las reglas de composicin de los lenguajes de programacin de alto nivel por el otro. El pseudocdigo utiliza para representar las acciones sucesivas palabras reservadas en ingls - similares a sus homnimas en los lenguajes de programacin -, tales como start, end, stop, if-then-else, while etc. La escritura del pseudocdigo exige normalmente la indentacin (sangra en el margen izquierdo) de diferentes lneas. La representacin en pseudocdigo del diagrama de flujo del ejemplo anterior sera:

Start {clculo de impuesto y salario} read nombre, hora, precio_hora

1 *salario_bruto - tasa write nombre, salario_bruto, tasa, salario_neto end

El algoritmo comienza con la palabra start y finaliza con la palabra end, en ingls (en espaol, inicio y fin). Entre estas palabras, slo se escribe una instruccin o accin por lnea. La lnea encerrada entre llaves { ... } se denomina comentario. Es una informacin al lector del programa y no realiza ninguna instruccin ejecutable; slo tiene efecto de documentacin interna del programa. Algunos autores

3.8 Prueba de escritorio

Diseo de un algoritmo que dadas 4 calificaciones (Cal1, Cal2, Cal3, Cal4), calcule la calificacin promedio y escriba el resultado final junto con un mensaje explicativo.

Anlisis del problema Entrada: Leer las calificaciones individuales Proceso: Calcular la calificacin promedio Salida: Escribir resultado con mensaje explicativo Diagrama de flujo

Pseudocdigo Inicio {Calculo del promedio de calificaciones} Leer Cal1, Cal2, Cal3, Cal4

Escribir ("Resultado final es", Prom) Fin

UNIDAD 4: DISEO MODULAR 4.1 FUNCIONES Este tipo de programacin se apega bien al diseo descendente porque enfatiza las interfaces entre los mdulos, mis qu mantenerlas ignoradas hasta el final del desarrollo del sistema. De manera ideal, cada mdulo debe ser funcionalmente cohesivo, de tal manera que satisfaga slo una funcin. El disueno de programas modulares, tiene tres ventajas bsicas: Primero, los mdulos son ms fciles de escribir y de revisar, ya que estn virtualmente autocontenidos. La deteccin de un error dentro de un mdulo es menos complicada, ya que los problemas asociados a un mdulo no llegarn a trascender a los otros. Una segunda ventaja del diseo modular, es que el mantenimiento de los mdulos es ms fcil. Las modificaciones pueden limitarse a unos cuantos mdulos y no al programa completo. Una tercera ventaja del diseo modular es que la problemtica de los mdulos es ms fcil de entender, ya que son sistemas autocontenidos. Eso significa que un lector entender la funcin de un mdulo especific, con slo tomar su listado de cdigo. Algunos lineamientos para la programacin modular son: Mantener cada mdulo de un tamao manejable (de manera ideal incluyendo slo una funcin). Prestar atencin particular en las interfaces criticas (esto es, a los datos y a las variables de control que pasan entre los mdulos). 3. Minimizar el numero de mdulos que el usuario necesite modificar cuando haga cambios. 4. Mantener las relaciones jerrquicas establecidas en las etapas de descenso. Otra definicin La programacin modular es un paradigma de programacin que consiste en dividir un programa en mdulos o subprogramas con el fin de hacerlo ms legible y manejable. Se presenta histricamente como una evolucin de la programacin estructurada para solucionar problemas de programacin ms grandes y complejos de lo que sta puede resolver. Al aplicar la programacin modular, un problema complejo debe ser dividido en varios subproblemas ms simples, y estos a su vez en otros subproblemas ms

simples. Esto debe hacerse hasta obtener subproblemas lo suficientemente simples como para poder ser resueltos fcilmente con algn lenguaje de programacin. sta tcnica se llama refinamiento sucesivo, divide y vencers anlisis descendente (Top-Down). Un mdulo es cada una de las partes de un programa que resuelve uno de los subproblemas en que se divide el problema complejo original. Cada uno de estos mdulos tiene una tarea bien definida y algunos necesitan de otros para poder operar. En caso de que un mdulo necesite de otro, puede comunicarse con ste mediante una interfaz de comunicacin que tambin debe estar bien definida. Si bien un modulo puede entenderse como una parte de un programa en cualquiera de sus formas y variados contextos, en la prctica es comn representarlos con procedimientos y funciones. Adicionalmente, tambin pueden considerarse mdulos las libreras que pueden incluirse en un programa o, en programacin orientada a objetos, la implementacin de un tipo de dato abstracto.

4.1.1 SIN PARAMETROS

4.1.2 CON PARMETROS (ARGUMENTOS)

A los parmetros tambin se les conoce como argumentos y tienen la misin de comunicar al procedimiento con el programa que lo llama. Por ejemplo, si quieres hacer un subprograma que multimplique dos nmeros, lo ms cmodo es que al llamar al procedimiento le pases los valores que participarn en la operacin. Podra ser algo como: procedure producto (a,b : integer; var rdo : integer) ; (* resto del procedimiento *) En el ejemplo anterior se observan las dos clases de argumentos que existen en Pascal:

Los parmetros por valor Los parmetros por referencia

Los parmetros por valor tiene dicho nombre porque lo que recibe el subprograma no son ms que copias de los valores de los datos que el programa invocador le pasa. Por tanto si en el procedimiento modificamos

alguno de estos valores, los datos originales permaneceran inalterados. En el ejemplo, son a y b. En cambio, en los parmetros por referencia lo que se pasa al procedimiento son los datos en s. Y si ste los modifica, los cambios permanecern una vez que la ejecucin vuelva al mdulo que invoc al procedimiento. Se utilizan para obtener valores de los clculos que haga un subprograma, y en el anterior ejemplo es rdo.

Das könnte Ihnen auch gefallen