PDF de programación - TEMA 4: Programación estructurada

Imágen de pdf TEMA 4: Programación estructurada

TEMA 4: Programación estructuradagráfica de visualizaciones

Publicado el 18 de Marzo del 2019
1.033 visualizaciones desde el 18 de Marzo del 2019
70,2 KB
14 paginas
Creado hace 19a (11/01/2005)
TEMA 4: Programación estructurada

TEMA 4: Programación estructurada

4.1.-Introducción. Teorema de la programación estructurada

El principio fundamental de la programación estructurada es que en todo momento el
programador pueda mantener el programa “dentro” de la cabeza. Esto se consigue con:

a) un diseño descendente del programa,
b) unas estructuras de control limitadas y
c) un ámbito limitado de las estructuras de datos del programa.

Hace más fácil la escritura y verificación de programas. Se adapta perfectamente al
diseño descendente.

Para realizar un programa estructurado existen tres tipos básicos de estructuras de
control:

• Secuencial: Ejecuta una sentencia detrás de otra.

• Condicional: Se evalúa una expresión y, dependiendo del resultado, se decide la

siguiente sentencia a ejecutar.

• Iterativa: Repetimos un bloque de sentencias hasta que sea verdadera una

determinada condición.

Existe un teorema debido a [C.Böhm, G.Jacopini, Comm. ACM vol.9, nº5, 366-371,
1966] (Teorema Fundamental de la programación estructurada) que establece lo
siguiente:

Fernado Barber y Ricardo Ferrís

39

“Todo programa propio se puede escribir utilizando únicamente las estructuras de
control secuencial, condicional e iterativa”

TEMA 4: Programación estructurada

Un programa propio es aquel que:

• Tiene un único punto de entrada y un único punto de salida.

• Existen caminos desde la entrada hasta la salida que pasan por todas las partes del

programa.

• Todas las instrucciones son ejecutables y no existen bucles sin fin.

Este teorema implica que la utilización de la sentencia GOTO es totalmente innecesaria,
lo que permite eliminar esta sentencia. Un programa escrito con GOTO es más difícil de
entender que un programa escrito con las estructuras mencionadas.

4.2 Estructura secuencial

Ejecución de sentencias una detrás de la otra. En C++, toda una estructura secuencial se
agrupa mediante los símbolos { y }.

Ejemplo:

Leer (a, b)

s <- a + b

Escribir (s)

{


}

cin >> a;
cin >> b;
s = a + b;
cout << s;

Todo el bloque se considera una sola sentencia. Después de las llaves no se pone punto
y coma.

Fernado Barber y Ricardo Ferrís

40

4.3 Estructura condicional

4.3.1.-Alternativa simple:

Expresión

Verdadero

Falso

sentencia

Ejemplo:

Si

a != 0

No

x <- b / a

Escribir (x)

TEMA 4: Programación estructurada

Pseudocódigo:

si <Expresión Lógica> entonces

<sentencia>

fin si

si (a != 0) entonces

x <- b / a
escribir x

fin_si

En C++ la sintaxis de la alternativa simple sería:

if (expresión lógica)

sentencia

Ejemplo:

if (a != 0)
{

x = b / a;
cout << x;

}

Fernado Barber y Ricardo Ferrís

41

4.3.2.-Alternativa doble:

Expresión

Verdadero

Falso

sentencia

sentencia

sino

TEMA 4: Programación estructurada

Pseudocódigo:

si <Expresión Lógica> entonces

<sentencia>

<sentencia>

fin_si

si (a != 0) entonces

x <- b/a
escribir x

sino
fin_si

escribir "Error: División por cero"

Ejemplo:

SI

a != 0
NO

Escribir "Error:
Div. por cero"

x <- b / a

Escribir (x)

En C++ la sintaxis sería:

if (expresión lógica)

else

sentencia1

sentencia2

Ejemplo:

if (a != 0)
{
x = b/a;
cout << x;

}
else

cout << "Error: División por cero";

Fernado Barber y Ricardo Ferrís

42

TEMA 4: Programación estructurada

4.3.3.-Sentencias if anidadas:

Cuando la sentencia dentro del if es otra sentencia if.

Ejemplo:

si (a > b)
si (a > c)
max = a;
sino
max = c;
fin_si
sino
si (b > c)
max = b;
sino
max = c;
fin_si
fin_si

En C++:

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

La parte else siempre se asocia al if más cercano posible.

Ejemplo:

if (a == 1)

if(b == 1)

else

// Con que if esta asociado este else ??

cout << "1 1";

cout << " ? ";

4.3.4.-Alternativa múltiple:

Valor1

Expresión

Valor2

Valorn

Valor...

Sentencia1

Sentencia2

...

Sentencian

Pseudocódigo:

Fernado Barber y Ricardo Ferrís

43

TEMA 4: Programación estructurada

según <Expresión> hacer

<valor1>: <sentencia1>
<valor2>: <sentencia2>
...
<valorn>: <sentencian>

fin_segun

La expresión ya no es lógica, sino de tipo ordinal.

Una forma de implementar esta estructura es mediante sentencias si anidadas.

si (Expresion = Valor1) entonces

Sentencia1

sino

si (Expresion = Valor2) entonces

Sentencia2

sino

si (Expresion = Valor...) entonces

...

sino

...
si (Expresion = Valorn) entonces

Sentencian

fin_si

...
fin_si

fin_si

fin_si

Ejemplo:

si (x % 4 + 1 == 1) entonces
sino

sentencia1
si (x % 4 + 1 == 2) entonces
sino

sentencia2
si (x % 4 + 1 == 3) entonces
sino
fin_si

sentencia3

sentencia4

fin_si

fin_si

Fernado Barber y Ricardo Ferrís

44

TEMA 4: Programación estructurada

según (x % 4 + 1) hacer

1: sentencia1
2: sentencia2
3: sentencia3
4: sentencia4

fin según

Mediante la estructura según:

x % 4 + 1

Sentencia1

Sentencia1

Sentencia1

Sentencia1

La sintaxis en C++ será:

switch (Expresión ordinal)
{
case valor1:
sentencias
break;
case valor2:
sentencias
break;
...
default:
sentencias
}

// Opcional

Ejemplo:

switch (x)
{
case 1:
cout << "Uno";
break;
case 2:
cout << "Dos";
break;
case 3:
cout << "Tres";
break;
default:
cout << "> 3";
}

Uno de los ejemplos más claros de uso del switch es en menús:

Fernado Barber y Ricardo Ferrís

45

TEMA 4: Programación estructurada

cin >> opcion;
switch (opcion)
{
case 1:
IntroducirNombre();
break;
case 2:
Listar();
break;
case 3:
Salir();
break;
default:
cout << "Opcion no valida";
}

La instrucción switch también admite poner varias opciones juntas.

...

switch (Expresión ordinal)
{
case valor1:
case valor2:
sentencias
break;
case valorn:
sentencias
break;
...
default:
sentencias
}

// Opcional

Importante reslaltar la utilización de la palabra reservada ‘break’ como señal de final de
las sentencias que van con cada opción o conjunto de opciones.

4.4. Estructura iterativa (o bucle)

Consiste en repetir una sentencia. También se denominan bucles.

Siempre ha de existir una condición de parada, es decir, hay que garantizar que para
cualquier caso, el bucle parará.

Fernado Barber y Ricardo Ferrís

46

4.4.1.-Mientras

TEMA 4: Programación estructurada

Pseudocódigo

mientras <expresión lógica> hacer

<sentencia>

fin_mientras

Leer n
num ← 1
mientras num <= n hacer

Escribir num
num ← num + 1

fin_mientras

Expresion

NO

SI

Sentencia

Ejemplo:

Escribir los números enteros de 1 a N

Leer n

num <- 1

num <- num + 1

Escribir num

num <= n

NO

SI

La sentencia puede no ejecutarse nunca si la condición no se cumple.

Si la condición está mal hecha, el bucle puede no acabar nunca. Es lo que se denomina
un bucle infinito

En C++ la sintaxis sería:

while (expresión lógica)
sentencia

Ejemplo:

cin >> n;

Fernado Barber y Ricardo Ferrís

47

TEMA 4: Programación estructurada

num = 1;
while (num <= n)
{
cout << num << endl;
num++;
}

Con el bucle mientras se puede construir cualquier estructura iterativa. De todas
maneras, por comodidad existen otras estructuras iterativas.
4.4.2.-Repetir (o hacer)

Pseudocódigo

repetir

<sentencia>

mientras <expresión lógica>

Sentencia

Expresion

NO

SI

Repite la sentencia mientras la expresión sea cierta.
La sentencia siempre se ejecuta como mínimo una vez.

Ejemplo:

Leer n
num <- 1
repetir

Escribir num
num <- num + 1
mientras (num <= n)

Leer n

num <- 1

Escribir num

num <- num + 1

num <= n

NO

SI

La sintaxis en C++:

do
sentencia

Fernado Barber y Ricardo Ferrís

48

TEMA 4: Programación estructurada

while (expresión lógica);

Ejemplo:

cin >> n;
num = 1;
do
{
cout << num << endl;
num++;
}
while (num <= n)

Se utiliza sobre todo en preguntas o menús, puesto que siempre se han de ejecutar al
menos una vez.

do
{
cout << "Introduce un entero";
cin >> i;
cout << "¿Es correcto (s/n)?";
cin >> c;
}
while (c != 's');

4.4.3.-Para (o desde)

Es como una estructura mientras, pero especialmente preparada para incorporar un
contador.

Pseudocódigo

para <variable> <- <valor inicial> hasta <valor final> hacer
<sentencia>
fin_para

La variable del bucle se denomina variable de control.

Fernado Barber y Ricardo Ferrís

49

TEMA 4: Programación estructurada

Ejemplo:
leer n
para num ← 1 hasta n hacer

escribir n

fin_para

Se utiliza cuando se conocen el número de veces que se van a repetir las sentencias.

La variable de control NO se puede modificar dentro del bucle.

Cuando el bucle acaba, el valor de la variable de control es indeterminado.

La sintaxis en C++ es:

for(inicialización; condición; incremento)
sentencia

En C++, la instrucción for es como una instrucción while, con la salvedad de que
tiene huecos especiales para poner la inicialización de la variable de control, la
condición de repetición y el incremento de la variable de control.

El incremento se realiza siempre después de ejecutar la sentencia.
Al igual que en la instrucción while, la sentencia puede no ejecutarse nunca si la
condición no se cumple.

Ejemplo:

cin >> n;
for(num = 1; num <= n; num ++)
cout << num << endl;

Se utiliza también para realizar sumatorios o productorios con la ayuda de una variable
acumuladora:

Ejemplo:

// inicialización del acumulador
suma = 0;
for(i = 1; i <= n; i++)
suma = suma + i;
cout << suma;

// o suma += i;

Fernado Barber y Ricardo Ferrís

50

TEMA 4: Programación estructurada

factorial = 1;
for(i = 1; i <= n; i++)
factorial = factorial * i;
cout << factorial;

4.4.4. Tipos de control de bucles

Existen tres formas típicas de controlar cuando se ejecuta un bucle:

a) Bucle
  • Links de descarga
http://lwp-l.com/pdf15538

Comentarios de: TEMA 4: Programación estructurada (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad