viernes, 22 de abril de 2016


Unidad  5: Programación Estructurada.

La programación estructurada es un paradigma de programación orientado a mejorar la claridad, calidad y tiempo de desarrollo de un programa de computadora, utilizando únicamente subrutinas y tres estructuras: secuencia, selección (if y switch) e iteración (bucles for y while), considerando innecesario y contraproducente el uso de la instrucción de transferencia incondicional (GOTO), que podría conducir a "código espagueti", que es mucho más difícil de seguir y de mantener, y era la causa de muchos errores de programación.
Surgió en la década de 1960, particularmente del trabajo de Böhm y Jacopini,1 y una famosa carta, «La sentencia goto considerada perjudicial», de Edsger Dijkstra en 19682 — y fue reforzado teóricamente por el teorema del programa estructurado, y prácticamente por la aparición de lenguajes como ALGOL con adecuadas y ricas estructuras de control.

ESTRUCTURAS DE DECISIÓN
 Estas permiten seleccionar la próxima sentencia a ejecutarse sobre la base de una desición (expresión lógica o variable lógica)

Los tipos de estructuras de desición que podemos encontrar son:
● Simples
● Dobles
● Múltiples

ESTRUCTURAS DE DECISION SIMPLE
La estructura de decisión más sencilla, es la llamada simple, Si-Entonces Su efecto es el de ejecutar una determinada acción cuando se cumpla una cierta condición y en caso contrario seguir el orden secuencial.

La selección Si-Entonces evalúa la condición y de acuerdo a los resultados:

  • Si es verdadero, ejecuta una o varias opciones
  • Si es falsa, entonces no hace nada y sigue la ejecución normal del programa

EJEMPLO:

  ● En Pseudocódigo

Si (condición) entonces                        Si (A>B) entonces                              Si (hora <12) entonces
sentencias...                                             Escribir ('El mayor es A')                      Escribir ('buenos dias')
fin si                                                    Fin si                                                   Fin si

Estructura de desision simple

Es la que se ejecuta cuando la condicion propuesta es verdadera, ejemplo de ello tenemos
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php

if(2 > 1){
//si 2 es mayor que 1 entonces:

echo "La condición se cumple";

}

echo "<br />";

echo "El mensaje anterior se muestra si y solo si, la condición es verdadera";

?>

ESTRUCTURAS DE DECISION DOBLES
Permiten ejecutar dos conjuntos de sentencias alternativos en función del resultado de la evaluación de una
condición lógica.

Si el resultado es cierto se ejecuta un grupo de sentencias.
Si el resultado es falsose ejecuta otro grupo de sentencias.

EJEMPLO

  • En Pseudocodigo
Si ( decisión ) entonces            Si (edad < 18) entonces

    Sentencias....                           Escribir ('no puede votar')
Si no                                       Sino
    Sentencias....                           Escribir ('Si puede Votar')
fin si                                        Fin si


Estructura de decisión doble

Es la estructura que nos permite tomar un camino diferente si la condición establecida no es verdadera, para esto haremos uso de la palabra clave else, que seria como decir sino (o de lo contrario)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php

if(1 > 1){
//si 1 es mayor que 1 entonces:

echo "La condición se cumple";

}else{
echo "La condición no se cumple";
}

echo "<br />";

echo "El mensaje anterior se muestra si y solo si, la condición es verdadera";

?>

Estructura de decisión Múltiples

Las estructuras selectivas múltiples o anidadas están compuesta múltiples selectivas simples que están unidas por el comando elsif el resultado que se obtiene con una selectiva multiple se puede obtener con varias selectivas simples, entonces, ¿cual es la diferencia? el codigo es mas pequeño, aunque, yo siempre he recomendado a mis alumnos que cuando recien se esta aprendiendo a programar es recomendable que al principio se trabaje con selectivas simples, a medida que se va aprendiendo y ganando destreza se puede comenzar a utilizar las selectivas multiples en los casos que ellos crean conveniente y necesarios.
if (condición)
acción (si la condición entre paréntesis es verdadera se ejecutara la acción o acciones, porque, puede estar conformado por varias lineas)
elsif (condición)
acción (si la condición entre paréntesis es verdadera se ejecutara la acción o acciones, porque, puede estar conformado por varias lineas)
elsif (condición)
acción (si la condición entre paréntesis es verdadera se ejecutara la acción o acciones, porque, puede estar conformado por varias lineas)
end
5
Estructuras selectivas
Las estructuras selectivas se utilizan para tomar decisiones lógicas; de ahí que se suelan denominar también estructuras de decisión o alternativas.

En las estructuras selectivas se evalúa una condición y en función del resultado de la misma se realiza un opción u otra. Las condiciones se especifican usando expresiones lógicas. La representación de una estructura selectiva se hace con palabras en pseudocódigo (if, then, else o bien en español si, entonces, sino), con una figura geométrica en forma de rombo o bien con un triángulo en el interior de una caja rectangular.

Las estructuras selectivas o alternativas pueden ser:
- simples
- dobles
- múltiples
si-entonces

Estructuras de decisión anidadas

Este tipo de estructuras nos permite tomar mas de un camino para una condición y esta estructura puede ser expresada de dos formas, anidando estructuras, o con el uso de la palabra elseif, lo que podría traducirse como, sino, si…
Bueno veamos un ejemplo de cada uno, primero usando las anidadas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php

if(1 > 1){
//si 1 es mayor que 1 entonces:

   echo "La condición se cumple";

}else{
   if(1 < 1){
      echo "La condición se cumple";
   }else{
      echo "un else anidado";
   }
}

echo "<br />";

echo "El mensaje anterior se muestra si y solo si, la condición es verdadera";

?>
Y ahora veremos las estructuras de decisión con esta nueva palabra elseif
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php

if(1 > 1){
//si 1 es mayor que 1 entonces:

   echo "La condición se cumple";

}elseif(1 < 1){
   //de lo contrario 1 es menor que 1 entonces:
   echo "La condición se cumple";
}else{
   //si nada de lo anterior se cumple entonces:
   echo "un else anidado";
}

echo "<br />";

echo "El mensaje anterior se muestra si y solo si, la condición es verdadera";

?>
SELECCION COMPUESTA
Estructura anidadas
Estructuras de control
En lenguajes de programación, las estructuras de control permiten modificar el flujo de ejecución de las instrucciones de un programa.
Con las estructuras de control se puede:
·         De acuerdo a una condición, ejecutar un grupo u otro de sentencias (If-Then-Else)
·         De acuerdo al valor de una variable, ejecutar un grupo u otro de sentencias (Select-Case)
·         Ejecutar un grupo de sentencias mientras se cumpla una condición (Do-While)
·         Ejecutar un grupo de sentencias hasta que se cumpla una condición (Do-Until)
·         Ejecutar un grupo de sentencias un número determinado de veces (For-Next)
Todas las estructuras de control tienen un único punto de entrada. Las estructuras de control se puede clasificar en : secuenciales, iterativas y de control avanzadas. Esto es una de las cosas que permite que la programación se rija por los principios de la programación estructurada.
Los lenguajes de programación modernos tienen estructuras de control similares. Básicamente lo que varía entre las estructuras de control de los diferentes lenguajes es su sintaxis, cada lenguaje tiene una sintaxis propia para expresar la estructura.
Otros lenguajes ofrecen estructuras diferentes, como por ejemplo los comandos guardados
Estructura Control iterativas
La estructuras iterativas (repetidas) son bucles o repeticiones que permiten ejecutar una o más líneas de código tantas  veces sea necesario. En VFP tenemos los siguientes comando que permiten realizar iteraciones:
Tipos

Estructuras de control iterativas

Las estructuras de control iterativas o de repetición, inician o repiten un bloque de instrucciones si se cumple una condición o mientras se cumple una condición.

Do-While

Mientras la condición sea verdadera, se ejecutarán las sentencias del bloque.
   Do While (Condición)
      (Bloque de sentencias)
   Loop
que también puede expresarse:
   While (Condición)
      (Bloque de sentencias)
   wend

Do-Until

Se ejecuta el bloque de sentencias, hasta que la condición sea verdadera
   Do
      (Bloque de sentencias)
   Loop Until (Condición)

For-Next

La sentencia For da lugar a un lazo o bucle, y permite ejecutar un conjunto de sentencias cierto número de veces.
·         Primero, se evalúan las expresiones 1 y 2, dando como resultado dos números.
·         La variable del bucle recorrerá los valores desde el número dado por la expresión 1 hasta el número dado por la expresión 2.
·         El bloque de sentencias se ejecutará en cada uno de los valores que tome la variable del bucle.
   For (Variable) = (Expresión1) To (Expresión2) STEP (Salto)
      (Bloque de sentencias)
   Next

Ciclo Mientras

Es un ciclo que se repite un numero desconocido de veces.
Estructura:
Mientras (condición) {
no se inicia sino se cumple la condicion
}
int i=0;
while(i <10){
cout<< i <<endl;
i ++;
}
do{
se repite una ves
} while()
Ciclo Repectivo
Son procesos que se repiten tantas veces se le indique, cada ciclo o repeticion es una interaccion.
Existen dos tipos:
1) para (for): se repite un numero conocido de veces
Estructura:
Para (variable de inicio; condicion; incremento de la var){
}
for (int i=0; i<10; i++) {
cout<< i <<endl;
}
Para (variable de inicio; condicion; incremento de la var) {
}
for (int i=10;) i< 1; i--) {
cout<< i <<endl;
}
Métodos Para Salir del Ciclo
Formas de romper un ciclo repetitivo:
1)Cumpliendo la condicion
2)Break;------> rompe el ciclo repetitivo y lo cierra.
3)Continue;-------> realiza un salto al siguiente proceso.

Ejemplo:

#include< iostream> --------> incluye funciones de entrada y salida.
Using namespace std; -------> usa la libreria estandares.
int main(){------> funcion principal
int i=0;
for(int y=0; y<5; y++) {
for(int x=0; x<5; x++) {
}cout<< x;
cout<<y;
}
Return=0;
}
ó
if(x==3){
Continue;

Matriz  Y1 x X1    Y2 x X2
0
1
2
3
4
0
1
2
3
4
0
1
2
3
4
0
1
2
3
4
0
1
2
3
4

Bucle for

El bucle for o ciclo for es una estructura de control en la que la PC nos muestra el como programar si es que nosotros queremos programar un robot B-bot , en este se puede indicar el modo en la que se puede indicar el número mínimo de iteraciones. Está disponible en casi todos los lenguajes de programación imperativos.

Elementos del bucle

  • Variable de control': prácticamente un mandato impuesto por el uso habitual es utilizar la letra i Iterador como variable de control, o bien sus sucesoras en caso de bucles anidados. El uso de esta letra críptica quizás a primera vista es sin embargo una excelente forma de aportar agilidad de lectura al código por su uso tan extensivo. Como raras veces los bucles anidados superan las tres dimensiones (por una sencilla cuestión de explosión exponencial), las letras i, j y k suelen ser las únicas relacionadas con este uso. En C se define en el primer parámetro de la instrucción junto con la inicialización (opcional).
  • Inicialización de la variable de control: en pseudolenguaje se pide explicitarlo (es la sección := ValorInicial), sin embargo, otros lenguajes más permisivos como C no lo requieren de forma obligatoria. De todos modos, la práctica de utilizar variables de control que no se inicializan en el bucle no es recomendada para la legibilidad del código. En C se define en el primer parámetro del bucle junto con la variable de control.
  • Condición de control: en pseudolenguaje se ve representado por el valor final que puede tomar la variable de control (la sección A ValorFinal). En C es el segundo parámetro y puede ser cualquier condición (ni siquiera es obligación que esté la variable de control, aunque una vez más, esto no se considera una buena práctica).
  • Incremento: en pseudolenguaje se toma por defecto el valor 1, aunque puede explicitarse por medio de la sentencia PASO = ValorPaso cualquier número entero (léase bien entero, o sea que técnicamente podemos decrementar). En C es el último parámetro.
  • Cuerpo: es lo que se hará en cada iteración, pueden ser una o más instrucciones. En pseudolenguaje pesa la restricción de no poder alterar el valor de la variable de control; esto no es requerido en C, pero no se considera una buena práctica.

Usos

Su uso principal se orienta a los vectores, pudiendo modificar, agregar, eliminar o consultar datos que se encuentren según el índice. Por esto último, una condición mínima del vector es que debe ser ordenado, por que si se intenta leer un dato inexistente, esto genera un error de programación.

For en Pseudolenguaje

La principal diferencia de un bucle PARA con respecto a los bucles MIENTRAS Y REPETIR, es que puede determinarse al comienzo del bucle cuántas veces se iterará el mismo, lo cual muchas veces puede redundar en una optimización del código por parte de los compiladores. Los condicionales constituyen junto con los bucles los pilares de laprogramación estructurada, y su uso es una evolución de una sentencia de lenguaje ensamblador que ejecutaba la siguiente línea o no en función del valor de una condición.
El bucle PARA se ha convertido en el bucle más ampliamente utilizado en la programación, ya que con la evolución de los lenguajes la mayoría de las condiciones de fin
MIENTRAS NoFinDeTabla(tabla) HACER
 PróximoRegistro(tabla)
 HacerAlgo(ElementoActual(tabla))
FIN MIENTRAS
Es lo mismo decir:
PARA i=0 a CantidadRegistros(tabla) - 1, PASO = 1
 PróximoRegistro(tabla)
 HacerAlgo(ElementoActual(tabla))
FIN PARA
Otro uso común es utilizar los bucles PARA para recorrer vectores de dos o más dimensiones, en cuyo caso se anidan estas iteraciones.
PSEUDOLENGUAJE
Vector a[3][4][2]. // Estamos indicando un vector de 3 dimensiones y 24 elementos en total.
PARA i:= 0 A 2 HACER
  PARA j:= 0 A 3 HACER
    PARA k:= 0 A 1 HACER
      HacerAlgo(a[i][j][k])
    FIN PARA
  FIN PARA
FIN PARA

Ejemplo de PARA en pseudocódigo

PARA VariableControl := ValorInicial A ValorFinal, PASO = Incremento 
  Cuerpo
 FIN PARA
donde VariableControlValorInicialValorFinal y Paso son enteros. La(s) instrucción(es) del cuerpo se ejecutará(n) (ValorFinal - ValorInicial + 1) veces, o sea que va desde ValorInicial a ValorFinal inclusive.

Ejemplo en C++

  1. #include <iostream>
  2. #include <conio.h>
  3. using namespace std;
int main() {
 int vector[10], i;
 for(i=0; i<10; i++){
    vector[i] = i;
    cout<< i<<endl;
 }  
 getch();                                                                                                                                    
 return 0; 
}
Ciclo anidado 

Un ciclo anidado es un ciclo que contiene otro ciclo. En C tenemos 3 ciclos diferentes el ciclo whiledo_while y for, estos ciclos se pueden anidar uno en otro ya sea el mismo ciclo o uno diferente. C permite 15 niveles de anidación, cuando se anida un ciclo dentro de otro siempre se terminan de realizar primero el ciclo que esta más anidado, por ejemplo en caso de que anidáramos dentro de un ciclo do while a un ciclo for, el ciclo for se terminaría primero.

Estructuras de control anidadas

Las estructuras de control básicas pueden anidarse, es decir pueden ponerse una dentro de otra.

Estructura For-Next dentro de una estructura If-Then-Else

   IF A > B THEN
      FOR X = 1 To 5
         (Bloque de sentencias 1)
      NEXT
   ELSE
      (Bloque de instrucciones 2)
   END IF

Estructura If-Then-Else dentro de estructura For-Next

   FOR x = 10 TO 20 step 2
      IF A == C THEN
       (Bloque de instrucciones)
      ELSE
       (Bloque de instrucciones)
      END IF
   NEXT

Estructura For-Next que está dentro de estructura Do-While


 Do While A > 0
    For X = 1 to 10
       (Bloque de instrucciones)
    Next
    A = A - 1
 Loop

No hay comentarios:

Publicar un comentario