estructuras selectivas (1)

19
Universidad San Pedro Semana 03 y 04 Semana 03 ESTRUCTURAS ALGORÍTMICA REPETITIVA E ITERATIVAS. Las estructuras repetitivas o iterativas son aquellas en las que las acciones se ejecutan un número determinado de veces y dependen de un valor predefinido o el cumplimiento de una determinada acción. Son operaciones que se deben ejecutar un número repetido de veces. El conjunto de instrucciones que se ejecuta repetidamente cierto número de veces, se llama Ciclo, Bucle o Lazo. Iteración es cada una de las diferentes pasadas o ejecuciones de todas las instrucciones contenidas en el bucle. Fases de un Programa Cíclico: 1. Entrada de datos e instrucciones previas 2. Lazo o bucle 3. Instrucciones finales o resto del proceso 4. Salida de resultado Ejemplo de bucle infinito: En el flujograma anterior, observa que la flecha que se regresa hacia arriba nos está indicando que hay que volver a evaluar la expresión. En ese caso como el bucle es infinito, no se tiene una Doc. Ing. Suxe Ramírez Alicia Curso: Técnicas de Programación

Upload: kevi007

Post on 09-Feb-2016

16 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: estructuras selectivas (1)

Universidad San Pedro Semana 03 y 04

Semana 03

ESTRUCTURAS ALGORÍTMICA REPETITIVA E ITERATIVAS.

Las estructuras repetitivas o iterativas son aquellas en las que las acciones se ejecutan un número determinado de veces y dependen de un valor predefinido o el cumplimiento de una determinada acción.

Son operaciones que se deben ejecutar un número repetido de veces. El conjunto de instrucciones que se ejecuta repetidamente cierto número de veces, se llama Ciclo, Bucle o Lazo.

Iteración es cada una de las diferentes pasadas o ejecuciones de todas las instrucciones contenidas en el bucle.

Fases de un Programa Cíclico:1. Entrada de datos e instrucciones previas2. Lazo o bucle3. Instrucciones finales o resto del proceso4. Salida de resultado

Ejemplo de bucle infinito:

En el flujograma anterior, observa que la flecha que se regresa hacia arriba nos está indicando que hay que volver a evaluar la expresión. En ese caso como el bucle es infinito, no se tiene una condición para terminar y se estará haciendo siempre. En el siguiente ejemplo, ya se agregó una condición, la cual nos permitirá finalizar la ejecución del bucle en el caso en que la condición se cumpla.

Doc. Ing. Suxe Ramírez Alicia Curso: Técnicas de Programación

Page 2: estructuras selectivas (1)

Universidad San Pedro Semana 03 y 04

Ejemplo de bucle finito:

Bucles Repetitivos:

A continuación, te muestro tres diseños de estructuras cíclicas: las independientes son cuando los bucles se realiza uno primero hasta que se cumple la condición y solo en ese caso se entra al bucle B.

En los ciclos anidados, al entrar a una estructura de repetición, dentro de ella se encuentra otra. La más interna se termina de realizar y se continúa con la externa hasta que la condición se cumple. En los bucles cruzados, los cuales no son convenientes de utilizar, se tiene que iniciamos un bucle y no se ha terminado cuando empezamos otro, luego utilizamos estructuras goto (saltos) para pasar al bucle externo y se quedan entrelazados.

Esto puede ocasionar que el programa pierda el control de cuál proceso se está ejecutando y podamos obtener resultados erróneos. Veamos gráficamente el diseño de estas tres formas cíclicas:

Doc. Ing. Suxe Ramírez Alicia Curso: Técnicas de Programación

Page 3: estructuras selectivas (1)

Universidad San Pedro Semana 03 y 04

Características Las estructuras repetitivas permiten representar aquellas acciones que pueden

descomponerse en otras sub-acciones primitivas. Es una estructura con una entrada y una salida en la cual se repite una acción un número

determinado o indeterminado de veces En una Estructura Repetitiva Mientras (While) se repite una acción mientras se cumpla la

condición que controla el bucle. La característica principal de esta estructura es que la condición es evaluada siempre antes de cada repetición.

La estructura repetitiva Desde (FOR) permite que las instrucciones las cuales contiene en su ámbito, se ejecuten un número de veces determinado.

Entre las estructuras repetitivas se encuentran:

1. Mientras (while) 2. Repetir (repeat) 3. Para (For)

Doc. Ing. Suxe Ramírez Alicia Curso: Técnicas de Programación

Page 4: estructuras selectivas (1)

Universidad San Pedro Semana 03 y 04

1. ESTRUCTURA MIENTRAS (WHILE)

La estructura repetitiva while, es aquélla en que el cuerpo del bucle se repite mientras se cumple una determinada condición, Se llama Mientras a la estructura algorítmica que se ejecuta mientras la condición evaluada resulte verdadera. Se evalúa la expresión booleana y, si es cierta, se ejecuta la instrucción especificada, llamada el cuerpo del bucle. Entonces se vuelve a evaluar la expresión booleana, y si todavía es cierta se ejecuta de nuevo el cuerpo. Este proceso de evaluación de la expresión booleana y ejecución del cuerpo se repite mientras la expresión sea cierta.

Cuando se hace falsa, finaliza la repetición. Se usan cuando no se conoce con anticipación el número de veces que se ejecutará la acción.

Representación gráfica es: Representación NASSI

Observa en el flujograma, que se necesita una variable contadora (un índice), para llevar la cuenta de las veces que entramos al cuerpo del ciclo. También es importante notar que esta variable se inicializa antes de entrar al cuerpo del ciclo y dentro del cuerpo se incrementa en una cantidad constante, por lo general en uno. Esta variable a la vez, nos sirve para compararla con el valor dado en la condición, cuando se cumple la condición, se sale del ciclo.

Representación pseudocodificada:Pseudocódigo en español Pseudocódigo en inglés

Mientras condición hacer while condición do

Acción S1 <Acciones>

Acción S2 :

: End_while

acción Sn

Fin_mientras

Doc. Ing. Suxe Ramírez Alicia Curso: Técnicas de Programación

Page 5: estructuras selectivas (1)

Universidad San Pedro Semana 03 y 04

1er. Ejemplo: Contar los números enteros positivos introducidos por teclado. Se consideran dos variables enteras NUMERO y CONTADOR (contará el número de enteros positivos). Se supone que se leen números positivos y se detiene el bucle cuando se lee un número negativo o cero.

Pseudocódigo

Inicio

contador 0

Leer (numero)

Mientras numero > 0 hacer

contador contador+1

Leer (numero)

Fin_Mientras

Escribir('El número de enteros positivos es : ', contador)

Fin

Diagrama de Flujo – 1er. Ejemplo

Doc. Ing. Suxe Ramírez Alicia Curso: Técnicas de Programación

Page 6: estructuras selectivas (1)

Universidad San Pedro Semana 03 y 04

2do ejemplo: Calcular la suma de los cuadrados de los primeros 100 números enteros y escribir el resultado.Solución.

Centinelas y banderas. Cuando no se conoce a priori el número de iteraciones que se van a realizar, el ciclo puede ser controlado por centinelas.

Centinelas. En un ciclo While controlado por tarea, la condición de While especifica que el cuerpo del ciclo debe continuar ejecutándose mientras la tarea no haya sido completada.

En un ciclo controlado por centinela el usuario puede suspender la introducción de datos cuando lo desee, introduciendo una señal adecuada llamada centinela. Un ciclo Repetir controlado por centinela es cuando el usuario digita una letra para salir como por ejemplo S o N para indicar si desea continuar o no. El bucle debe repetirse hasta que la respuesta del usuario sea "n" o "N".

Doc. Ing. Suxe Ramírez Alicia Curso: Técnicas de Programación

Page 7: estructuras selectivas (1)

Universidad San Pedro Semana 03 y 04

Cuando una decisión toma los valores de -1 o algún posible valor que no esté dentro del rango válido en un momento determinado, se le denomina centinela y su función primordial es detener el proceso de entrada de datos en una corrida de programa.

Por ejemplo, si se tienen las calificaciones de un test (comprendida entre 0 y 100); un valor centinela en esta lista puede ser -999, ya que nunca será una calificación válida y cuando aparezca este valor se terminará de ejecutar el bucle.

Si la lista de datos son números positivos, un valor centinela puede ser un número negativo. Los centinelas solamente pueden usarse con las estructuras Mientras y Repetir, no con estructuras Desde/Para.

Ejemplo: Suponga que debemos obtener la suma de los gastos que hicimos en nuestro último viaje, pero no sabemos exactamente cuántos fueron. Si definimos gasto1, gasto2, gasto3, ...., -1 donde gastoi: real es el gasto número i y sumgas: real es el acumulador de gastos efectuados. -1 es el centinela de fin de datos.

Algoritmo:

InicioSumgas. 0Leer (gasto)Mientras gasto <> -1 hacerSumgas . sumgas + gastoLeer (gasto)Fin_mientrasEscribir (sumgas)Fin

Banderas. Conocidas también como interruptores, switch, flags o conmutadores, son variables que pueden tomar solamente dos valores durante la ejecución del programa, los cuales pueden ser 0 ó 1, o bien los valores booleanos True o False. Se les suele llamar interruptores porque cuando toman los valores 0 ó 1 están simulando un interruptor abierto/cerrado o encendido/apagado.

Ejemplo 1: Leer un número entero N y calcular el resultado de la siguiente serie: 1 - 1/2+ 1/3 - 1/4+.... +/- 1/N.

Algoritmo:InicioSerie . 0I . 1Leer (N)Band . "T"Mientras I <= N hacerSi band = "T" entoncesSerie . serie + (1/I)Band . "F"

Doc. Ing. Suxe Ramírez Alicia Curso: Técnicas de Programación

Page 8: estructuras selectivas (1)

Universidad San Pedro Semana 03 y 04

SinoSerie . serie - (1/I)Band . "T"Fin_siI ¬ I + 1Fin_mientrasEscribir (serie)Fin

2. ESTRUCTURA REPETIR (REPEAT):

Se llama Repetir a la estructura algorítmica que se ejecuta un número definido de veces hasta que la condición se torna verdadera. Se ejecuta al menos una vez. El bucle repetir-Hasta_que se repite mientras el valor de la expresión booleana de la condición sea falsa, justo la opuesta de la sentencia mientras.

Pseudocódigo en Español Pseudocódigo en InglésRepetir Repeat

<acciones> <acciones>

: :

Hasta que <condición> Until <condición>

Diagrama de Flujo de Repetir

1er. Ejemplo: Calcular la suma de los cuadrados de los primeros 100 números enteros y escribir el resultado.

Doc. Ing. Suxe Ramírez Alicia Curso: Técnicas de Programación

Page 9: estructuras selectivas (1)

Universidad San Pedro Semana 03 y 04

Doc. Ing. Suxe Ramírez Alicia Curso: Técnicas de Programación

Page 10: estructuras selectivas (1)

Universidad San Pedro Semana 03 y 04

3. ESTRUCTURA DESDE/PARA (FOR):

Esta sentencia incluye una expresión que especifica el valor inicial de un índice, otra expresión que determina cuando se continúa o no el bucle y una tercera expresión que permite que el índice se modifique al final de cada pasada.

La forma general de esta sentencia es:

For (expresión1; expresión2; expresión3) sentencia en donde expresión 1 (expresión de asignación), inicializa algún parámetro (llamado índice) que controla la repetición del bucle;expresión2 (expresión lógica), representa una condición que debe ser satisfecha para que se continúe la ejecución del bucle;expresión3 (expresión monaria o expresión de asignación), modifica el valor del parámetro inicialmente asignado por la expresiónLa ejecución de la sentencia for sucede de la siguiente forma:

1. Se inicializan los parámetros.

2. Se evalúa la expresión lógica.

2.1. Si el resultado es distinto de cero (verdadero), se ejecuta la sentencia, se evalúa la expresión que da lugar a la progresión de la condición y se vuelve al punto 2.

2.2. Si el resultado de 2, es cero (falso), la ejecución de la sentencia for se da por finalizada y se continúa en la siguiente sentencia del programa. En muchas ocasiones se conoce de antemano el número de veces que se desean ejecutar las acciones de un bucle. En estos casos en el que el número de iteraciones es fija, se debe usar la estructura desde o para.

La estructura Desde ejecuta las acciones del cuerpo del bucle un número específico de veces y de modo automático controla el número de iteraciones o pasos a través del cuerpo del bucle.

Pseudocódigo en Español Pseudocódigo en Inglés

Desde variable(v)= vi Hasta vf hacer For variable (v)= vi To vf Do

<acciones> <acciones>

:

Fin_desde end_for

Donde:

v: Variable índice

vi, vf: Valores inicial y final de la variable

Doc. Ing. Suxe Ramírez Alicia Curso: Técnicas de Programación

Page 11: estructuras selectivas (1)

Universidad San Pedro Semana 03 y 04

Diagrama de Flujo de la estructura Desde/Para

A la estructura Desde/Para se le conoce como Repetitiva. Para utilizar esta estructura en algoritmos, debemos hacer uso de contadores y algunas veces de acumuladores, cuyos conceptos se describen a continuación:

Contador: Un contador es una variable cuyo valor se incrementa o decrementa en una cantidad constante cada vez que se produce un determinado suceso o acción. Los contadores se utilizan con la finalidad de contar sucesos o acciones internas de un bucle; deben realizar una operación de inicialización y posteriormente las sucesivas de incremento o decremento del mismo. La inicialización consiste en asignarle al contador un valor. Se situará antes y fuera del bucle.Representación:<nombre del contador> ¬ nombre del contador> + <valor constante>

Si en vez de incremento es decremento se coloca un menos en lugar del más.

Ejemplo: i = i + 1

Acumulador o Totalizador: 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.

Representación: <Nombre del acumulador> ¬ <nombre del acumulador> + <valor variable>

Ejemplo: Calcular la suma de los cuadrados de los primeros 100 enteros y escribir el resultado. Se desea resolver el problema usando estructura Desde, Mientras y luego Repetir.

Doc. Ing. Suxe Ramírez Alicia Curso: Técnicas de Programación

Page 12: estructuras selectivas (1)

Universidad San Pedro Semana 03 y 04

Ejemplo 2.Elaborar un flujograma para encontrar la suma de los K primeros números enteros.

Doc. Ing. Suxe Ramírez Alicia Curso: Técnicas de Programación

Page 13: estructuras selectivas (1)

Universidad San Pedro Semana 03 y 04

En este ejemplo hemos utilizado un bucle repetir, el cual estudiaremos en otra lección. Lo que queremos hacer notar por el momento, es cómo funcionan el contador y el acumulador. Nota que N es el contador, el cual se inicializa en este caso, con cero, antes de entrar al bucle. Dentro del bucle podrás notar que N se incrementa en 1.

También observa la variable suma, la cual es un acumulador que lleva la suma de los números generados. También debe inicializarse con cero, ya que para sumar valores debemos partir de cero, es decir, que al inicio no tenemos nada. Dentro del bucle, suma se incrementa en un número N, pero la diferencia con el contador N, es que a suma le sumamos N más ella misma.

Doc. Ing. Suxe Ramírez Alicia Curso: Técnicas de Programación

Page 14: estructuras selectivas (1)

Universidad San Pedro Semana 03 y 04

Semana 04

Fundamentos de Programación Orientado a Objetos.

¿Qué es la Programación Orientada a Objetos?

Método de Implementación en el que los programas se organizan como colecciones cooperativas de objetos, cada uno de los cuales representa una instancia de alguna clase, y cuyas clases son miembros de una jerarquía de clases unidas mediante relaciones de herencia. En tales programas las clases suelen verse estáticas, mientras que los objetos suelen tener una naturaleza mucho más dinámica, promovida por la evidencia de la ligadura dinámica y el polimorfismo.

Objeto: Algo a lo cual se le puede hacer cosas. Un objeto tiene un estado, comportamiento e identidad; la estructura y comportamiento de objetos similares se definen en una clase común. Los términos instancia y objeto son intercambiables.

Clase: Conjunto de objetos que comparten una estructura común y un comportamiento común. Los términos y clase y tipo suelen ser (no siempre) equivalentes; una clase es un concepto ligeramente diferente del de un tipo, en el sentido de que enfatiza la clasificación de estructura y comportamiento.

Encapsulación: El proceso de introducir en el mismo comportamiento los elementos de abstracción que constituyen su estructura y comportamiento; el encapsulamiento sirve para separar el interfaz contractual de una abstracción y su implantación.

Abstracción: Las características esenciales de un objeto que lo distinguen de todos los demás objetos y proporcionan así fronteras conceptuales definidas con nitidez en relación con la prospectiva del observador; el proceso de centrarse en las características esenciales de un objeto. La abstracción es uno de los elementos fundamentales del modelo de objetos.

Herencia: Relación entre clases, en la que una clase comparte la estructura y comportamiento definido en otra (herencia simple) u otras (herencia múltiple) clases. La herencia define una relación “de tipo” entre clases en la que una subclase hereda de una o más superclases generalizadas, una subclase suele especializar a sus superclases aumentando o refinando la estructuras y comportamiento existentes.

Polimorfismo: Un concepto de teoría de tipos, de acuerdo con el cual un nombre (como declaración de una variable) puede denotar objetos de muchas clases diferentes que se relacionan mediante alguna superclase común; así todo objeto denotado por este nombre es capaz de responder a algún conjunto común de operaciones de diferentes modos.

Ligadura dinámica y estática: Ligadura denota asociación de un nombre (como un declaración de un variable) con una clase; ligadura dinámica es una ligadura en la que la asociación nombre/clase no se realiza hasta que el objeto designado por el nombre se crea en tiempo de ejecución; ligadura estática es una ligadura en la que la asociación nombre/clase se realiza cuando se declara el nombre (en tiempo de compilación) pero antes de la creación del objeto se designa el nombre.

Doc. Ing. Suxe Ramírez Alicia Curso: Técnicas de Programación

Page 15: estructuras selectivas (1)

Universidad San Pedro Semana 03 y 04

Mensaje: Operación que un objeto realiza sobre otro. Los términos mensaje, método u operación suelen ser equivalentes.

Método: Operación sobre un objeto, definida como parte de la declaración de una clase; todos los métodos son operaciones, pero no todas las operaciones son métodos. Los términos mensaje, método o operación suelen ser equivalentes.

Comportamiento: Como actúa y reacciona un objeto, en términos de sus cambios de estado y su paso de mensajes; la actividad exteriormente visible y comprobable de un objeto.

Clase abstracta: Una clase que no tiene instancias. Una clase abstracta se escribe con la intención de que sus subclases concretas añadan elementos nuevos a sus estructura y comportamiento, normalmente implementas en operaciones abstractas.

Clase base: La clase más generalizada en una estructura de clases. La mayoría de las aplicaciones tienen muchas de tales clases raíz. Algunos ejemplos definen una clase base primitiva, que sirve como la superclase ultima de todas las clases.

Clase concreta: Clase cuya implementación está completa y por tanto puede estar instanciada.

Clase contenedor (conteiner): Clases que sirve como plantilla para otras clases, en las que la plantilla puede denotar colecciones homogéneas (todos los objetos de la colección son de la misma clase) o heterogéneas (cada uno de los objetos de la colección puede ser una clase diferente, aunque generalmente todos deben compartir un superclase común). Las clases contenedor se definen la mayoría de las veces como clases parametrizadas, en las que algún parámetro designa la clase de los objetos contenidos.

Clase genérica: Clase que sirve como plantilla para otras clases, en las que la plantilla puede parametrizarse con otras clases objetos y/o operaciones. Una clase genérica debe ser instanciada (rellenados sus parámetros) antes de que puedan crearse objetos. Las clases genéricas se usan típicamente como clases contenedor. Los términos clase genérica y clase parametrizada son intercambiables.

Jerarquía: Clasificación u ordenación de abstracciones. Las dos jerarquías más habituales en un sistema complejo son su estructura de clases (que incluye jerarquía “de tipo”) y su estructura de objetos (que incluye jerarquía “de partes” y de colaboración; pueden encontrarse también jerarquías en las arquitecturas de módulos y procesos de un sistema complejo.

Operación: Algún trabajo que un objeto realiza sobre otro con el fin de provocar una reacción. Todas las operaciones sobre un objeto concreto pueden encontrarse en forma de subprogramas libres y funciones miembros o métodos. Los términos mensaje, método y operación son intercambiables.

Constructor: Operación que crea un objeto y/o inicializa su estado.

Destructor: Operación de libera el estado de un objeto y/o destruye el propio objeto.

Doc. Ing. Suxe Ramírez Alicia Curso: Técnicas de Programación