Pagina nueva 4

Bienvenido!

 

 

 

 

 

 

 

 

 

 

 

 

OBJETIVOS GENERALES

*    Aplicar las etapas a seguir , para la solución de un problema

*    Construir programas estructurados

 OBJETIVOS ESPECÍFICOS

*    Crear algoritmos

*    Implementar algoritmos en algún lenguaje de programación (Pascal)

*    Usar Diagrama de Flujo como herramienta de representación de algoritmos

*    Explicar como se realizan programas estructurados

 

 

 

CONTENIDO

1. Introducción

2. Pasos a seguir para la solución de un problema usando computadora

2.1. Comprenda el Problema

2.2. Desarrolle una solución (Algoritmo)

2.2.1.      Entrada

2.2.2.      Salida

2.2.3.      Finitud

2.2.4.      Exactitud

2.2.5       Congruente

2.2.6.      Efectividad

2.3.   Representación del algoritmo

2.3.1.      Pseudocódigo

2.3.2.      Diagramación

2.3.3.       Teorema de la Diagramación estructurada

2.4.   Codificación

2.5.   Ejecución

3. Datos, Tipos de datos y Operaciones Primitivas

4. Constantes y Variables

5. Expresiones

6. Funciones Internas

7. Operaciones de asignación

8.  Estructuras de Control

          8.1.   Estructura Secuencial 

          8.2.  Estructuras Selectivas

     8.3.   Estructuras Repetitivas

     8.4.   Estructuras Anidadas

 

 

 

 

1. Introduccion

1.      Inicialmente se discutira en terminos generales el proceso de preparacion de programas.

Importancia de los computadores : Esta maquina la cual constituye el invento mas destacado del hombre, ha invadido todas las areas de la sociedad, abriendo nuevas y amplias posibilidades debido a sus extraordinarias  capacidades de rapida manipulacion de la informacion, convirtiendose a la fecha en una herramienta tan esencial, con tanto potencial para cambiar, nuestras vidas, nuestro mundo por lo tanto a la fecha el que no conoce un computador puede considerase un "Analfabeto en tecnologia".

Como reconocer un computador? Podemos describir al computador como una maquina que acepta informacion la procesa y luego provee los resultados como una nueva informacion.

 

 

 

    Si bien es cierto que los computadores varian considerablemente en tama;o, forma y colores sin embargo una estructura basica minima es la siguiente:

 

 

 

 

 

2. Pasos a seguir para la solucion de un problema usando el computador.

      Antes de iniciar la discucion de como desarrollar programas usando el computador , demos una mirada a pasos requeridos en la utilizacion del computador como una herramienta en la solucion del problema. En efecto existe un patron determinado compuesto de cinco pasos:

2.1 Comprenda el problema

       El primer paso en la solución es el entendimiento completo del problema. Debe determinarse  primero si es posible resolver el problema con la computadora. Muchos problemas sencillamente no son aptos para la solución en computadora.

Los problemas basados en una sola formula pueden resolverse en forma más eficiente en calculadoras electrónicas manuales. Los problemas para la computadora deben involucrar tantas repeticiones como sean posibles, ya que esto es lo que las computadoras realizan en mejor forma. Cualquier cosa para la cual una computadora sea programada, esta puede realizarla en forma repetida tantas veces como se quiera.

Un problema para computadora debe también ser útil. Normalmente el tiempo de una computadora es costoso y debe ser empleado en forma inteligente. En el ambiente escolar, sin embargo,  cualquier problema que ilustre algún punto es útil en la medida que eduque. Antes de  resolver un problema en la computadora, debe responderse las siguientes preguntas:

-         ¿Se encuentra bien definido el problema?

-         ¿Puede resolverse el problema con la computadora?

-         ¿La maquina disponible tiene la capacidad suficiente para la solución del problema?

-         ¿Cuáles son los datos de entrada al problema?

-         ¿Qué resultados se espera obtener del problema ?

-         ¿La solución en la computadora es la forma más eficiente de resolver el problema desde el punto de vista costo efectividad

Con frecuencia las personas formulan preguntas tales como ”¿Puede jugarse ajedrez con una computadora?” “ ¿Podría simularse las operaciones de un avión jet con una computadora?” “¿Podría automatizarse el sistema de contabilidad de una compañía en una computadora?”. Por supuesto, todas estas cosas pueden ser realizadas con una computadora, pero esto puede tomar varios meses o años en la sola definición adecuada del problema. Aun cuando suene extraño, debemos saber primero exactamente cual es el problema antes de intentar resolverlo.

Para que un problema sea soluble en una computadora no necesariamente se requiere que pueda ser descrito mediante una ecuación matemática exacta, pero si se requiere un conjunto definido de reglas que puedan ser seguidas por la computadora. Si un problema requiere de intuición o de adivinanzas, o si es tan difícil de definir que no puede ser expresado en palabras precisas, no puede ser resuelto con la ayuda de una computadora. Se requiere pensar muy cuidadosamente para definir un problema en forma exacta y prepararlo para su solución en la  computadora  de tal forma que se tenga en consideración cualquier posible alternativa.

2.2  Desarrolle de una solución ( algoritmo)

 Una vez que se entienda completamente el  problema, se puede proceder a desarrollar en método para su solución, este método de solución se encuentra incluido en lo que llamaremos un algoritmo. Un algoritmo es sencillamente un procedimiento preciso y sin ambigüedades para la solución del problema. Este determina la secuencia de operaciones con las cuales se obtiene la solución en un numero finito de pasos. Dicho de otra forma el algoritmo representa la lógica requerida para la obtención de la solución a un problema

El algoritmo que se encuentre ante la formulación de algún problema debe cumplir las siguientes condiciones:

2.2.1. Entrada : Todo algoritmo debe tener datos de entrada para que sean analizados y permitan al algoritmo emitir algún resultado.

 

2.2.2. Salida : Esta condición es el resultado de la aplicación de un algoritmo.

 

 

 

2.2.3. Finitud : La condición de finitud esta establecida para determinar que todo algoritmo debe llegar a un final (Vale decir que tiene que tener un final y no quedarse buscando o calculando de manera infinita)

 

 

 

2.2.4. Exactitud : La condición mas importante en el proceso de elaboración del algoritmo es la  exactitud por que garantiza que el resultado (salida) es exactamente lo que se pretendía con el algoritmo.

 

2 mas 2 --> Algoritmo suma  ---> 4.001

Mal

                  2 mas 2 --> Algoritmo suma  ---> 4  Bien

 

 

 

2.2.5. Congruente: Esta condición garantiza que al probarse varias veces el algoritmo debe salir el resultado correcto (exacto) y no variar de un momento a otro aplicando el mismo algoritmo.

 

 

 

 

 

 

2.2.6. Efectividad : La condición de efectividad e básicamente el premio a la experiencia en programación debido a que consiste en que el algoritmo debe ser resuelto en los pasos mínimamente requeridos y con el uso de recursos necesarios y en el mínimo de tiempo.

 

 

 

 

 

 

 

 

2.3 Representación del algoritmo

 El lenguaje corriente no es un medio satisfactorio para la representación de un algoritmo. El lenguaje en si mismo es por ambiguo por naturaleza y el flujo lógico de problemas complejos no puede explicarse fácilmente con palabras. Una de las técnicas utilizada ampliamente para la representación de algoritmos en la solución de problemas con computadora es el diagrama de flujo. Por consiguiente, una vez haya sido definido el problema y haya sido desarrollado el algoritmo, debería dibujarse un diagrama de flujo para ilustrar por medio de símbolos la lógica en la solución del problema. Los diagramas de flujo son quizás el mejor método disponible para expresar lo que se desea que hagan las computadoras. Estos son simples, fáciles de elaborar y de usar y eliminan ambigüedades.

Sin embargo existe otra forma de representación de un algoritmo que se denomina pseudocódigo estructurado, esta forma de representación se ajusta a cierta normativa que garantiza que no sea ambiguo.

2.3.1 Pseudocódigo

      Es un lenguaje de especificación de algoritmos, pero muy parecido a cualquier lenguaje de programación, por lo que luego su traducción al lenguaje es muy sencillo, pero con la ventaja de que no se rige por las normas de un lenguaje en particular. Nos centramos más en la lógica del problema.

            El pseudocódigo también va a utilizar una serie de palabras clave o palabras especiales que va indicando lo que significa el algoritmo.

Notación para el pseudocodigo.

1.      Inicio y Fin: Por donde empieza y acaba el algoritmo.

2.      Sí <cond>

Entonces <acc1> 

Sino <acc2>

3.Mientras <cond> /hacer 

4. Repetir  / hasta 

5. Desde  /hasta

·         Los comentarios van encerrados entre llaves.

·         Hay que utilizar la identación.

Algoritmo <nombre alg>

Var

  <nombre>: <tipo>

Inicio

  <Instrucciones>

Fin

Algoritmo Producto

Var

  P, num: entero

Inicio

  P = 1

  Leer num

  Mientras num >=0 hacer

    P = p*num

    Leer num

  Fin mientras

  Escribir p

Fin

2.3.2. Diagramacion

    Un diagrama de flujo es una representación gráfica de la solución a un problema

    Un diagrama de flujo utiliza además de palabras símbolos geométricos para expresar diferentes tipos de operaciones

Un diagrama de flujo es otra forma de escribir y expresar algoritmos. El algoritmo del cuadrado mágico o cualquier otro algoritmo podría ser representado mediante un diagrama de flujo. Podríamos hacer os mismo con un libro de recetas de cocina para la preparaciones de una torta de chocolate o con el procedimiento para hacer una llamada telefónica

 ¿Que es un diagrama de flujo ?

Un diagrama de flujo es otro ‘lenguaje’ para describir y expresar algoritmos. La palabra lenguaje se refiere a un medio de expresar información en comunicaciones. Un diagrama de flujo es una representación gráfica de la solución a un problema. Un diagrama de flujo utiliza, además de palabras, símbolos geométricos para expresar diferentes tipos de operaciones. Es simplemente una descripción pictórica del algoritmo donde se muestran las operaciones pertinentes, los puntos de decisión  y la secuencia en que deben realizarse para resolver el problema en forma correcta.

     Un diagrama de flujo es quizás el mejor método disponible para expresar lo que pueden hacer los computadoras o lo que se desee que estos hagan. Los diagramas de flujo son sencillos , fáciles de hacer, de utilizar y no presentan ambigüedades.

Símbolos para los diagramas de flujo

Existe un conjunto de símbolos estándares que fueron establecidos por el Instituto Nacional de Estándares de los Estados Unidos, que es relativamente grande: sin embargo utilizaremos solamente los símbolos mostrados en la figura 4. Este conjunto nos permitiría elaborar diagramas de flujo para una amplia variedad de problemas.

2.3.3. Teorema de la Diagramación Estructurada

A finales de los años 1960 surgió una nueva forma de programar que no solamente daba lugar a programas fiables y eficientes, sino que además estaban escritos de manera que facilitaba su comprensión posterior.

El teorema del programa estructurada, demostrado por Böhm-Jacopini, demuestra que todo programa puede escribirse utilizando únicamente las tres instrucciones de control siguientes:

Solamente con estas tres estructuras se pueden escribir todos los programas y aplicaciones posibles. Si bien los lenguajes de programación tienen un mayor repertorio de estructuras de control, éstas pueden ser construidas mediante las tres básicas.

2.4 Codificacion

 

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

 

     El diagrama de flujo se utiliza como una guía para la codificación real del programa en un lenguaje de programación. El programa, o listado de instrucciones para la computadora, hará que este proceda a obtener la solución al problema. En el ejemplo, abajo, se muestra la forma como luciría un programa ya escrito en el lenguaje de programación.

Program Prg1;

Var A,B,Res:integer;

Begin

Writeln(‘Digite el primer valor a multiplicar’);

Readln(A):

Writeln(‘Digite el segundo valor a multiplicar’);

Readln( B);

Res := AxB;

Writeln(‘El resultado de multiplicar’,A,’y’,B’es : ‘,Res);

End.

2.5 Ejecución

     Después de que el programa ha sido escrito, deben introducirse el programa y los datos a la computadora y dar instrucciones a la maquina para ejecutar el programa. Si el programa no contiene errores, la computadora ejecutara el programa y dará los resultados deseados. Si el programa presenta errores, debe buscarse la causa por la cual no corrió, hacer las correcciones necesarias y correrlo de nuevo. Este es el proceso de corrección del programa. Debe tenerse presente, sin embargo, que si el programa se ejecuta y se obtiene resultados impresos, no hay ninguna garantía que estos resultados sean correctos. Debe realizarse algún tipo de verificación para asegurarse que los resultados sean ‘correctos’.

3. Datos, Tipos de Datos y Operaciones Primitivas

Dato: Es un objeto o elemento que tratamos a lo largo de diversas operaciones.

           Tienen 3 caracteristicas:

-          Un nombre que los diferencia del resto.

-         Un tipo que nos determina las operaciones que podemos hacer con ese dato.

-          Un valor que puede variar o no a lo largo de la operación.

Existen diferentes tipos de datos.

Características de los tipos:

-          Cada tipo se representa o almacena de forma diferente en la computadora.

Bit:1/0;  Byte=8 bits.

-          Un tipo agrupa a los valores que hacen las mismas operaciones.

-          Si tiene definida una relación de orden es un tipo escalar.

-          Cardinalidad de un tipo: Número de valores distintos que puede tomar un tipo.

Pueden ser finitos (caracteres), y si son infinitos el ordenador los toma como finitos porque esta limitado por el tamaño de los bytes en el que la cifra es almacenada.

Los datos pueden ser:

-          Simples: Un elemento.

-          Compuestos: Varios elementos.

Los tipos pueden ser:

-          Estandar: Que vienen en el sistema por defecto.

-          No estandar: Son los que crea el usuario.

Los tipos simples más importantes son:

-          Numéricos.

-          Lógicos.

-          Caracteres.

        Numéricos:

-   Entero: Subconjunto finito del conjunto matemático de los numéros enteros. No tiene parte decimal. El rango de los valores depende del tamaño que se les da en memoria.

-   Real: Subconjunto finito del conjunto matemático de los números reales. Llevan signo y parte decimal. Se almacenan en 4 Bytes (dependiendo de los modificadores). Si se utilizan números reales muy grandes, se puede usar notación científica que se divide en mantisa, base y exponente; tal que el valor se obtiene multiplicando la mantisa por la base elevada al exponente.

Lógicos o booleanos:

-   Aquel que sólo puede tomar uno de los dos valores, verdadero o falso (1/0).

       Carácter:

-   Abarca al conjunto finito y ordenado de caracteres que reconoce la computadora (letras, digitos, caracteres especiales, ASCII).

Tipo de cadena o String: Conjunto de caracteres, que van a estar entre “”.

El propio lenguaje puede añadir más tipos, o se pueden añadir modificadores.

                Entero : Int à Long int

En algunos lenguajes se definen tipos especiales de fecha y hora, sobre todo en los más modernos.

 

4. Constantes y Variables

-   Constantes: Tienen un valor fijo que se le da cuando se define la constante y que ya no puede ser modificado durante la ejecución.

-   Variables: El valor puede cambiar durante la ejecución del algoritmo, pero nunca varia su nombre y su tipo.

Antes de usar una variable hay que definirla o declararla, al hacerlo hay que dar su nombre y su tipo. El nombre que le damos tiene que ser un nombre significativo, va a ser un conjunto de caracteres que dependiendo del lenguaje hay restricciones. Tiene que empezar por una letra, y el tamaño depende del lenguaje.

                Identificador: Palabra que no es propia del lenguaje.

       El valor de la variable si al declararla no se la inicializa, en algunos lenguajes toma una por defecto. En cualquier caso el valor de la variable podemos darle uno inicial o podemos ir variándolo a lo largo de la ejecución.

       Las constantes pueden llevar asociados un nombre o no, si no lo llevan, se llaman literales. Su valor hay que darlo al definir la constante y ya no puede cambiar a lo largo de la ejecución, y en cuanto al tipo, dependiendo de los lenguajes en algunos hay que ponerlo, y en otros no hace falta ponerlo porque toma el tipo del dato que se le asigna. à Const PI=3,1416.

                Hay que inicializar todas las variables.

                < > à Hay que poner algo obligatoriamente.

                [ ]  à  Puede llevar algo o no llevarlo.

        La ventaja de usar constantes con nombre es que en cualquier lugar donde quiera que vaya la constante, basta con poner su nombre y luego el compilador lo sustituirla por su valor.

                Las constantes sin nombres son de valor constante: 5, 6, ‘a’, “hola”.

                Cuando una cadena es de tipo carácter, se encierra entre ‘’ à ‘a’.

Relación entre variables y constantes en memoria:

Al detectar una variable o una constante con nombre, automáticamente se reserva en memoria espacio para guardar esa variable o constante. El espacio reservado depende del tipo de la variable.

       En esa zona de memoria es en la que se guarda el valor asociado a la variable o constante y cuando el programa use esa variable, ira a esa zona de memoria a buscar su valor.

5. Expresiones

Una expresión es una combinación de constantes, variables, signos de operación, paréntesis y nombres especiales (nombres de funciones estándar), con un sentido unívoco y definido y de cuya evaluación resulta un único valor.

Toda expresión tiene asociada un tipo que se corresponde con el tipo del valor que devuelve la expresión cuando se evalúa, por lo que habrá tantos tipos de expresiones como tipos de datos. Habrá expresiones numéricas y lógicas.

Numéricas: Operadores aritméticos.

Son los que se utilizan en las expresiones numéricas (una combinación de variables y/o constantes numéricas con operadores aritméticos y que al evaluarla devuelve un valor numérico.

+, -, *, /.

Operación resto: Lo que devuelve es el resto de una división entera.

            Mod: Pascal.   à 5 mod 3 = 2         

            %: C.

División entera: Nos devuelve el cociente de una división entera (en la que no se sacan decimales).

            Div: Pascal.     à 5 div 3 = 1

            \: C.

Potencia: ^ à 5^2.

Todos estos operadores son binarios (el operador se sitúa en medio), el menos también puede ser uñaría (lleva un único operando) y significa signo negativo.

Reglas de precedencia:

            El problema es cuando una expresión entera según como la evalué pueda dar diferentes valores.

            7*3+4 à 25

                        à 49

La solución es aplicar prioridad entre los operadores, de modo que ante la posibilidad de usar varios siempre aplicaremos primero el de mayor prioridad.

Cada lenguaje puede establecer sus propias reglas de prioridad o precedencia de operadores. Si no nos acordamos, siempre podemos poner ( ).

1ª) ^

2ª) *  /  div  mod

3ª) +  -

Entre dos operaciones que tienen la misma precedencia para resolver la ambigüedad, hay que usar la regla de la asociatividad. La más normal es la de la asociatividad a izquierdas (primero lo de la izquierda).

Expresiones lógicas

Una expresión lógica es aquella que sólo puede devolver dos valores (Verdadero o Falso). Los valores que pueden aparecer en una expresión lógica son de 2 tipos: lógicos y relacionales.

La particularidad de las expresiones lógicas es que mientras en una expresión numérica por devolver un valor numérico los operandos solo pueden ser números, en una expresión lógica los operandos no tienen porque ser booleanos aunque se devuelva un valor booleano. Esto es lo que ocurre cuando en la expresión lógica utilizamos operadores relacionales con lo cual se obtienen valores lógicos o booleanos a partir de otros que no lo son.

En cambio cuando los operadores son lógicos los operandos obligatoriamente también tienen que ser lógicos.

            Operadores relacionales:

            <

            >

            =

            <> à en C: !=

                       < Operando1> operador < Operando2>

                                   5                >               3            Verdadero

¿Cómo se evalúa una expresión relacional?:

-   Primero se evalúa el primer operando y se sustituye por su valor.

-   Luego se evalua el seguno operando y se sustituye por su valor.

-   Finalmente se aplica el operador relacional y se devuelve el valor booleano correspondiente.

((3*2)+1-5^2) < (2-1)

                        -18      <    1    à Verdadero.

El problema del tipo real:

Desde la informática, los números reales son finitos, ya que tenemos un máximo de cifras decimales. Cuando trabajamos con un =, matemáticamente da un valor exacto, pero informativamente no es exacto.

            1/5 * 5 =1

            1.0/5.0 *5.0 <>1.0

            Soluciones:

-         La que nos aporte el propio lenguaje de programación. Se considera un valor de error.

-         Trabajar con números enteros siempre que sea posible.

-         Utilizar las comparaciones <>

-         Si hay que preguntar por igual, cambiar la condición utilizando valores absolutos y un valor mínimo de error.

Si la diferencia < 0.00000001  y  ABS (A-B)< min  ; son iguales.

Operadores lógicos:

            El problema es que a veces queremos preguntar o evaluar por más de una condición al mismo tiempo y para esto están los operadores lógicos.

            Y   and  &&

            O  or  !!

            No  not  ~

 

Y, O, son operadores binarios (necesitan 2 operandos de tipo logico).

Operando 1  Operador  Operando 2

            El No es unario y se coloca primero el No, y despues el operando.

            El resultado es lógico y depende de:

Operando 1

Operando 2

AND

OR

V

V

V

V

V

F

F

V

F

V

F

V

F

F

F

F

 

El No niega :

NOT

1/0

V

F

F

V

 Prioridades de los operadores:

-         Lo más prioritario es el NOT

-         Luego el Y y el O.

-         <, > =,...

Tabla de prioridades:

            ^   NO

/ div mod y

            + - O

            <, >, =, <>,...

 

6. Funciones Internas

Son funciones matemáticas diferentes de las operaciones básicas pero que se incorporan al lenguaje y que se consideran estándar. Dependen del lenguaje. Normalmente se encuentran en la librería de matemáticas del lenguaje de programación.

Fórmulas:

            Abs (x)

            Arctan (x)

            Cos (x)

            Sen (x)

            Exp (x)

            Ln (x)

            Log 10 (x)

            Redondeo (x)

            Trunc (x)

            Cuadrado (x)

            Raiz (x)

 

7. Operaciones de asignacion

Consiste en atribuir un valor a una variable. El valor sera una expresión (constante, variable,...).

<-    Otros lenguajes = , :=

Variable a la que se le asigna el valor <- el valor que le vamos a asignar.

            A = 5

 El proceso de asignación se realiza en 2 fases:

-   Se evalúa la expresión de la parte derecha de la asignación obteniéndose un único valor.

-   Se asigna ese valor a la variable de la parte izquierda.

¿Qué es lo que hay que tener en cuenta?:

-   En la parte izquierda sólo puede haber una variable.

-   La variable a la que se le asigna el valor pierde su valor anterior.

-   La variable que aparece en la derecha ya que como se evalua primero la de la derecha cuando se tenga que evaluar el valor de esa variable se tomara su valor antiguo.

8. Estructuras de control

    La característica fundamental de la programacion es que se va a basar en el uso únicamente de tres estructuras de control que son:

8.1 Estructura secuencial

      Es cuando una instrucción sigue a otra en secuencia, es decir, la salida de una instrucción es la entrada de la siguiente.

8.2 Estructuras Selectivas

    Se evalúa la condición y en función del resultado se ejecuta un conjunto de instrucciones u otro. Hay tres tipos de selectivas (simple, doble o múltiple):

Simple

    Evaluamos la condición y si es verdadera ejecutamos el conjunto de condiciones asociadas al entonces, y si es falso, no hacemos nada.

Binaria

Se evalúa la condición y si es verdad se ejecutan el conjunto de acciones asociadas a la parte entonces, y si es falso se ejecutan el conjunto de acciones asociadas a la parte sino.

Multiple

Se evalúa una condición o expresión que puede tomar n valores. Según el valor que la expresión tenga en cada momento se ejecutan las acciones correspondientes al valor. En realidad equivale a un conjunto de condiciones anidadas

8.3 Estructuras repetitivas

    En aquella que contiene un bucle (conjunto de instrucciones que se repiten un número finito de veces). Cada repetición del bucle se llama iteración. Todo bucle tiene que llevar asociada una condición, que es la que va a determinar cuando se repite el bucle.

Mientras Hacer

    La condición del bucle se evalúa al principio, antes de entrar en él. Si la condición es verdadera, comenzamos a ejecutar las acciones del bucle y después de la ultima volvemos a preguntar pro la condición. En el momento en el que la condición sea falsa nos salimos del bucle y ejecutamos la siguiente condición al bucle

 

 

 

 

 

 

 

 

 

Repetir hasta

    Se repite el bucle hasta que la condición sea verdadera. Se repite mientras la condición sea falsa. La condición se evalúa siempre al final del bucle, si es falsa volvemos a ejecutar las acciones, si es verdad se sale del bucle

 

 

Para

    Este tipo de bucles se utiliza cuando se sabe ya antes de ejecutar el bucle el número exacto de veces que hay que ejecutarlo. Para ello el bucle llevara asociado una variable que denominamos variable índice, a la que le asignamos un valor inicial y determinamos cual va a ser su valor final y además se va a incrementar o decrementar en cada iteración de bucle en un valor constante, pero esto se va a hacer de manera automática, el programador no se tiene que ocupar de incrementar o decrementar esta variable en cada iteración, sino que va a ser una operación implícita (lo hace por defecto).

 

8.4 Estructuras anidadas

    Tanto las estructuras selectivas como los bucles se pueden anidar unos dentro de otros

Anidación de condicionales

    La ventaja de anidar sentencias condicionales, es que cuando una se cumple no hay por que mirar a las que estan debajo. Tenemos que tratar anidar la condicion en la parte sino (else) en vez que en la parte entonces.

Si <condicion1>

    Entonces <sentencia1>

    Sino si <condicion2>

            Entonces <sentencia2>

            Sino si <condicion2>

                    Entonces <sentencia3>

                    Fin si

            Fin si               

Fin si       

 

          El case siempre equivale a una anidación de condicionales, pero no al reves.

Bucles anidados

       Al igual que podemos colocar unas expresiones dentro de otras, unos bucles pueden estar dentro de otros, pero nunca pueden cruzarse. Al anidar bucles hay que tener en cuenta que el bucle mas interno funciona como una sentencia mas del bloque mas externo y por tanto en cada iteración del bucle mas externo se van a ejecutar todas las iteraciones del bucle mas interno por cada iteración del mas externo.

Si el bucle mas externo se repite n veces y el mas interno se repite m veces, si por cada iteración del mas externo se repite el mas interno, el número total de iteraciones será m*n.

Los bucles que se anidan pueden se de igual o distinto tipo.