Está en la página 1de 10

TEMA 8: ESTRUCTURA S

BASICAS: SECUENCIAL Y
SELECCION
Programación estructurada. El flujo de control. Estructura Secuencial. Estructura de
selección: simple y múltiple. Estructuras de selección anidadas.

8.1 PROGRAMACION ESTRUCTURADA

La programación estructurada es una forma de escribir programas de


computadora utilizando únicamente tres estructuras: secuencia, selección e
iteración; siendo innecesario y no permitiéndose el uso de la instrucción o
instrucciones de transferencia incondicional.
La programación estructurada surge a finales de los años 1960 con el objetivo de
realizar programas confiables y eficientes, y que además fueran escritos de manera
de facilitar su comprensión posterior.
Hoy en día las aplicaciones informáticas son mucho más ambiciosas que las
necesidades de aquellos años, por lo que se desarrollaron nuevas técnicas, tales
como la programación orientada a objetos y el desarrollo de entornos de
programación que facilitan la programación de grandes aplicaciones.
De todas formas, el paradigma estructurado tiene vigencia en muchos ámbitos del
desarrollo de programas y constituye una buena forma de iniciarse en la
programación de computadoras.
El teorema del programa estructurado, de Böhm-Jacopini, demuestra que todo
programa puede escribirse utilizando únicamente las tres instrucciones de control
siguientes:
1. secuencial (es decir, poner instrucciones en orden, una detrás de otra, y
que sean ejecutadas en ese orden)
2. selectiva/condicional (es decir, hacer una cosa en función de una
condición -con estructuras como if, o if/else)
3. repetitiva (es decir, hacer una cosa varias veces, con bucles)
Solamente con estas tres estructuras o “patrones lógicos” 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 mencionadas.

Informática – Año 2020 Página 1


Tema 8: Estructuras básicas: secuencial y selección

8.1.1 EL FLUJO DE CONTROL

La expresión flujo de control hace referencia al orden en el que se ejecutarán las


instrucciones de un programa, desde su comienzo hasta que finaliza. El flujo
normal de ejecución es el secuencial. Si no se especifica lo contrario, la ejecución
de un programa empezaría por la primera instrucción e iría procesando una a una
en el orden en que aparecen, hasta llegar a la última.
Algunos programas muy simples pueden escribirse sólo con este flujo
unidireccional. No obstante, la mayor eficacia y utilidad de cualquier lenguaje de
programación se deriva de la posibilidad de cambiar el orden de ejecución según la
necesidad de elegir uno de entre varios caminos en función de ciertas condiciones,
o de ejecutar algo repetidas veces, sin tener que escribir el código para cada vez.
Con frecuencia, el programador necesita que el programa no se comporte sólo de
modo secuencial. Por ejemplo, calcular una bonificación sólo para los empleados
con más de 10 años de antigüedad, o calcular un descuento si abona en efectivo.
También puede ocurrir que interese que un grupo de instrucciones se ejecute
repetidamente hasta que se le indique que se detenga. Por ejemplo, calcular el
promedio de notas para cada uno de los alumnos de un curso, o realizar algún
cálculo con cada uno de los elementos de un vector.
Para las dos situaciones planteadas existen dos soluciones: las sentencias de
control selectivas y las repetitivas. Éstas permiten que el flujo secuencial del
programa sea modificado. También cumplen con este objetivo las sentencias
denominadas de invocación o salto.
Las sentencias alternativas también son conocidas como sentencias selectivas
porque permiten seleccionar uno de entre varios caminos por donde seguirá la
ejecución del programa. En algunos casos esta selección viene determinada por la
evaluación de una expresión lógica. Este tipo de sentencias se clasifican en tres:

Informática – Año 2019 Página 2


Tema 8: Estructuras básicas: secuencial y selección

simples: SI
dobles: SI-SINO
múltiples: SEGÚN-SEA

A las sentencias repetitivas se les conoce también como sentencias iterativas ya


que permiten realizar algo varias veces (repetir, iterar). Dentro de ellas se
distinguen:
desde
mientras
repetir – hasta – que

Las sentencias de salto o invocación permiten realizar saltos en el flujo de control


de un programa, es decir, permiten transferir el control del programa, alterando
bruscamente el flujo de control del mismo. En programación estructurada se
considera una mala práctica el uso de las condiciones de salto, ya que, entre otras
cosas, restan legibilidad al código. Sin embargo, si bien se debe evitar su uso, la
mayoría de los lenguajes las incluyen.
Las sentencias de salto o invocación son:
ROMPER
CONTINUAR
IR-A
VOLVER
VIDEO 8.1

8.2 ESTRUCTURA SECUENCIAL

Una estructura secuencial es aquella en la que una acción (instrucción) sigue a otra
en secuencia. Las tareas se suceden de tal forma que la salida de una es la entrada
de la siguiente y así sucesivamente hasta el final del proceso. La estructura
secuencial tiene una entrada y una salida. Su representación grafica es:

PSEUDOCODIGO INICIO
INICIO

<ACCION1> ACCION 1
<ACCION2>

<ACCION >
ACCION 2
FIN

ACCION n

FIN
Informática – Año 2019 Página 3
Tema 8: Estructuras básicas: secuencial y selección

8.3 ESTRUCTURA DE SELECCIÓN

Al escribir un programa muchas veces nos encontramos con ciertas condiciones


que influyen sobre la secuencia de pasos que hay que dar para resolver el
problema. En este caso estamos en presencia de una sentencia de selección o
condicional: alternativa simple

SI <expresión> ENTONCES
< acción >
FIN-SI Expresion SI Accion

NO

LA SENTENCIA IF
En C, la sentencia principal de selección es la sentencia if. La sentencia if tiene dos
alternativas o formatos posibles, el más sencillo es:
if (expresión) acciòn

Expresión lógica que determina si


la acción se ha de ejecutar
La acción se ejecuta se la expresión
lógica es verdadera

La sentencia IF funciona de la siguiente manera. Cuando un programa alcanza esta


sentencia, evalúa la expresión que esta entre paréntesis. Si la expresión es
verdadera, se ejecuta la acciòn, caso contrario no se ejecuta la acciòn y
continúa con el flujo del programa.

Informática – Año 2019 Página 4


Tema 8: Estructuras básicas: secuencial y selección

Ejemplo 8.1: Prueba de divisibilidad

Inicio
include <stdio.h>
main ()

{
int n,d;
printf (“ingresar dos numeros:”);
“ingresar dos
scanf(“%d %d”,&n,&d);
numeros” n,d
if ( n%d == 0)

{Printf (“ %d es divisible por


%d\n”,n,d);
}
d“ es divisible }
n%d si por” n

== 0

no
oo EJECUCIÓN

Ingresar dos números: 18 6


Fin 18 es divisible por 6

Ejemplo 8.2:

// detecta numeros positivos / negativos / nulos


#include <stdio.h>
#include<stdlib.h>
main ()

{
float numero;

/* comparar número introducido por usuario */


printf ("Introduzca un numero positivo o negativo ");
scanf("%f",&numero);

/* comparar numero */

if ( numero > 0)
printf (" %.2f es mayor que cero \n",numero);

if ( numero < 0)
printf (" %.2f es menor que cero \n",numero);
if ( numero == 0)
printf (" %.2f es igual que cero \n",numero);

system("pause");
return 0;
}

Informática – Año 2019 Página 5


Tema 8: Estructuras básicas: secuencial y selección

Este programa simplemente añade otra sentencia if que comprueba si el numero


introducido es menor que cero. Realmente la tercera sentencia if se añade también y
comprueba si el número es igual a cero.

SENTENCIA IF DE DOS ALTERNATIVAS: IF-ELSE

La instrucción SI-ENTONCES (if) puede ser utilizada también en casos de selección de


más de dos alternativas. El segundo formato de la sentencia if es la sentencia if-else.

SI <expresión> ENTONCES
< accion1 >
SINO
< accion2>
FIN-SI

Accion 2 NO Expresion SI Accion 1

El segundo formato de la sentencia if es la sentencia if-else.

if (expresión) acciòn1 else acciòn2

La acción2 se ejecuta se la
expresión lógica es verdadera
Expresión lógica que
determina si la acción se
ha de ejecutar
La acción1 se ejecuta se la
expresión lógica es verdadera

Cuando se ejecuta la sentencia if-else, se evalúa la expresión. Si expresión es


verdadera ejecuta acciòn1, y en caso contrario se ejecuta la acciòn2.

Informática – Año 2019 Página 6


Tema 8: Estructuras básicas: secuencial y selección

Ejemplo 8.3: Prueba de divisibilidad con dos alternativas

EJECUCIÓN

Ingresar dos números: 18 5


18 no es divisible por 5

Inicio
%

“Ingresar dos
numeros” n,d

d, “NO es divisible
d, “es divisible
por” n
NO n%d == 0 SI por” n

Fin

// prueba de divisibilidad con dos alternativas


#include <stdio.h>
#include<stdlib.h>
main ()
{
int n,d;
printf ("ingresar dos numeros enteros:");
scanf("%d %d",&n,&d);

if ( n/d == 0)
printf ("%d es divisible por %d\n",n,d);
else
printf ("%d no es divisible por %d\n",n,d);
system("pause");
return 0;
}

Informática – Año 2019 Página 7


Tema 8: Estructuras básicas: secuencial y selección

8.3.1. ESTRUCTURAS DE SELECCIÓN ANIDADAS

Según lo expresado, las estructuras de decisión simple y doble permiten seleccionar entre
dos alternativas posibles. Sin embargo, la instrucción SI-ENTONCES puede ser utilizada
también en casos de selección de más de dos alternativas. Esto es posible anidando estas
instrucciones. Es decir, una estructura SI-ENTONCES puede contener a otra, y esta a su vez
a otra.
Una sentencia if es anidada cuando la sentencia de la rama verdadera o la rama falsa, es a
su vez una sentencia if.
Sintaxis:
If (condición1)
Sentencia1
Else if (condicion2)
Sentencia 2
………………
Else if (condición n)
Sentencia n
Else
Sentencia n

La representación gráfica y pseudocódigo es la siguiente:

Expresion 1 SI Accion 1

SI <expresion_1> ENTONCES
< accion_1 > NO
SINO
SI < expresión_2> ENTONCES
< accion_2 > Expresion 2 SI Accion 2
SINO
SI < expresión_3>
ENTONCES NO
< accion_3 >
SINO
.....
Expresion 3 SI Accion 3
FIN-SI
FIN-SI
FIN-SI NO

Como se puede observar, el anidamiento de instrucciones alternativas permite ir


descartando valores hasta llegar al bloque de instrucciones que se debe ejecutar.
A fin de que las estructuras anidadas sean más fáciles de leer, es práctica habitual aplicar
sangría al cuerpo de cada una.

Ejemplo: Incrementar contadores de números positivos, numero negativos o ceros

Informática – Año 2019 Página 8


Tema 8: Estructuras básicas: secuencial y selección

If (x>0)

Num_pos = num_pos +1;

Else

If (x<0)

Num_neg = num_neg +1;

Else

Num_ceros = num_ceros +1;

La sentencia if anidada tiene tres alternativas. Se incrementa una de las tres variables
(num_pos, num_neg y num_ceros) en 1, dependiendo de que x sea mayor que cero,
menor que cero o igual a cero, respectivamente. Las cajas muestran la estructura lógica de
la sentencia if anidada; la segunda sentencia if es la acción o tarea falta (a continuación
de else) de la primera sentencia if.

La ejecución de la sentencia if anidada se realiza como sigue: se comprueba la primera


condición (x>0); si es verdadera, num_pos se incrementa en 1 y se salta el resto de la
sentencia if. Si la primera condición es falta, se comprueba la segunda condición (x<0) ;
si es verdadera num_neg se incrementa en uno; en caso contrario se incrementa
num_ceros en uno. Es importante considerar que la segunda condición se comprueba
solo si la primera condición es falsa.

Ejemplo 8.4: Calcular el mayor de tres numero enteros

// Calcular el mayor de tres numero enteros


#include <stdio.h>
#include<stdlib.h>
main ()
{
int a,b,c, mayor;
printf ("\nCalcular el mayor de tres numero enteros");
printf ("\nIntroduzca tres números enteros: ");
scanf("%d %d %d", &a, &b, &c);

if ( a>b)
if (a>c) mayor = a;
else mayor = c;
else

if (b>c) mayor = b;
else mayor = c;

printf ("El mayor de %d \n", mayor);


system("pause");
return 0;
}

Informática – Año 2019 Página 9


Tema 8: Estructuras básicas: secuencial y selección

Ejecución: Introduzca tres números enteros 71 54 85

El mayor es 85

Al ejecutar el primer if, la condición (a>b) es verdadera, entonces se ejecuta el segundo


if. En el segundo if la condición (a>c) es falsa, en consecuencia el primer else
mayor=85 y se termina la sentencia if, a continuación se ejecutara la última línea y se
visualiza el mayor es 85.

Informática – Año 2019 Página 10

También podría gustarte