https://drive.google.com/file/d/1d-dpSR8o9UUcrhsTUjE97xBIcyV2_y0_/view?usp=sharing
Estructuras De Control Secuencial y De Decisión
jueves, 17 de abril de 2025
viernes, 3 de abril de 2020
Las Estructuras De Control Secuencial y De Decision
Estructura de control secuencial
Como puedes ver en el dibujo que hice, la estructura
de control secuencial es un camino recto, desde un
inicio hasta el final. Y se irán ejecutando una serie de
instrucciones o pasos. Por ejemplo, que se introduzca
un dato a través del teclado como dos números y
luego sumar ambos números y mostrar el resultado
de la suma. Eso sería un ejemplo de código con
estructura secuencial.
Realmente todos los programas constan de
unas instrucciones secuenciales, con un inicio y un
final, incluso otras estructuras que veremos más
final, incluso otras estructuras que veremos más
adelante, ya que aunque haya varias bifurcaciones,
saltos o bucles, siempre se suele iniciar y terminar
cuando se cumple una serie de condiciones. Así
es al menos desde el punto de vista de la CPU,
que ejecutará la secuencia de instrucciones hasta
completar la ejecución de dicho programa.
Por ejemplo, en el caso de un programa simple que
sume dos números introducidos, tendremos algo
como el siguiente código fuente en C:
#include <stdio.h> int main() { int a, b, sum;
printf("Introduce el primer número: "); scanf("%d", &a);
printf("Introduce el segundo número: "); scanf("%d",
&b); sum=a+b; printf("La suma es: %d\n\n", sum);
return 0; }
En este caso, se inicia el programa, se ejecuta una
instrucción que muestra en pantalla un mensaje
pidiendo que ingreses un número con el teclado.
Luego se pasa a la siguiente instrucción que toma ese
dato. Una tercera muestra un mensaje para pedir el
segundo número, luego otra para tomar leer este otro
dato introducido. Después se ejecuta una instrucción
que suma A+B y finalmente se muestra el resultado.
Una vez completado, el programa finaliza.
Si prefieres ver el pesudocódigo y el diagrama de flujo
del algoritmo de este programa porque te parece más
intuitivo, aquí lo tienes:
La estructura lógica de decisión
trabaja muy parecido a la forma en que el ser humano
piensa y toma decisiones, por lo que es fácil de
entender. Sin embargo, la complejidad de algunas de
las decisiones que el programador debe diseñar, hace
que esta estructura sea una de las más difíciles de
implantar.
La Estructura Lógica de Decisión
La estructura lógica de decisión utiliza la
instrucción IF/THEN/ELSE. La estructura le indica
a la computadora que si (IF) una condición es
cierta, entonces (THEN) ejecute un grupo de
instrucciones, si no (ELSE) ejecute otro grupo de
instrucciones. La parte de ELSE es opcional, pues no
siempre hay instrucciones que ejecutar si la condición
es falsa. Cuando no hay instrucciones que ejecutar si
la condición es cierta, se debe usar la oración CONTIN
UE. El algoritmo para la estructura de decisión es:
If <condición(es)>
T THEN
< instrucciones si es Cierto (TRUE)>
F ELSE
< instrucciones si es Falso (FALSE)>
Las instrucciones de la parte T (True – Cierto) se procesan
cuando el resultado de la condición es cierto,
las instrucciones de la parte F (False – Falso) se
procesan cuando el resultado de la condición es falso.
procesan cuando el resultado de la condición es falso.
La condición puede ser una de las siguientes cuatros:
Expresión lógica – expresión que usa los operadores
lógicos (AND, OR, NOT)
Expresión que usa los operadores relacionales (>, <, >=,
<=, =, <>)
Variable de tipo de datos lógico (TRUE – FALSE)
Una combinación de operadores lógicos, relacionales y
matemáticos
Algunos ejemplos de expresiones condicionales son:
A < B (A y B son del mismo tipo de datos – numérico,
carácter, string)
X + 5 >= Z (X y Z son datos numéricos)
E < 5 or F > 10 (E y F son datos numéricos)
DATAOK (DATAOK es un dato lógico)
Los operadores lógicos se usan para unir dos o más
condiciones. Por ejemplo, considere que una tienda
condiciones. Por ejemplo, considere que una tienda
requiera que para aceptar un cheque el cliente debe
tener licencia de conducir Y (AND) el cheque debe ser
menor de $50. Las dos condiciones están unidas por
el operador AND.
El flujograma que ilustra una condición utiliza el
símbolo de diamante. El resultado de la condición
puede ser True o False, dependiendo de los datos.
Del diamante salen solo dos líneas de flujo, una para
la parte cierta y otra para la parte falsa. Las líneas
pueden salir de cualquiera de los tres puntos inferiores
del diamante. Se debe ser consistente en usar los
puntos mostrados en la figura a continuación.
El proceso fluye de los bloques de Cierto y de Falso;
éstos deben conectarse al resto del proceso en el
módulo. No deben existir bloques sin conectar.
Una decisión simple contiene una sola condición y una
acción o grupo de acciones si el resultado es Cierto
y otra acción o grupo de acciones si el resultado es
Falso. Por ejemplo, asuma que está calculando el
pago por un salario por hora, y el pago extra (sobre
40 horas) al tiempo y medio del salario por hora. La
decisión para calcular el pago sería: IF horas mayor
que 40, THEN el pago extra es calculado, o ELSE el
pago es calculado de la forma usual. Las decisiones
en donde se tienen múltiples condiciones son más
en donde se tienen múltiples condiciones son más
complicadas que aquellas con una sola decisión.
Estas decisiones complejas requieren que se utilice
operadores lógicos para conectar las condiciones. De
todas formas, el resultado será Cierto o Falso.
Algoritmo
IF HOURS > 40
T THEN
PAY = RATE * (40 + 1.5 * (HOURS –
40))
F ELSE
PAY = RATE * HOURS
Las estructuras de control secuencial
permiten modificar el flujo de ejecución de las
instrucciones de un programa.
Con las estructuras de control se puede:
De acuerdo con una condición, ejecutar un grupo u
otro de sentencias (If-Then-Else)
De acuerdo con el 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)
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)
Todos 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.
En Visualino las estructuras de control se encuentran
en el apartado “control”
Estructuras de control de decisión
if: es un estamento que se utiliza para probar si
una determinada condición se ha alcanzado, como
por ejemplo averiguar si un valor analógico está por
encima de un cierto número, y ejecutar una serie de
declaraciones (operaciones) que se escriben dentro
de llaves, si es verdad. Si es falso (la condición
no se cumple) el programa salta y no ejecuta las
operaciones que están dentro de las llaves.
if… else: viene a ser un estructura que se ejecuta en
respuesta a la idea “si esto no se cumple haz esto
respuesta a la idea “si esto no se cumple haz esto
otro”. Por ejemplo, si se desea probar una entrada
digital, y hacer una cosa si la entrada fue alto o hacer
otra cosa si la entrada es baja.
else: puede ir precedido de otra condición de
manera que se pueden establecer varias estructuras
condicionales de tipo unas dentro de las otras (anidamiento)
de forma que sean mutuamente excluyentes
pudiéndose ejecutar a la vez. Es incluso posible tener
un número ilimitado de estos condicionales. Recuerde
sin embargo que sólo un conjunto de declaraciones se
llevará a cabo dependiendo de la condición probada.
Tutorial if() – Comparar el valor leido de un potenciometro
con un umbral y encender un led si el valor leido
es mayor que el umbral https://www.arduino.cc/en/
Tutorial/ifStatementConditional
Uso de if con Visualino
switch..case: Al igual que if, switch..case controla el
flujo del programa especificando en el programa que
código se debe ejecutar en función de unas variables.
En este caso en la instrucción switch se compara el
valor de una variable sobre los valores especificados
en la instrucción case.
break es la palabra usada para salir del switch. Si
no hay break en cada case, se ejecutará la siguiente
instrucción case hasta que encuentre un break o
alcance el final de la instrucción.
default es la palabra que se usa para ejecutar el bloque
en caso que ninguna de las condiciones se cumplan
Uso de switch con Visualino
Tutorial Switch(case) – Leer una fotorresistencia y
en función de unos valores predefinidos imprimir la
cantidad de luz en 4 valores: noche, oscuro, medio,
claro https://www.arduino.cc/en/Tutorial/SwitchCase
Estructuras de repetición
for: La declaración for se usa para repetir un bloque
de sentencias encerradas entre llaves un número
determinado de veces. Cada vez que se ejecutan
las instrucciones del bucle se vuelve a testear la
condición. La declaración for tiene tres partes
separadas por (;). La inicialización de la variable local
se produce una sola vez y la condición se testea cada
vez que se termina la ejecución de las instrucciones
dentro del bucle. Si la condición sigue cumpliéndose,
las instrucciones del bucle se vuelven a ejecutar.
Cuando la condición no se cumple, el bucle termina.
Cualquiera de los tres elementos de cabecera puede
omitirse, aunque el punto y coma es obligatorio.
También las declaraciones de inicialización, condición
y expresión puede ser cualquier estamento válido en
lenguaje C sin relación con las variables declaradas.
Tutorial for() – efecto con leds coche
fantastico https://www.arduino.cc/en/Tutorial/
ForLoopIteration
while: Un bucle del tipo while es un bucle de ejecución
continua mientras se cumpla la expresión colocada
entre paréntesis en la cabecera del bucle. La variable
de prueba tendrá que cambiar para salir del bucle. La
situación podrá cambiar a expensas de una expresión
dentro el código del bucle o también por el cambio de
un valor en una entrada de un sensor.
Tutorial while() – calibrar el valor de un sensor
analógico https://www.arduino.cc/en/Tutorial/
WhileStatementConditional
do..while: El bucle do while funciona de la misma
manera que el bucle while, con la salvedad de que la
condición se prueba al final del bucle, por lo que el
condición se prueba al final del bucle, por lo que el
bucle siempre se ejecutará al menos una vez.
goto: transfiere el flujo de programa a un punto del
programa que está etiquetado.
break: se usa en las instrucciones do, for, while para
salir del bucle de una forma diferente a la indicada en
el bucle.
continue: se usa en las instrucciones do, for, while
para saltar el resto de las instrucciones que están
entre llaves y se vaya a la siguiente ejecución del bucle
comprobando la expresión condicional.
En Visualino están disponibles todas las estructuras
de repetición
Y por su puesto ante cualquier duda: http://
arduino.cc/en/Reference/HomePage
Arduino: http://arduino.cc/en/Reference/If
if… else: viene a ser un estructura que se ejecuta en
if… else: viene a ser un estructura que se ejecuta en
respuesta a la idea “si esto no se cumple haz esto
otro”. Por ejemplo, si se desea probar una entrada
digital, y hacer una cosa si la entrada fue alto o hacer
otra cosa si la entrada es baja.
else: puede ir precedido de otra condición de
manera que se pueden establecer varias estructuras
condicionales de tipo unas dentro de las otras (anidamiento)
de forma que sean mutuamente excluyentes
pudiéndose ejecutar a la vez. Es incluso posible tener
un número ilimitado de estos condicionales. Recuerde
sin embargo que sólo un conjunto de declaraciones se
llevará a cabo dependiendo de la condición probada.
Tutorial if() – Comparar el valor leido de un potenciometro
con un umbral y encender un led si el valor leido
es mayor que el umbral https://www.arduino.cc/en/
Tutorial/ifStatementConditional
Uso de if con Visualino
switch..case: Al igual que if, switch..case controla el
flujo del programa especificando en el programa que
código se debe ejecutar en función de unas variables.
En este caso en la instrucción switch se compara el
valor de una variable sobre los valores especificados
en la instrucción case.
break es la palabra usada para salir del switch. Si
no hay break en cada case, se ejecutará la siguiente
instrucción case hasta que encuentre un break o
alcance el final de la instrucción.
default es la palabra que se usa para ejecutar el bloque
en caso que ninguna de las condiciones se cumpla.
Uso de switch con Visualino
Tutorial Switch(case) – Leer una fotorresistencia y
en función de unos valores predefinidos imprimir la
cantidad de luz en 4 valores: noche, oscuro, medio,
claro https://www.arduino.cc/en/Tutorial/SwitchCase
Estructuras de repetición
for: La declaración for se usa para repetir un bloque
de sentencias encerradas entre llaves un número
determinado de veces. Cada vez que se ejecutan
determinado de veces. Cada vez que se ejecutan
las instrucciones del bucle se vuelve a testear la
condición. La declaración for tiene tres partes
separadas por (;). La inicialización de la variable local
se produce una sola vez y la condición se testea cada
vez que se termina la ejecución de las instrucciones
dentro del bucle. Si la condición sigue cumpliéndose,
las instrucciones del bucle se vuelven a ejecutar.
Cuando la condición no se cumple, el bucle termina.
Cualquiera de los tres elementos de cabecera puede
omitirse, aunque el punto y coma es obligatorio.
También las declaraciones de inicialización, condición
y expresión puede ser cualquier estamento válido en
lenguaje C sin relación con las variables declaradas.
while: Un bucle del tipo while es un bucle de ejecución
continua mientras se cumpla la expresión colocada
entre paréntesis en la cabecera del bucle. La variable
de prueba tendrá que cambiar para salir del bucle. La
situación podrá cambiar a expensas de una expresión
dentro el código del bucle o también por el cambio de
un valor en una entrada de un sensor.
Tutorial while() – calibrar el valor de un sensor
analógico https://www.arduino.cc/en/Tutorial/
WhileStatementConditional
do..while: El bucle do while funciona de la misma
manera que el bucle while, con la salvedad de que la
manera que el bucle while, con la salvedad de que la
condición se prueba al final del bucle, por lo que el
bucle siempre se ejecutará al menos una vez.
Referencia Arduino: http://arduino.cc/en/Reference/
DoWhile
goto: transfiere el flujo de programa a un punto del
programa que está etiquetado.
Referencia Arduino: http://arduino.cc/en/Reference/
Goto
break: se usa en las instrucciones do, for, while para
salir del bucle de una forma diferente a la indicada en
el bucle.
Referencia Arduino: http://arduino.cc/en/Reference/
Break
continue: se usa en las instrucciones do, for, while
para saltar el resto de las instrucciones que están
entre llaves y se vaya a la siguiente ejecución del bucle
comprobando la expresión condicional.
En Visualino están disponibles todas las estructuras
de repetición
ESTRUCTURAS DE DECISIÓN, SECUENCIAL Y DE
REPETICIÓN EN PROGRAMACIÓN
Un programador se enfrenta al desarrollo de un
programa con recursos y experiencia. Vamos a tratar
de abordar los distintos recursos disponibles en base
a una terminología. En el diseño de un algoritmo no es
en absoluto trascendente saber si lo que necesitamos
es una estructura o una herramienta, pero sí será
decisivo que conozcamos el recurso necesario,
llámese como se llame.
Llamaremos estructura a una instrucción o conjunto
Llamaremos estructura a una instrucción o conjunto
de instrucciones que controlan el flujo del programa
para que éste sea secuencial, alternativo o repetitivo.
De ahí la denominación de estructura secuencial,
estructura de decisión o estructura de repetición, que
gráficamente podemos asociar a:
Esquema o estructura Esquema
o estructura Esquema o estructura
secuencial de
decisión de repetición (bucle)
La potencia de los ordenadores se apoya, como es
evidente, en la velocidad, pero también y de forma
decisiva en las capacidades para decidir y repetir. En
general, a una estructura de repetición se le conoce
por “bucle” y así se puede decir “estamos en el bucle
7” ó “estamos en la iteración 7” en alusión a que se
trata de la séptima repetición de un proceso.
Iremos estudiando poco a poco cómo se materializan
estas formas de estructurar un algoritmo o programa y
haciendo ejercicios de aplicación.
Técnicas fundamentales de programación.
Estructuras, secuencias, ciclos y condicionales
La programación estructurada sigue tres reglas: la
secuencia, la iteración y la decisión. Veamos cada una
brevemente:
Secuencia
La secuencia en programación estructurada indica
que las instrucciones del código se leerán de principio
a fin desde la primera línea de código hasta la última,
sin excepción.
Iteración
Indica que, según cierta condición, un número
de instrucciones podrían repetirse un numero
determinado o incluso indeterminado de veces. Las
iteraciones son básicamente estructuras ciclicas
que nos permitirán repetir una cantidad de veces
dterminada o indeterminada unas instrucciones.
Decisión
La decisión o condición en programación estructurada
indica que según unas ciertas condiciones dadas
se ejecutarán o no un conjunto de instrucciones.
Las condiciones permiten dividir nuestro código en
"ramas", pudiendo así cambiar el flujo de ejecución,
ejecutando algunas instrucciones o no según ciertas
condiciones dadas.
En el siguiente algoritmo para limpiar platos se
aprecian estas tres características. La indentación o
tabulación de las instrucciones indican cuáles son
englobadas y cuáles no por sus predecesoras.
mientras haya platos coger plato mientras haya
suciedad echar jabón pasar el estropajo por el plato fin
mientras si plato es azul ponerlo con los azules fin si
fin mientras
En código no estructurado, quedaría algo más extraño,
pero igualmente valido.
pero igualmente valido.
1 coger plato 2 echar jabón 3 pasar el estropajo por el
plato 4 si hay suciedad ir a la instrucción 2 5 si el plato
no es azul ir a la instrucción 7 6 ponerlo con los azule
7 si hay más platos ir a la instrucción 1
En programas más grandes, esto es muchísimo más
complicado, pero bueno, de todo se puede aprender.
Ahora conocemos la ejecución de los algoritmos.
Sin embargo, un programa se compone tanto de
cual operar. Así que veamos primero algunas cosas
importantes:
Antes de empezar un programar
Estructura de un programa
En la programación estructurada hay un inicio y
un fin perfectamente bien definido de acuerdo al
diagrama de flujo que se planteó al concebir la idea del
programa, tal como se aprecia en la figura:
Un programa bien estructurado debería tener algún
subprograma que capture cualquier error dentro del
programa principal o de cualquier subprograma dentro
de la aplicación de tal modo que el subprograma que
captura los errores genere un registro de datos que
describa el error generado y/o en qué subprograma se
generó el error para posteriormente corregirlo. Para
facilitar la corrección de estos errores se hace uso de
los comentarios agregados en el código fuente.
Comentarios
El útil concepto del comentario: son líneas de texto
que el compilador o el intérprete no consideran
como parte del código, con lo cual no están sujetas a
restricciones de sintaxis y sirven para aclarar partes
de código en posteriores lecturas y, en general, para
anotar cualquier cosa que el programador considere
oportuno.
Uno como programador debe tener como prioridad
documentar nuestro código fuente ya que al momento
de depurar nos ahorrará mucho tiempo de análisis
para su corrección o estudio.
Los programadores profesionales tienen la buena costumbre
de documentar sus programas con encabezados
de texto(encabezados de comentarios) en donde
describen la función que va a realizar dicho programa,
la fecha de creación, el nombre del autor y en algunos
casos las fechas de revisión y el nombre del revisor.
Por lo general algunos programas requieren hacer
uso de llamadas a subprogramas (funciones o
métodos) dentro de una misma aplicación por lo
que cada subprograma debería estar documentado,
describiendo la función que realizan cada uno de
estos subprogramas dentro de la aplicación.
Estructura de una aplicación
Cualquier programa que se realices debe de llevar una
estructura para disminuir la tarea de depuración ya
que esta labor lleva más tiempo del estimado.
Si recién comienzas en el mundo de la programación
debes tener claro el programa a realizar, documentar
cada uno de los pasos que realizas en tu programa,
debes de considerar algún metodo de captura de
errores, etc.
Ahora veremos cómo estructurar una aplicación para
disminuir el tiempo en depuración (ser más eficientes),
así como localizar más rápidamente los errores.
Puedes buscar en Internet el concepto
"pseudocódigo", que no es más que la escritura de
un algoritmo en un lenguaje más cercano al natural,
como hablamos a diario. Una forma de represetnar
el algoritmo en lenguaje Javascript para repetir el
proceso de quitar suciedad añadiendo agua y jabón
mientras se frota sería la siguiente:
function frotar(cuanto) { var veces = 0; for (veces = 0,
suciedad = 100, veces <= cuanto; veces++) { suciedad
= suciedad - (agua + jabón); } }
Como podrás ver es un poco mas riguroso, extraño
y algunas cosas no tienen mucho sentido ni son
fáciles de entender, veamos ahora cómo sería en
pseudocódigo:
función frotar(cuantasveceslohago) variable
vecesquellevo = 0 repetir (desde que vecesquellevo
= 0 hasta que la suciedad = 0 ó vecesquellevo =
cuantasveceslohago; aumentar vecesquellevo de una
en una) suciedad = suciedad - (agua + jabón) fin repetir
fin función
En primer lugar, es muy recomendable hacer un
esquema sobre el papel con toda clase de datos que
se vayan a utilizar. Por ejemplo, si queremos hacer
un programa para controlar una empresa dedicada al
alquiler de coches, podríamos necesitar:
Matrícula del coche
Marca del coche
Modelo del coche
Color del coche
Color del coche
Estado del coche (si está alquilado, en reparación o
disponible)
Situación del coche (en qué lugar del garaje o en qué
localidad está)
Kilometraje del coche
Precio por hora del coche
por un lado, y:
Nombre del cliente
Apellidos del cliente
Dirección del cliente
DNI del cliente
Permiso de conducir del cliente
Número de cuenta del cliente
.... etc. por otro.
Muy bien!!, ahora ya sabes cómo programar, habrás
entendido la lógica necesaria para crear un programa
y seguramente habrás comprendido varios conceptos
y seguramente habrás comprendido varios conceptos
necesarios para tal fin. Seguramente estarás pesando
que hay cosas que aún no terminas de entender, así
que para eso esta el siguiente contenido (variables
y constantes) para ampliar nuestros conocimientos
y seguir aprendiendo a programar. Recuerda que
también puedes dejar algún comentario acerca de
esta sección.
Suscribirse a:
Entradas (Atom)