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:
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
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 “falso”se ejecuta otro grupo de sentencias.
EJEMPLO
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 “falso”se 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
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
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
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:
- múltiples
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"; ?> |
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.
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
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 VariableControl, ValorInicial, ValorFinal 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++
- #include <iostream>
- #include <conio.h>
- 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 while, do_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