00 manual de programacion enero 2013

32
DIRECCIÓN GENERAL DE EDUCACIÓN TECNOLÓGICA INDUSTRIAL CENTRO DE ESTUDIOS TECNOLÓGICOS INDUSTRIAL Y DE SERVICIOS No. 43, XOCHITEPEC MOR. Enero 2013

Upload: jose-eleazar-peralta-quiroz

Post on 02-Jan-2016

31 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 00 Manual de Programacion Enero 2013

DIRECCIÓN GENERAL DE EDUCACIÓN TECNOLÓGICA INDUSTRIALCENTRO DE ESTUDIOS TECNOLÓGICOS INDUSTRIAL Y DE SERVICIOS No.

43, XOCHITEPEC MOR.

Enero 2013

Page 2: 00 Manual de Programacion Enero 2013

Aplicar los principios de programación en la solución de problemas

Fundamentos de Programación

1. NOCIONES BÁSICAS DE PROGRAMACIÓN EN LA SOLUCIÓN DE PROBLEMAS

1.1. RESOLUCIÓN DE PROBLEMAS COMPUTACIONALES

En la vida diaria nos enfrentamos continuamente a problemas que debemos resolver en lo posible felizmente. Así como cada in-dividuo tiene formas de encarar un problema y su propia manera de solucionarlo, computacionalmente hablando podemos hacer un paralelo. Ante la presentación de un problema encarar la mejor forma de resolverlo para arribar al resultado esperado y co-rrecto es un desafío. Para ello debemos comprender exactamente qué se pide, qué resultados se pretenden y que restricciones y/o condiciones existen. Para realizar lo antes dicho dividiremos la resolución de un problema en etapas, las cuales enunciamos y definimos a continuación.

1.2. ETAPAS PARA LA RESOLUCIÓN DE PROBLEMAS

A. Definición del problema Está dada por la formulación del problema en forma correcta y completa. Esta enunciación de lo que se desea es primordial para el éxito de la resolución.

B. Análisis del problema A partir del estudio del problema se deberá identificar y conocer las partes principales del mismo y de esa manera determi-nar los siguientes conjuntos:

• de DATOS : es la información con que contamos para resolver el problema. • de RESULTADOS : es lo que se desea obtener. • de CONDICIONES: una o más relaciones que vinculan los dos conjuntos anteriores y que permitirán plantear la solu -

ción del problema.

C. Programación Esta etapa consiste en obtener la solución del problema dado. Se divide en dos subetapas:

Elección y creación del método. Se trata de buscar un procedimiento o método general que permita resolver el pro-blema planteado utilizando una computadora. Es muy factible que se encuentren varios métodos para hacerlo, lo importante es determinar la “mejor alternativa”, de acuerdo a distintos parámetros que se establezcan para esta se-lección. Esta puede ser la que produzca los resultados esperados en el menor tiempo y al menor costo o sólo en el menor tiempo u otras.

Codificación. Consiste en expresar el método elegido en un lenguaje, llamado lenguaje de programación, que pueda ser interpretado por la computadora. Esta subetapa será objeto de estudio en años superiores.

D. Prueba Esta etapa consiste en la ejecución del código del método elegido, es decir, suministrar los datos al computador, y obtener los resultados. Luego se analizarán los mismos determinando si son realmente los esperados. Caso contrario, deberán anali -zarse las etapas previas, comenzando por la última hacia atrás, y realizar las modificaciones necesarias, repitiendo este pro-ceso hasta obtener los resultados esperados.

1.3. ESTRATEGIA

El diseño de la estrategia consiste en encontrar un método que nos permita llegar a resolver el problema planteado. Como pri-mer paso de esta etapa, debemos preparar un plan o esquema general de las tareas que deben realizarse para llegar a la solu-ción. Este esquema se denomina estrategia y debe ser una lista de QUÉ hacer.

1.3.1. ¿CÓMO SE DISEÑA UNA ESTRATEGIA?

1

Page 3: 00 Manual de Programacion Enero 2013

Aplicar los principios de programación en la solución de problemasPor lo dicho, diseñar una estrategia consiste en dividir o descomponer el problema original en una sucesión de problemas más simples, de tamaño suficientemente pequeño como para que cada uno de ellos pueda ser comprendido en su totalidad. Ésto, permitirá atacar la solución de cada problema simple por separado e independientemente de los demás, volviendo a aplicar este enfoque a cada uno de los subproblemas hasta llegar a subproblemas de solución simple. Una vez que todos ellos han sido re -sueltos, se puede decir que el problema original ha sido resuelto.

Este proceso de descomposición de un problema partiendo de la formulación completa del problema hasta llegar a problemas elementales de simple solución, se llama diseño descendente, también conocido como top-down, método de refinamiento suce-sivo o diseño compuesto.

2. ALGORITMOS

2.1. DEFINICIÓN DE ALGORITMO

Planteada una estrategia indicando QUÉ tareas hacer, debemos especificar una lista detallada de CÓMO hacerlas, llegando así a definir una solución paso a paso del problema llamada algoritmo. La descripción de la solución detallada por medio de un algorit -mo constituye el segundo paso en la etapa de elección del método.

La palabra algoritmo se utiliza, en general, como sinónimo de procedimiento, método o técnica. Pero en el área de computación tiene un significado más específico.

Un algoritmo es un conjunto finito de operaciones no ambiguas y ordenadas (instrucciones - pasos) que seguidos en un determi-nado orden permiten resolver un tipo de problema.

Un algoritmo puede expresarse de distintas maneras: en forma gráfica, como un diagrama de flujo, en forma de código como en pseudocódigo o un lenguaje de programación, en forma explicativa, etc.

2.2. CARACTERÍSTICAS PRINCIPALES DE UN ALGORITMO

Definido: cada paso debe ser enunciado en forma clara y precisa, y no debe dar lugar a ambigüedades. Para los mismos datos el algoritmo debe dar siempre los mismos resultados

debe resolver el problema para el que fue formulado. Lógicamente no sirve un algoritmo que no resuelve ese proble-ma. En el caso de los programadores, a veces crean algoritmos que resuelven problemas diferentes al planteado.

Los algoritmos son independientes del ordenador. Los algoritmos se escriben para poder ser utilizados en cualquier má-quina.

deben de ser precisos. Los resultados de los cálculos deben de ser exactos, de manera rigurosa. No es válido un algorit-mo que sólo aproxime la solución.

deben de ser finitos. Deben de finalizar en algún momento. No es un algoritmo válido aquel que produce situaciones en las que el algoritmo no termina.

deben de poder repetirse. Deben de permitir su ejecución las veces que haga falta. No son válidos los que tras ejecutar-se una vez, ya no pueden volver a hacerlo por la razón que sea.

General: la solución debe ser aplicable a un tipo de problemas y no a un problema particular.

2.3. CARACTERÍSTICAS DESEABLES DE UN ALGORITMO

Validez. Un algoritmo es válido si carece de errores. Un algoritmo puede resolver el problema para el que se planteó y sin embargo no ser válido debido a que posee errores

Eficiencia. Un algoritmo es eficiente si obtiene la solución al problema en poco tiempo. No lo es si es lento en obtener el resultado.

Óptimo. Un algoritmo es óptimo si es el más eficiente posible y no contiene errores. La búsqueda de este algoritmo es el objetivo prioritario del programador. No siempre podemos garantizar que el algoritmo hallado es el óptimo, a veces sí.

2.4. ELEMENTOS DE UN ALGORITMO

2

Page 4: 00 Manual de Programacion Enero 2013

Aplicar los principios de programación en la solución de problemas Entrada. Los datos iniciales que posee el algoritmo antes de ejecutarse. Proceso. Acciones que lleva a cabo el algoritmo. Salida. Datos que obtiene finalmente el algoritmo.

Teniendo en cuenta las características mencionadas previamente podemos decir que: un algoritmo es una secuencia ordenada y finita de pasos que constituyen un método general para resolver un tipo de problemas.

Es de notar que esta definición, se refiere a ‘...resolver un tipo de problemas .....’ y no hace hincapié en el uso del computador como herramienta para su resolución. Esto se debe a que el concepto de algoritmo se aplica a problemas computacionales que van a ser resueltos por medio de un computador y a problemas no computacionales, en cuya resolución no interviene esta herra-mienta. En ambos casos el lenguaje usado en la descripción del algoritmo debe ser comprensible para el destinatario o para quien lo va a ejecutar. Por lo visto, para cualquier problema para el que pueda especificarse un método finito de solución puede definirse un algoritmo.

Ejemplos que se pueden presentar en la vida diaria:

• una receta de cocina • las instrucciones para utilizar un aparato electrónico • el camino para llegar a un lugar determinado desde un punto de partida

Ejemplos de algoritmos computacionales:

• Calcular los sueldos de los empleados de una empresa • Actualizar el stock de un comercio • Calcular las raíces de una ecuación

2.5. FORMALIZACIÓN

Formalizaremos algunos conceptos vistos anteriormente.

Hemos mencionado que la forma de enunciar la solución a un problema planteado depende del ejecutante o también llamado procesador. Por lo tanto llamaremos así a toda entidad capaz de entender un enunciado y ejecutar los pasos descriptos en un al -goritmo. Si bien en los ejemplos vistos el ejecutante se trataba de una persona en la resolución de problemas computacionales debemos pensar que el procesador será la computadora.

También hemos notado que para poder realizar su tarea el ejecutante debe contar con los recursos adecuados. El conjunto de es -tos recursos existentes en el momento de la ejecución de un trabajo constituye el ambiente del problema.

El método que se elija para proponer la solución de un tipo de problema depende del ejecutante y de los recursos o elementos con que se cuenta (ambiente). Cuando definimos algoritmo hemos hablado de un conjunto de pasos o acciones.

Una acción es un evento que modifica el ambiente y puede ser:

• Una acción Primitiva. Es cuando para un ejecutante dado su enunciado es suficiente para que pueda ser ejecutada sin in-formación adicional.

• Una acción no-primitiva es aquella que puede ser descompuesta en acciones primitivas para un ejecutante dado.

También hemos visto que en los ejemplos se nos presentan situaciones que indican alternativas: “SI se tiene soda ...”, esta no es una acción porque no modifica el ambiente, pero son elementos que el ejecutante debe saber interpretar. A estos enunciados se los denomina condición. Por lo tanto:

Una condición es una afirmación lógica sobre el estado de algún recurso del ambiente, que puede tomar valor verdadero o falso en el momento de la observación.

3

Page 5: 00 Manual de Programacion Enero 2013

Aplicar los principios de programación en la solución de problemasEl ejecutante determina en el momento de la ejecución del algoritmo las acciones a seguir, dependiendo de que la condición sea satisfecha o no.

2.6. PROGRAMACIÓN MODULAR

Es un método de diseño y tiende a dividir el problema en partes perfectamente diferenciadas que puedan ser analizadas, resuel-tas y puestas a punto por separado.

Para atacar el análisis de un problema, y siguiendo el diseño Top-Down, se pueden utilizar criterios de programación modular para dividirlos en partes independientes, probando cada uno por separado y realizando su recomposición ascendente.

Cada una de las partes independientes se llama Módulo y para su determinación se deben tener en cuenta los siguientes crite-rios:

Un módulo debe corresponder a una función lógica perfectamente bien definida. Los módulos deben ser pequeños para que sean claros y de poca complejidad. Un módulo debe tener una estructura de caja negra, es decir la salida debe ser exclusivamente función de la entrada. Cada módulo deber tener una única entrada y una única salida. Objetivos de la programación modular La programación modular tiende a: Disminuir complejidad: disminuye la complejidad del problema original, dividiendo un problema en partes más simples. Aumentar la claridad: el problema original es planteado ahora como una sucesión de módulos que resulta más fácil de

comprender inclusive para terceras personas. Aumentar la fiabilidad: como consecuencia de los dos puntos anteriores, aumenta la confiabilidad en todo proceso de

resolución. Facilitar modificaciones y conexiones: cada módulo puede realizarse y probarse por separado, minimizándose los proble-

mas de puesta a punto al final.

2.7. APLICAR EJERCICIOS

3. DIAGRAMAS DE FLUJO

3.1. CONCEPTO DE DIAGRAMA DE FLUJO

Un diagrama de flujo es una representación gráfica de un algoritmo o de una parte del mismo. Los diagramas de flujo ayudan en la comprensión de la operación de las estructuras de control (Si, Mientras).

La ventaja de utilizar un algoritmo es que se lo puede construir independientemente de un lenguaje de programación, pues al momento de llevarlo a código se lo puede hacer en cualquier lenguaje.

3.2. CARACTERÍSTICASUn 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. Fre-

cuentemente el comienzo es la salida del proceso previo y el final la entrada al proceso siguiente.

4

Page 6: 00 Manual de Programacion Enero 2013

Aplicar los principios de programación en la solución de problemas Identificar y listar las principales actividades/subprocesos que están incluidos en el proceso a describir y su orden crono-

ló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.

3.3. SIMBOLOGIA

Dichos diagramas se construyen utilizando ciertos símbolos de uso especial como son rectángulos, diamantes, óvalos, y pequeños círculos, estos símbolos están conectados entre sí por flechas, conocidas como líneas de flujo. A continuación se detallarán estos símbolos.

Nombre Símbolo Función

TerminalRepresenta el inicio y fin de un programa. También puede repre-sentar una parada o interrupción programada que sea necesaria realizar en un programa.

Entrada / salida Cualquier tipo de introducción de datos en la memoria desde los periféricos o registro de información procesada en un periférico.

ProcesoCualquier tipo de operación que pueda originar cambio de valor, formato o posición de la información almacenada en memoria, ope-raciones aritméticas, de transformaciones, etc.

Decisión

Indica operaciones lógicas o de comparación entre datos (normal-mente dos) y en función del resultado de la misma determina (nor-malmente si y no) cual de los distintos caminos alternativos del pro-grama se debe seguir

Conector Misma PáginaSirve para enlazar dos partes cualesquiera de un diagrama a través de un conector en la salida y otro conector en la entrada. Se refiere a la conexión en la misma pagina del diagrama

Indicador de dirección o línea de flujo Indica el sentido de la ejecución de las operaciones

Salida a impresoraSe utiliza en ocasiones en lugar del símbolo de salida. El dibujo re-presenta un pedazo de hoja. Es usado para mostrar datos o resulta-dos.

Salida a pantalla Se utiliza para representar la salida por medio del monitor

3.4. REGLAS DE LOS DIAGRAMAS DE FLUJO

Debe de indicar claramente dónde inicia y dónde termina el diagrama.

5

Page 7: 00 Manual de Programacion Enero 2013

Aplicar los principios de programación en la solución de problemas Cualquier camino del diagrama debe de llevarte siempre a la terminal de fin. Organizar los símbolos de tal forma que siga visualmente el flujo de arriba hacia abajo y de izquierda a derecha. No usar lenguaje de programación dentro de los símbolos. Centrar el diagrama en la página. Según la normativa, el flujo presupuesto es de izquierda a derecha y de arriba hacia abajo, siendo optativo el uso de fle-

chas. Cuando el sentido es invertido (de derecha a izquierda o de abajo hacia arriba), es obligatorio el uso de la flecha. Las líneas deben ser verticales u horizontales, nunca diagonales.

No cruzar las líneas de flujo empleando los conectores adecuados sin hacer uso excesivo de ellos.

No fraccionar el diagrama con el uso excesivo de conectores. Solo debe llegar una sola línea de flujo a un símbolo. Pero pueden llegar muchas líneas de flujo a otras líneas.

6

Page 8: 00 Manual de Programacion Enero 2013

Aplicar los principios de programación en la solución de problemas Las líneas de flujo deben de entrar a un símbolo pro la parte superior y/o izquierda y salir de él por la parte inferior y/o

derecha. Evitar que el diagrama sobrepase una página; de no ser posible, enumerar y emplear los conectores correspondientes. Usar lógica positiva, es decir, realizar procesos cuando es verdadera la condición y expresar las condiciones de manera

clara (por ej., "no es a =/= de b" ==> "a=b"). Comentar al margen únicamente cuando sea necesario.

3.5. VENTAJAS DE LOS DIAGRAMAS DE FLUJO Favorecen la comprensión del proceso al mostrarlo como un dibujo. El cerebro humano reconoce muy fácilmente los di-

bujos. Un buen diagrama de flujo reemplaza varias páginas de texto. Permiten identificar los problemas y las oportunidades de mejora del proceso. Se identifican los pasos, los flujos de los

re-procesos, los conflictos de autoridad, las responsabilidades, los cuellos de botella, y los puntos de decisión. Muestran las interfaces cliente-proveedor y las transacciones que en ellas se realizan, facilitando a los empleados el aná-

lisis de las mismas. Son una excelente herramienta para capacitar a los nuevos empleados y también a los que desarrollan la tarea, cuando

se realizan mejoras en el proceso. Al igual que el pseudocódigo, el diagrama de flujo con fines de análisis de algoritmos de programación puede ser ejecu-

tado en un ordenador, con un IDE como Free DFD.

3.6. EJEMPLOS DE DIAGRAMAS DE FLUJO

4. PSEUDOCÓDIGO

4.1. PSEUDOCÓDIGOEl pseudocódigo (o falso lenguaje) es una descripción informal de alto nivel de un algoritmo informático de programación, com-pacto e informal, que utiliza las convenciones estructurales de un lenguaje de programación verdadero2 , pero que está diseñado para la lectura humana en lugar de la lectura mediante máquina, y con independencia de cualquier otro lenguaje de programa -ción. Normalmente, el pseudocódigo omite detalles que no son esenciales para la comprensión humana del algoritmo, tales como declaraciones de variables, código específico del sistema y algunas subrutinas.

4.2. SINTAXISEn la actualidad y por lo general, el pseudocódigo, como su nombre lo indica, no obedece a las reglas de sintaxis de ningún idio-ma en particular ni es de forma estándar sistemática, a pesar de que cualquier escritor en particular vaya a pedir prestado las es-tructuras de control general, la sintaxis y el estilo, por ejemplo, de algún lenguaje de programación convencional. Pero en caso de que se quiera ejecutar, se debe llevar a forma tipo, para que no genere mensajes de error. Las fuentes populares incluyen la sin -

7

Page 9: 00 Manual de Programacion Enero 2013

Aplicar los principios de programación en la solución de problemastaxis de Pascal, BASIC, C, C++, Java, Lisp, y ALGOL. Por lo general, se omiten las declaraciones de variables. A veces, las llamadas a funciones, los bloques de código y el código contenido dentro de un loop se remplazan por una sentencia de una línea en lengua-je natural.

Dependiendo del escritor, el pseudocódigo puede variar mucho en su estilo, yendo desde en un extremo, una imitación casi exac-ta de un lenguaje de programación real, hasta al acercarse a una descripción en prosa de formato de pseudocódigo en el otro ex-tremo. Este es un ejemplo de pseudocódigo (para el juego matemático bizz buzz):

Pseudocódigo estilo Fortran:programa bizzbuzzhacer i = 1 hasta 100 establecer print_number a verdadero si i es divisible por 3 escribir "Bizz" establecer print_number a falso si i es divisible por 5 escribir "Buzz" establecer print_number a falso si print_number, escribir i escribir una nueva líneafin del hacer

Pseudocódigo estilo Pascal:procedimiento bizzbuzzpara i := 1 hasta 100 hacer establecer print_number a verdadero; Si i es divisible por 3 entonces escribir "Bizz"; establecer print_number a falso; Si i es divisible por 5 entonces escribir "Buzz"; establecer print_number a falso; Si print_number, escribir i; escribir una nueva lína;fin

Pseudocódigo estilo C:subproceso funcion bizzbuzzpara (i <- 1; i<=100; i++) { establecer print_number a verdadero; Si i es divisible por 3 escribir "Bizz"; establecer print_number a falso; Si i es divisible por 5 escribir "Buzz"; establecer print_number a falso; Si print_number, escribir i; escribir una nueva línea;}

4.3. CARACTERISTICAS Y PARTESLas principales características de este lenguaje son:

1. Se puede ejecutar en un ordenador (con un IDE como por ejemplo SLE, LPP, PilatoX, Maruga Script, Seudocódigo o PSeInt.)

2. Es una forma de representación sencilla de utilizar y de manipular.3. Facilita el paso del programa al lenguaje de programación.4. Es independiente del lenguaje de programación que se vaya a utilizar.5. Es un método que facilita la programación y solución al algoritmo del programa.

Todo documento en pseudocódigo debe permitir la descripción de:1. Instrucciones primitivas.2. Instrucciones de proceso....3. Instrucciones de control.4. Instrucciones compuestas.5. Instrucciones de descripción.

Estructura a seguir en su realización:1. Cabecera.

1. Programa.2. Módulo.3. Tipos de datos.4. Constantes.5. Variables.

2. Cuerpo.1. Inicio.2. Instrucciones.3. Fin.

4.4. DEFICINICION DE DATOSLa definición de datos se da por supuesta, sobre todo en las variables sencillas, si se emplea formaciones: pilas, colas, vectores o registros, se pueden definir en la cabecera del algoritmo, y naturalmente cuando empleemos el pseudocódigo para definir estruc-turas de datos, esta parte la desarrollaremos adecuadamente.

4.5. FUNCIONES Y OPERACIONES

8

Page 10: 00 Manual de Programacion Enero 2013

Aplicar los principios de programación en la solución de problemasCada autor usa su propio pseudocódigo con sus respectivas convenciones. Por ejemplo, la instrucción "reemplace el valor de la variable por el valor de la variable " puede ser representado como: asigne a el valor de

Las operaciones aritméticas se representan de la forma usual en matemáticas.

4.6. ESTRUCTURAS DE CONTROLEn la redacción del pseudocódigo se utiliza tres tipos de estructuras de control: las secuenciales, las selectivas y las iterativas.

4.7. ESTRCUTURAS SECUENCIALESLas instrucciones se siguen en una secuencia fija que normalmente viene dada por el número de renglón. Es decir que las instruc -ciones se ejecutan de arriba hacia abajo. Las instrucciones se ejecutan dependiendo de la condición dada dentro del algoritmo.

4.8. ESTRUCTURAS SELECTIVASLas instrucciones selectivas representan instrucciones que pueden o no ejecutarse, según el cumplimiento de una condición.

Diagrama de flujo que muestra el funcionamiento de la instrucción condicional.

La condición es una expresión booleana. Instrucciones es ejecutada sólo si la condición es verdadera.

9

Page 11: 00 Manual de Programacion Enero 2013

Aplicar los principios de programación en la solución de problemas

4.9. SELECTIVA DOBLE (ALTERNATIVA)La instrucción alternativa realiza una instrucción de dos posibles, según el cumplimiento de una condición.

Diagrama de flujo que muestra el funcionamiento de la instrucción condicional.

La condición es una variable booleana o una función reducible a booleana (lógica, Verdadero/Falso). Si esta condición es cierta se ejecuta Instrucciones1, si no es así, entonces se ejecutaInstrucciones2.

4.10. SELECTIVA MULTIPLETambién es común el uso de una selección múltiple que equivaldría a anidar varias funciones de selección.

En este caso hay una serie de condiciones que tienen que ser mutuamente excluyentes, si una de ellas se cumple las demás tie-nen que ser falsas necesariamente, hay un caso si no que será cierto cuando las demás condiciones sean falsas.En esta estructura si Condición1 es cierta, entonces se ejecuta sólo Instrucciones1. En general, si Condicióni es verdadera, entonces sólo se ejecuta Instruccionesi

4.11. SELECTIVA MULTIPLE - CASOSUna construcción similar a la anterior (equivalente en algunos casos) es la que se muestra a continuación.

10

Page 12: 00 Manual de Programacion Enero 2013

Aplicar los principios de programación en la solución de problemas

En este caso hay un Indicador es una variable o una función cuyo valor es comparado en cada caso con los valores "Valori", si en algún caso coinciden ambos valores, entonces se ejecutarán las Instruccionesi correspondientes. La secciónen otro caso es análo-ga a la sección si no del ejemplo anterior.

4.12. ESTRUCTURAS ITERATIVASLas instrucciones iterativas representan la ejecución de instrucciones en más de una vez.

4.13. BUCLE MIENTRASEl bucle se repite mientras la condición sea cierta, si al llegar por primera vez al bucle mientras la condición es falsa, el cuerpo del bucle no se ejecuta ninguna vez.

Diagrama de flujo que muestra el funcionamiento de la instrucción mientras

4.14. BUCLE REPETIRExisten otras variantes que se derivan a partir de la anterior. La estructura de control repetir se utiliza cuando es necesario que el cuerpo del bucle se ejecuten al menos una vez y hasta que se cumpla la condición:

La estructura anterior equivaldría a escribir:

4.15. BUCLE HACEREl Bucle hacer se utiliza para repetir un bloque de código mientras se cumpla cierta condición.

4.16. BUCLE PARA (FOR)

11

Page 13: 00 Manual de Programacion Enero 2013

Aplicar los principios de programación en la solución de problemasUna estructura de control muy común es el ciclo para, la cual se usa cuando se desea iterar un número conocido de veces, em-pleando como índice una variable que se incrementa (o decrementa): Plantilla:Definicionesla cual se define como:

4.17. BUCLE PARA CADAPor último, también es común usar la estructura de control para cada. Esta sentencia se usa cuando se tiene una lista o un con-junto y se quiere iterar por cada uno de sus elementos:

Si asumimos que los elementos de son , entonces esta sentencia equivaldría a:

Que es lo mismo que:

Sin embargo, en la práctica existen mejores formas de implementar esta instrucción dependiendo del problema.Es importante recalcar que el pseudocódigo no es un lenguaje estandarizado. Eso significa que diferentes autores podrían dar otras estructuras de control o bien usar estas mismas estructuras, pero con una notación diferente. Sin embargo, las funciones matemáticas y lógicas toman el significado usual que tienen en matemática y lógica, con las mismas expresiones.

4.18. EL ANIDAMIENTOCualquier instrucción puede ser sustituida por una estructura de control. El siguiente ejemplo muestra el pseudocódigo del orde-namiento de burbuja, que tiene varias estructuras anidadas. Este algoritmo ordena de menor a mayor los elementos de una lis -ta .

12

Page 14: 00 Manual de Programacion Enero 2013

Aplicar los principios de programación en la solución de problemas

En general, las estructuras anidadas se muestran indentadas, para hacer más sencilla su identificación a simple vista. En el ejem-plo, además de la indentación, se ha conectado con flechas los pares de delimitadores de cada nivel de anidamiento.

4.19. DESARROLLO DE ALGORITMOSCon este pseudocódigo se puede desarrollar cualquier algoritmo que: Tenga un único punto de inicio. Tenga un número finito de posibles puntos de término. Haya un número finito de caminos, entre el punto de inicio y los posibles puntos de término.

4.20. FUCNIONES Y PROCEDIMIENTOSMuchas personas prefieren distinguir entre funciones y procedimientos. Una función, al igual que una función matemática, recibe uno o varios valores de entrada y regresa una salida mientras que un procedimiento recibe una entrada y no genera ninguna sali-da aunque en algún caso podría devolver resultados a través de sus parámetros de entrada si estos se han declarado por referen -cia (ver formas de pasar argumentos a una función o procedimiento).En ambos casos es necesario dejar en claro cuáles son las entradas para el algoritmo, esto se hace comúnmente colocando estos valores entre paréntesis al principio o bien declarándolo explícitamente con un enunciado. En el caso de las funciones, es necesa-rio colocar una palabra como regresar o devolver para indicar cuál es la salida generada por el algoritmo. Por ejemplo, el pseudo-código de una función que permite calcular (un número elevado a potencia ).

13

Page 15: 00 Manual de Programacion Enero 2013

Aplicar los principios de programación en la solución de problemas

Un ejemplo de procedimiento seria el algoritmo de Ordenamiento de burbuja, por el que partiendo de una lista de valores estos se ordenan, nótese que en un procedimiento, no se calcula el valor de una función, sino que se realiza una acción, en este caso ordenar la lista.

Procedimiento de la burbuja (a0, a1, a2, a3, ……….a (n – 1)Para i 2 hasta n HacerPara j 0 hasta n – i HacerSi a(j) < a(j+1) entoncesAux a(j)A(j) a(j+1)A(j+1) auxFin siFin paraFin paraFin procedimiento

4.21. VENTAJAS DEL PSEUDOCODIGO SOBRE LOS DIAGRAMAS DE FLUJO.Los pseudocódigos presentan los siguientes beneficios:

1. Ocupan mucho menos espacio en el desarrollo del problema.2. Permite representar de forma fácil operaciones repetitivas complejas.3. Es más sencilla la tarea de pasar de pseudocódigo a un lenguaje de programación formal.4. Si se siguen las reglas de identación se puede observar claramente los niveles en la estructura del programa.5. En los procesos de aprendizaje de los alumnos de programación, éstos están más cerca del paso siguiente (codificación

en un lenguaje determinado, que los que se inician en esto con la modalidad Diagramas de Flujo).6. Mejora la claridad de la solución de un problema.

5. PRINCIPIOS DE LA PROGRAMACION

5.1. PROGRAMACIONEs el proceso de diseñar, codificar, depurar y mantener el código fuente de programas computacionales. El código fuente es es-crito en un lenguaje de programación. El propósito de la programación es crear programas que exhiban un comportamiento de-seado. El proceso de escribir código requiere frecuentemente conocimientos en varias áreas distintas, además del dominio del lenguaje a utilizar, algoritmos especializados y lógica formal. Programar no involucra necesariamente otras tareas tales como el análisis y diseño de la aplicación (pero sí el diseño del código), aunque sí suelen estar fusionadas en el desarrollo de pequeñas aplicaciones.

5.2. LEXICO Y PROGRAMACIONLa programación se rige por reglas y un conjunto más o menos reducido de órdenes, expresiones, instrucciones y comandos que tienden a asemejarse a una lengua natural acotada (en inglés); y que además tienen la particularidad de una reducida ambigüe -dad. Cuanto menos ambiguo es un lenguaje de programación, se dice, es más potente. Bajo esta premisa, y en el extremo, el len -guaje más potente existente es el binario, con ambigüedad nula (lo cual lleva a pensar así del lenguaje ensamblador).En los lenguajes de programación de alto nivel se distinguen diversos elementos entre los que se incluyen el léxico propio del len-guaje y las reglas semánticas y sintácticas.

5.3. PROGRAMASLos programas suelen subdividirse en partes menores, llamadas módulos, de modo que la complejidad algorítmica de cada una de las partes sea menor que la del programa completo, lo cual ayuda al desarrollo del programa. Esta es una práctica muy utiliza-da y se conoce como "refino progresivo". Según Niklaus Wirth, un programa está formado por los algoritmos y la estructura de datos.

14

Page 16: 00 Manual de Programacion Enero 2013

Aplicar los principios de programación en la solución de problemasPrograma. La definición de la RAE es: Conjunto unitario de instrucciones que permite a un ordenador realizar funciones diversas, como el tratamiento de textos, el diseño de gráficos, la resolución de problemas matemáticos, el manejo de bancos de datos , etc. Pero normalmente se entiende por programa un conjunto de instrucciones ejecutables por un ordenador.

5.4. CICLO DE VIDA DE UN PROGRAMA

Una de las cosas que se han definido tras el nacimiento de la ingeniería del software ha sido el ciclo de vida de una aplicación. El ciclo de vida define los pasos que sigue el proceso de creación de una aplicación desde que se propone hasta que finaliza su construcción. Los pasos son:

A. Análisis. En esta fase se determinan los requisitos que tiene que cumplir la aplicación. Se ano-ta todo aquello que afecta al futuro funcionamiento de la aplicación. Este paso le realiza un analista

B. Diseño. Se especifican los esquemas de diseño de la aplicación. Estos esquemas forman los planos del programador, los realiza el analista y representan todos los aspectos que requiere la creación de la aplicación.

C. Codificación. En esta fase se pasa el diseño a código escrito en algún lenguaje de programa-ción. Esta es la primera labor que realiza el programador

D. Pruebas. Se trata de comprobar que el funcionamiento de la aplicación es la adecuada. Se rea-liza en varias fases: Prueba del código. Las realizan programadores. Normalmente programadores distintos a

los que crearon el código, de ese modo la prueba es más independiente y generará resultados más óptimos.

Versión alfa. Es una primera versión terminada que se revisa a fin de encontrar errores. Estas pruebas conviene que sean hechas por personal no informático. El producto sólo tiene cierta apariencia de acabado.

Versión beta. Versión casi definitiva del software en la que no se estiman fallos, pero que se distribuye a los clientes para que encuentren posibles problemas. A veces está versión acaba siendo la definitiva (como ocurre con muchos de los programas distribuidos libremente por Internet). (5) Mantenimiento. Tiene lugar una vez que la aplicación ha sido ya distribuida, en esta fase se asegura que el sistema siga funcionando aunque cambien los requisitos o el sistema para el que fue diseñado el software. Antes esos cambios se hacen los arreglos pertinentes, por lo que habrá que retroceder a fases anteriores del ciclo de vida.

5.5. COMPILACIONEl programa escrito en un lenguaje de programación (fácilmente comprensible por el programador) es llamado programa fuen-te y no se puede ejecutar directamente en una computadora. La opción más común es compilar el programa obteniendo un mó-dulo objeto, aunque también puede ejecutarse en forma más directa a través de un intérprete informático.

El código fuente del programa se debe someter a un proceso de traducción para convertirlo en lenguaje máquina, código esté di-rectamente ejecutable por el procesador. A este proceso se le llama compilación.

Habitualmente la creación de un programa ejecutable (un típico.exe para Microsoft Windows o DOS) conlleva dos pasos. El pri-mer paso se llama compilación (propiamente dicho) y traduce el código fuente escrito en un lenguaje de programación almacena-do en un archivo a código en bajo nivel (normalmente en código objeto, no directamente a lenguaje máquina). El segundo paso se llama enlazado en el cual se enlaza el código de bajo nivel generado de todos los ficheros y subprogramas que se han manda-do compilar y se añade el código de las funciones que hay en las bibliotecas del compilador para que el ejecutable pueda comuni-carse directamente con el sistema operativo, traduciendo así finalmente el código objeto a código máquina, y generando un mó-dulo ejecutable.

Estos dos pasos se pueden hacer por separado, almacenando el resultado de la fase de compilación en archivos objetos (un típi -co.obj para Microsoft Windows, DOS o para Unix); para enlazarlos en fases posteriores, o crear directamente el ejecutable; con lo que la fase de compilación se almacena sólo temporalmente. Un programa podría tener partes escritas en varios lenguajes (por ejemplo C, C++ y ensamblador), que se podrían compilar de forma independiente y luego enlazar juntas para formar un único módulo ejecutable.

5.6. PROGRAMACION E INGENIERIA DE SOFTWARE

15

Page 17: 00 Manual de Programacion Enero 2013

Aplicar los principios de programación en la solución de problemasExiste una tendencia a identificar el proceso de creación de un programa informático con la programación, que es cierta cuando se trata de programas pequeños para uso personal, y que dista de la realidad cuando se trata de grandes proyectos. El proceso de creación de software, desde el punto de vista de la ingeniería, incluye los siguientes pasos:

1. Reconocer la necesidad de un programa para solucionar un problema o identificar la posibilidad de automatización de una tarea.

2. Recoger los requisitos del programa. Debe quedar claro qué es lo que debe hacer el programa y para qué se necesita.3. Realizar el análisis de los requisitos del programa. Debe quedar claro cómo debe realizar el programa las cosas que debe

hacer. Las pruebas que comprueben la validez del programa se pueden especificar en esta fase.4. Diseñar la arquitectura del programa. Se debe descomponer el programa en partes de complejidad abordable.5. Implementar el programa. Consiste en realizar un diseño detallado, especificando completamente todo el funcionamien-

to del programa, tras lo cual la codificación (programación propiamente dicha) debería resultar inmediata.6. Implantar (instalar) el programa. Consiste en poner el programa en funcionamiento junto con los componentes que pue-

da necesitar (bases de datos, redes de comunicaciones, etc.).

La ingeniería del software se centra en los pasos de planificación y diseño del programa, mientras que antiguamente (programa -ción artesanal) la realización de un programa consistía casi únicamente en escribir el código, bajo sólo el conocimiento de los re -quisitos y con una modesta fase de análisis y diseño.

16

Page 18: 00 Manual de Programacion Enero 2013

Aplicar los principios de programación en la solución de problemas

GUÍA DE TRABAJOS PRÁCTICOS NRO. 1

Temas: Constantes, Variables, Expresiones, Asignaciones, Leer y Escribir.

1. Analice el valor de verdad de cada una de las siguientes expresiones. Justifique su respuesta.

a) La constante mantiene siempre su valor a lo largo del algoritmo. b) Una variable es un lugar de memoria. c) El nombre de una variable debe estar relacionado con su contenido. d) El tipo de variable se define por su contenido. Si el contenido se modifica en el transcurso del algoritmo, puede

cambiar el tipo. e) Una variable puede almacenar una expresión. f) El nombre de una variable será correcto siempre que el mismo comience con un número o una letra. g) Resultado y RESULTADO son variables distintas. h) ´JUAN´ y JUAN son variables distintas. i) En una expresión las sumas y restas se resuelven primero. j) Una función no puede participar en el argumento de otra función. k) Las palabras reservadas se escriben siempre con mayúsculas. l) Una cadena de caracteres hay que encerrarlas entre apóstrofos o comillas.

2. Complete con una de las opciones propuestas entre paréntesis:

Las siguientes ...........................(variables / constantes) son .................... (iguales / diferentes). - ALTO - AlTo - AltO

Las siguientes ...........................(variables / constantes) son .................... (iguales / diferentes). - ‘ALTO’ - ‘AlTo’ - ‘AltO’

3. Dados los siguientes contenidos para las variables A, B, C, D, E, F; analice las expresiones en que intervienen y en-cuentre en la lista de opciones el resultado correcto de la expresión.

A B C D E F 3 ‘ÁBC’ ‘JOSE’ V 97.9 ‘87’

a) ( A + C ) RC 2

b) TRUNC( E ) >= REDON( E )

c) 'ER' < A

d) ( B = ‘XA’ ) v ( A = E )

e) ( B < C ) ^ F f) ( C <> 'F' ) ^ ( A < 4 )

g) ( E < F )

17

Page 19: 00 Manual de Programacion Enero 2013

Aplicar los principios de programación en la solución de problemash) TRUNC( ( A + E ) / 2 )+5

Resultados posibles: V | F | Expresión Inválida | 55 |

4. Analice el valor de verdad de cada una de las siguientes expresiones. Justifique su respuesta.

a) A la izquierda del símbolo de asignación puede ir una variable. b) La asignación X <- X + 2 carece de sentido porque no existe ningún número que incrementado en dos unidades sea igual a sí mismo. c) La acción de escritura destruye el contenido de las variables que utiliza. d) En una única acción de lectura se pueden leer dos o más datos. e) En una acción de lectura el primer valor ingresado se almacena en la variable que sigue a la palabra LEER.

5. Dado el siguiente algoritmo realizar el seguimiento del mismo.

a) Con los datos: 26, 5, 2007, ‘Jorge Gómez’, 500, 150, 120. b) Con los datos: 15, 10, 2008, ‘Carlos Oviedo’, 850, 600, 250.

Proceso Liquidación Leer DIAACT, MESACT, ANIOACT; Leer NOM, DEUDA, PAGO1, PAGO2; PAGO <- PAGO1 + PAGO2; SALDO <- DEUDA – PAGO; DESC <- SALDO * 0.10; SALDO <- SALDO – DESC; Escribir ‘Fecha: ‘, DIAACT, ‘/’, MESACT, ‘/’, ANIOACT; Escribir ‘Cliente: ‘, NOM, ‘Deuda Total: $ ‘, DEUDA; Escribir ‘Pagos realizados: $ ‘, PAGO; Escribir ‘Descuento 10%: $ ‘, DESC; Escribir ‘Saldo a pagar: $ ‘, SALDO FinProceso

6. Realizar ambiente y algoritmo de cada uno de los siguientes enunciados:

a) Calcular e informar el perímetro de un cuadrado conociendo el valor del lado.

b) Una remisera desea liquidar el sueldo de los choferes de una de sus unidades para ello se ingresan los datos de los 2 choferes de la misma: nombre y apellido, sueldo básico y km. recorridos en el mes a liquidar. Primero se ingresan los datos del chofer 1, y luego los datos del chofer 2. Se desea generar un informe como el siguiente:

LIQUIDACION MENSUAL CHOFERES NOMBRE DEL CHOFER 1.............................. TOTAL A COBRAR $.................. NOMBRE DEL CHOFER 2.............................. TOTAL A COBRAR $.................. TOTAL GRAL $......................

Observación: Tener en cuenta que por cada km. se le paga $7.5 y que el total a cobrar se calcula como: Sueldo básico + monto por kms.

18

Page 20: 00 Manual de Programacion Enero 2013

Aplicar los principios de programación en la solución de problemasSOLUCIÓN: PARA COMPILAR EN PSeint

Proceso Remiseria Leer nom1, sdobas1, kmr1; Leer nom2, sdobas2, kmr2; montokm1<-7.5*kmr1; montokm2<-7.5*kmr2; totc1<-sdobas1+montokm1; totc2<-sdobas2+montokm2; totalg<-totc1+totc2; Escribir 'Liquidacion mensual choferes:'; Escribir 'Nombre chofer 1:', nom1, 'Total a cobrar: $', totc1; Escribir 'Nombre chofer 2:', nom2, 'Tocal a cobrar: $', totc2; Escribir 'total general: $', totalg FinProceso

Dados los siguientes enunciados realizar ambiente y pseudocódigo.

7. En un recital se vendieron dos tipos de entradas, a saber: popular y plateada. El éxito del recital se ocasionó porque se lograron vender la totalidad de las plateadas y de las populares, 1723 y 3557 respectivamente. El precio de la po -pular es del 50 % más barata que la plateada. Hallar la recaudación total, sabiendo que se ingresa como primer dato el precio de la plateada.

SOLUCIÓN: PARA COMPILAR EN PSeint

Proceso Recital Escribir 'Ingrese el Valor de la Platea:'; Leer PrePla; PrePop<-PrePla/2; TOTG<-(PrePla*1000)+(PrePop*3000); Escribir 'Recaudacion Total:', TOTG FinProceso

8. Una empresa que comercializa electrodomésticos posee 2 sucursales. De cada una de ellas se conocen los montos de ventas semestrales realizadas durante el año 2009. Estos datos se ingresan ordenados por sucursal y por semes-tre.

Cada sucursal destinó el 20% del total de sus ventas para pagar una bonificación a sus empleados; monto que se re -partió en partes iguales entre ellos. Se ingresan también, la cantidad de empleados que tenían las sucursales en el 2009.

Determinar e informar: a. El total de ventas de cada sucursal. b. La bonificación que pagó cada sucursal a cada empleado.

SOLUCIÓN: PARA COMPILAR EN PSeint

19

Page 21: 00 Manual de Programacion Enero 2013

Aplicar los principios de programación en la solución de problemas

Proceso Pravega Escribir 'Ingrese el monto del semestre A de la sucursal 1:'; Leer MontoV1SeA; Escribir 'Ingrese el monto del semestre B de la sucursal 1:'; Leer MontoV1SeB; Escribir 'Ingrese la cantidad de empleados de la sucursal 1:'; Leer CantEm1; Escribir 'Ingrese el monto del semestre A de la sucursal 2:'; Leer MontoV2SeA; Escribir 'Ingrese el monto del semestre B de la sucursal 2:';; Leer MontoV2SeB; Escribir 'Ingrese la cantidad de empleados de la sucursal 2:'; Leer CantEm2; TOTV1<-MontoV1SeA+MontoV1SeB; TOTV2<-MontoV2SeA+MontoV2SeB; BON1<-(TOTV1*0.2)/CantEm1; BON2<-(TOTV2*0.2)/CantEm2; Escribir 'Total de Ventas de la sucursal 1:',TOTV1; Escribir 'Total de Ventas de la sucursal 2:',TOTV2; Escribir 'Bonificacion que pago la sucursal 1 a cada empleado:',BON1; Escribir 'Bonificacion que pago la sucursal 2 a cada empleado:',BON2 FinProceso

9. Un avión realiza su recorrido partiendo del aeropuerto A, luego se dirige al B, y de allí al C y culmina su recorrido nuevamente en A. Se conocen como datos las coordenadas de los puntos A (Xa,Ya), B(Xb,Yb) y C(Xc,Yc). Se pide: a. Calcular la distancia que existe entre A y B, entre B y C y entre C y A. b. Calcular e informar la distancia total que debe recorrer el avión.

La distancia se debe calcular en base a la siguiente fórmula: D= RC ( (X2-X1)2 + (Y2-Y1)2)

SOLUCIÓN: PARA COMPILAR EN PSeint

Proceso Avion Escribir 'Ingrese el valor de la coordenada XA:'; Leer XA; Escribir 'Ingrese el valor de la coordenada YA:'; Leer YA; Escribir 'Ingrese el valor de la coordenada XB:'; Leer XB; Escribir 'Ingrese el valor de la coordenada YB:'; Leer YB; Escribir 'Ingrese el valor de la coordenada XC:'; Leer XC; Escribir 'Ingrese el valor de la coordenada YC:'; Leer YC; DistAB<-(XB+YB)-(XA+YA);

20

Page 22: 00 Manual de Programacion Enero 2013

Aplicar los principios de programación en la solución de problemasDistBC<-(XC+YC)-(XB+YB); DistCA<-(XC+YC)-(XA+YA); DistTOT<-(RC(((XC-XA)*(XC-XA))+((YC-YA)*(YC-YA))))*2; Escribir 'Distancia entre A y B:',DistAB; Escribir 'Distancia entre B y C:',DistBC; Escribir 'Distancia entre C y A:',DistCA; Escribir 'Distancia total que recorrio el Avion:',DistTOT FinProceso

10. Una línea de colectivos presta los siguientes servicios: Común, Estudiante y Trabajador. Los estudiantes y los tra-bajadores abonan el 50 % y el 40 % del costo de un boleto común, respectivamente. Se desea obtener cantidad de boletos vendidos según el servicio y total recaudado. Para resolver el problema, se dispone de las numeraciones iniciales y finales de los boletos de cada uno de los servi -cios, además se conoce al inicio el precio del boleto estudiante.

SOLUCIÓN: PROXIMAMENTE

11. La liquidación del consumo telefónico de una línea familiar tiene en cuenta un abono fijo con el cual el usuario puede utilizar 600 pulsos. El exceso de pulsos se liquida a razón de $1.75 por cada pulso de más. Se conocen como datos: el monto del abono fijo, la cantidad de pulsos consumidos totales (mayor de 600) y la cantidad de pulsos utili -zados en Internet. Estos últimos se liquidan a tarifa reducida del 40 % del costo del pulso normal. Como primer dato, se conoce el número de teléfono. Se desea obtener un informe como el siguiente:

NÚMERO DE TELÉFONO: ……………............. ABONO FIJO: $ ....................... RECARGO: $ ........................... CANTIDAD DE PULSOS EXCEDENTES: .............. INTERNET: $............................ TOTAL: $ ................................

SOLUCIÓN: PROXIMAMENTE

Ejercicios de Algoritmos

Aca les dejo algunos ejercicios de algoritmo con pseudocodigo para los que le haga falta,un simple aporte,saludis. 

TPA Nº1 : Noción de Algoritmo. • 1.1 Diseñar un algoritmo para cambiar una lamparita quemada de un artefacto suspendido en el techo. Utilizar la técnica de refi-namientos sucesivos. 

Algoritmo LAMPARITA comienzo 1. situar escalera debajo del artefacto que tiene la lamparita quemada 2. repetir subir un peldaño hasta que (¿la mano alcanza la lamparita?) (¿hay más peldaño?) 

3. repetir 

21

Page 23: 00 Manual de Programacion Enero 2013

Aplicar los principios de programación en la solución de problemasgirar lamparita sentido anti horario hasta que (¿lamparita suelta?) 

4. sacar lamparita 

5. repetir bajar peldaño hasta que (¿llegar al piso?) 

6. repetir subir un peldaño hasta que (¿la mano alcanza la lamparita?) (¿hay mas peldaños?) 

7. poner la lamparita 

8. repetir girar lamparita sentido horario hasta que (¿lamparita ajustada?) 

9. repetir bajar peldaño hasta que (¿llegar al suelo?) 

fin 

• 1.2 Calcular el promedio de tres números Algoritmo PROMEDIO var: N1,N2,N3,PROM: REAL comienzo 1.leer N1,N2,N3 2.P N1+N2+N3/3 3.escribir P fin 

• 1.3 Buscar el rey de copas en un mazo de naipes. Sólo puede mirar una carta por vez. 

Algoritmo CARTAS comienzo 1.tomar mazo de cartas 2. repetir cambiar carta hasta que encontrar rey de copas fin 

• 1.4 De una sola tirada de 5 dados, informar si se ha formado generala, tomando de a un dado por vez y comparando de a dos. 

Algoritmo GENERALA var: A B C D E :entero comienzo leer A B si (a=b) entonces leer c si (c=b) entonces leer d si (d=c) entonces leer e si (e=d) entonces escribir GENERALA sino escribir NO GENERALA finsi fin 

• 1.5 De un mazo de cartas españolas se desean formar cuatro pilas, una para cada palo, teniendo en cuenta que solo se puede mirar de una carta por vez. Algoritmo CARTAS 

22

Page 24: 00 Manual de Programacion Enero 2013

Aplicar los principios de programación en la solución de problemasvar: CARTA, P1, P2, P3, P4: entero P(PILA) comienzo leer CARTA repetir si CARTA=E entonces carta en P1 si CARTA=B entonces carta en P2 si CARTA=C entonces carta en P3 sino carta en p4 finsi hasta que (¿No mas cartas?) fin 

• 1.7 Cambiar la rueda de un automóvil 

Algoritmo AUTOMOVIL comienzo 1.situar gato en el lugar adecuado 2.repetir accionar gato hasta que (auto alcanza altura adecuada) 3.repetir colocar herramienta sobre tuerca 3.2 repetir girar herramienta en sentido anti horario hasta que (tuerca floja) hasta que (todas las tuercas sueltas 4.sacar rueda 5.colocar rueda nueva 6.repetir colocar herramienta sobre tuerca 6.1 repetir girar herramienta sentido horario hasta que (tuerca ajustada) hasta que (todas las tuercas ajustadas) 7.repetir accionar gato Hasta que (auto llegue al piso) 

fin 

1.8 Leer un libro Algoritmo LIBRO comienzo 1.tomar libro 2.abrir tapa 3.repetir leer hoja hasta que (no mas texto) 4.repetir cambiar hoja hasta que (no mas hojas) fin 

  

TPA Nº2: Formalización de Algoritmos. • 2.1 Escribir las siguientes expresiones aritméticas, en un lenguaje de programación, cuyos operadores aritméticos, son: +,-,*,/ y ^ a) x+y b)(a+b)/(c+d) c)(a+(b/(c+d)))/((1-x)/y) 

23

Page 25: 00 Manual de Programacion Enero 2013

Aplicar los principios de programación en la solución de problemasd)(a/b-1)/(d/c-1) e)x^5 f)(x+y)^3 

• 2.2 Indicar el resultado y el tipo, de cada una de las siguientes expresiones. a)5^3+4 = 129 entero b)2.0^3+5 = 13.0 real c)1/3+1/2 = 5/6 entero d)1/4+4 = 17/4 entero e)2*3/6 = 1 entero f)2+6*3.0+4^2 = 36.0 real 

• 2.3 Indicar cual es el valor de la variables RESULTADO, después de la ejecución de las siguientes acciones (suponer que son reales) a)x 3.0 b)y 5.0 c)RESULTADO x*y+x d)RESULTADO 6 x 4 RESULTADO RESULTADO *x^2 RESULTADO 96.0 

• 2.5 Una agencia de venta de autos paga a su personal de ventas un salario de $800,00 mas una comisión de $170,00 por auto vendido mas un 5% del valor de venta. Diseñar un algoritmo para calcular el salario de un vendedor en un determinado mes, cono-ciendo el nº de automóviles vendidos y el total del monto de ventas. Algoritmo ST var: S, NA, PT: reales comienzo leer NA,PT ST SM+ 100*NA+PT*0.05 escribir S fin 

• 2.11 En un curso de ciencias de la computación la calificación final del estudiante se determina a partir del rendimiento en tres as-pectos del trabajo. Existe una calificación de exámenes parciales, que cuenta con 30% del total, la calificación de trabajo de taller con 20%, y el examen final con el 50%. Diseñar un algoritmo para calcular la calificación final del estudiante. Algoritmo CALIFICACION var:EP,TT,EF:real comienzo leer EP,TT,EF C EP*0.3+PI*0.2+EF*0.5 escribir C fin 

TPA Nº3: Estructura de Decisión. • 3.1 Comprobar si un numero entero positivo ingresado desde el teclado es par Algoritmo NPAR var:nro:entero comienzo leer NRO si ((-1)^NRO>0) entonces escribir PAR sino escribir NO ES PAR finsi fin

24

Page 26: 00 Manual de Programacion Enero 2013

Aplicar los principios de programación en la solución de problemas

6. BIBLIOGRAFIA

1. Laboda, Javier; Josep Galimany, Rosa María Pena, Antoni Gual (1985). «Software». Biblioteca práctica de la com-putación. Barcelona: Ediciones Océano-Éxito, S.A..

2. Bellows, Jeannie, Castek (2000). Activity Diagrams and Operation Architecture. Technologies Group Inc..3. «Pseudocódigo - Estructuras condicionales». Consultado el 7 de diciembre de 2012.4. «Instroducción al PseudoCódigo». Consultado el 7 de diciembre de 2012.5. Peña Marí, Ricardo (2005) (en español). Diseño de programas: formalismo y abstracción (3 edición). Pearson

Alhambra. pp. 488. ISBN 978-84-205-4191-4.6. (en español) Pseudocódigos y programación estructurada (1 edición). Centro Técnico Europeo de Enseñanzas Pro-

fesionales. 2 de 1997. ISBN 978-84-8199-065-2.7. Brassard, Gilles; Bratley, Paul (1996) (en español). Algorítmica: concepción y análisis. Peña Mari, Ricardo Tr. (1

edición). Masson, S.A.. pp. 384. ISBN 978-84-458-0535-0.8. Rodeira, ed (6 de 1994) (en Gallego). Pseudocódigos e programación estructurada (1 edición). ISBN 978-84-8116-

287-5.9. Edebé, ed (8 de 1993) (en español). Pseudocódigos y programación estructurada (1 edición). ISBN 978-84-236-

3126-1.

Wikimedia Commons alberga contenido multimedia sobre Diagrama de flujo. Wikimedia Commons alberga contenido multimedia sobre diagrama de actividades. Documentos de la Especificación UML 2.0 Introducción a los Diagramas de Actividades UML 2 Wikimedia Commons alberga contenido multimedia sobre Programación. Wikcionario tiene definiciones para programación. Wikiquote alberga frases célebres de o sobre Programación. Wikilibros alberga un libro o manual sobre Fundamentos de programación.

25