Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Estructuras de control en programación: selección y iteración, Apuntes de Ingeniería Infórmatica

Este documento, perteneciente al departamento de lenguajes y ciencias de la computación de la e.t.s. De ingeniería informática, forma parte del tema v de elementos de programación y aborda los conceptos de estructuras de control, con énfasis en las estructuras de selección (como expresiones booleanas, variables booleanas y operadores booleanos) y las estructuras de iteración (como bucles y algoritmos de repetición). También se presentan ejemplos y ejercicios para ilustrar su uso.

Tipo: Apuntes

Antes del 2010

Subido el 14/10/2007

josemanuelk6
josemanuelk6 🇪🇸

4.2

(56)

58 documentos

1 / 12

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
UNIVERSIDAD DE MALAGA
DPTO. DE LENGUAJES Y C. DE LA COMPUT ACION
E.T.S. DE INGENIERIA INFORMAT ICA
INGENIERIA INFORMATICA
ELEMENTOS DE PROGRAMACIÓN
(CURSO 2004-2005)
T
TE
EM
MA
A
V
V
ESTRUCTURAS DE CONTROL
V. 1. Estructuras de selección.
V.1.1. Condiciones y expresiones booleanas.
V.1.2. Sentencias de selección.
V.1.3. Anidamientos.
V. 2. Estructuras de iteración.
V.2.1. Diseño de bucles. Concepto de invariante.
V.2.2. Bucles anidados.
Bibliografía: [DALE89a], [JOYA03]
E.T.S. de Ingeniería Informática (Ing. Informática) Dpto de Lenguajes y C. de la Computación
Elementos de Programación Tema V. Estructuras de control 1
V.1.- ESTRUCTURAS DE SELECCION.
- Ejecución de programas.
orden físico <--------> orden lógico
- Para alterar el orden físico necesitamos:
a) Posibilidad de realizar preguntas sobre lo sucedido
anteriormente.
b) Herramienta capaz de desviar el flujo de control
dependiendo de la respuesta a esas preguntas.
- Para a) -------> expresiones booleanas.
- Para b) -------> sentencias de selección.
V.1.1.- Condiciones y expresiones booleanas.
- Una expresión booleana es una afirmación que una vez evaluada
puede ser verdadera o falsa (TRUE o FALSE).
expr_booleana ::= TRUE | FALSE |
variable_booleana |
expresión oper_relacional expresión |
expr_booleana oper_bool_bin expr_booleana |
oper_bool_una expr_booleana |
“(“expr_booleana”)”
oper_relacional ::= = | | | | < | >
oper_bool_una ::= ¬
oper_bool_bin ::= |
pf3
pf4
pf5
pf8
pf9
pfa

Vista previa parcial del texto

¡Descarga Estructuras de control en programación: selección y iteración y más Apuntes en PDF de Ingeniería Infórmatica solo en Docsity!

UNIVERSIDAD DE MALAGA

DPTO. DE LENGUAJES Y C. DE LA COMPUTACION

E.T.S. DE INGENIERIA INFORMATICA

INGENIERIA INFORMATICA

ELEMENTOS DE PROGRAMACI”N

(CURSO 2004-2005)

TTE

EM

MA

A V

V

ESTRUCTURAS DE CONTROL

V. 1. Estructuras de selección.

V.1.1. Condiciones y expresiones booleanas.V.1.2. Sentencias de selección.V.1.3. Anidamientos.

V. 2. Estructuras de iteración.

V.2.1. Diseño de bucles. Concepto de invariante.V.2.2. Bucles anidados.

Bibliografía: [DALE89a], [JOYA03]

E.T.S. de Ingeniería Informática (Ing. Informática)

Dpto de Lenguajes y C. de la Computación

Elementos de Programación

Tema V. Estructuras de control

V.1.- ESTRUCTURAS DE SELECCION.

  • Ejecución de programas.

orden físico <--------> orden lógico

  • Para alterar el orden físico necesitamos:

a)

Posibilidad

de

realizar

preguntas

sobre

lo

sucedido

anteriormente.b)

Herramienta

capaz

de

desviar

el

flujo

de

control

dependiendo de la respuesta a esas preguntas.

  • Para a) -------> expresiones booleanas.- Para b) -------> sentencias de selección.

V.1.1.- Condiciones y expresiones booleanas.

  • Una expresión booleana es una afirmación que una vez evaluada

puede ser verdadera o falsa (TRUE o FALSE).expr_booleana ::=

TRUE | FALSE |variable_booleana |expresión oper_relacional expresión |expr_booleana oper_bool_bin expr_booleana |oper_bool_una expr_booleana |“(“expr_booleana”)”

oper_relacional ::=

oper_bool_una ::=

oper_bool_bin ::=

E.T.S. de Ingeniería Informática (Ing. Informática)

Dpto de Lenguajes y C. de la Computación

Elementos de Programación

Tema V. Estructuras de control

2

Variables booleanas.

-^

En nuestro pseudolenguaje :

variable :

B

-^

Sólo puede contener TRUE o FALSE.

-^

Sus

valores

generalmente

no

pueden

ser

leidos

desde

dispositivos de entrada ni escritos en dispositivos de salida.

-^

Se les da un valor mediante la asignación ("

Ejemplo:

v :

B

v

TRUE

v

FALSE

v

expr. booleana

-^

En un programa, en cualquier momento, se puede realizar unapregunta escribiendo simplemente v. Siendo v : B.

Operadores relacionales.

  • Usaremos:

,^

,^

  • Comparan 2 objetos del mismo tipo.- Ejemplos:

n, m, x : Z3 < 8n

n * m

x + 18

  • Si v : B, ¿podemos realizar la asignación v

n

E.T.S. de Ingeniería Informática (Ing. Informática)

Dpto de Lenguajes y C. de la Computación

Elementos de Programación

Tema V. Estructuras de control

3

Operadores booleanos.

  • Son :

,^

,^

  • Actúan sólo sobre expresiones booleanas => son distintos de los

operadores relacionales.

-^

--> conjunción lógica.

-^

--> disyunción lógica.

-^

--> negación lógica.

  • Tabla de verdad: Expr. 1

Expr. 2

Expr. 1

TRUE

TRUE

TRUE

TRUE

FALSE

TRUE

FALSE

FALSE

TRUE

FALSE

FALSE

TRUE

FALSE

TRUE

TRUE

FALSE

FALSE

FALSE

FALSE

TRUE

  • Ejemplos:

v, w : Bx, y, z : Zv

w v

TRUE

(x = 3)

(z <>4)

(((x + z) - 4) <> 4)

w

(v

(x

y))

La

mayoría

de

los

lenguajes

de

programación

evaluan

las

expresiones booleanas “

en cortocircuito

E.T.S. de Ingeniería Informática (Ing. Informática)

Dpto de Lenguajes y C. de la Computación

Elementos de Programación

Tema V. Estructuras de control

6

V.1.2.- Sentencias de selecciÛn. - Es la herramienta que va a posibilitar alterar el flujo de control de un

programa dependiendo de la evaluación de una expresión booleana.

  • En nuestro pseudolenguaje tenemos dos sentencias de selección:

Sentencia de selección SI:

SI expr_booleana ENTONCES

sentencias

SINOSI expr_booleana ENTONCES

Sentencias

SINO

Sentencias

FINSI

Exp. Bool.

TRUE

FALSE

Sentencias

Exp. Bool.

TRUE

FALSE

Sentencias

Exp. Bool.

TRUE

Sentencias

Exp. Bool.

TRUE

Sentencias

FALSE

Sentencias

[

]

E.T.S. de Ingeniería Informática (Ing. Informática)

Dpto de Lenguajes y C. de la Computación

Elementos de Programación

Tema V. Estructuras de control

E xp. B ool.

T R U E

F A L S E

S entencias

E xp. B ool.

T R U E

F A L S E

S entencias

E xp. B ool.

T R U E

F A L S E

S entencias

E xp. B ool.

T R U E

F A L S E

S entencias

E xp. B ool.

T R U E

F A L S E

S entencias

E xp. B ool.

T R U E

F A L S E

S entencias

E xp. B ool.

T R U E

F A L S E

S entencias

E xp. B ool.

T R U E

F A L S E

S entencias

S entencias

E.T.S. de Ingeniería Informática (Ing. Informática)

Dpto de Lenguajes y C. de la Computación

Elementos de Programación

Tema V. Estructuras de control

8

Sentencia de selección CASO:

CASO expresión SEA

valores1:

Sentencias

valores2:

Sentencias

valoresn:

Sentencias

OTRO CASO:

Sentencias

FINCASO

Expresión.

Sentencias

Sentencias

Sentencias

Sentencias

valores

valores

valoresn

OTRO CASO

[

]

E.T.S. de Ingeniería Informática (Ing. Informática)

Dpto de Lenguajes y C. de la Computación

Elementos de Programación

Tema V. Estructuras de control

V.1.3.- Anidamientos. - No hay restricciones sobre las sentencias que pueden aparecer en las

distintas ramas de esas sentencias de selección.

  • Puede, por tanto, existir una sentencia de selección dentro de otra =>

anidamiento.

  • Debe evitarse si el código resultante es complicado de leer.- Legibilidad ---> un objetivo básico en programación.

Ejemplo:

cuando coste < 100

--> incrementar en uno el

número de artículos a pedir

cuando coste

100 y < 200

--> incrementar en dos en

número de artículos a pedir

cuando coste

--> incrementar en tres el

número de artículos a pedir

Utilizando sentencias de selección no anidadas:

SI

coste

< 100

ENTONCES

articulos

articulos

  • 1

FINSI SI

(coste

(coste < 200)

ENTONCES

articulos

articulos

  • 2

FINSI SI

coste

200

ENTONCES

articulos

articulos

  • 3

FINSI

E.T.S. de Ingeniería Informática (Ing. Informática)

Dpto de Lenguajes y C. de la Computación

Elementos de Programación

Tema V. Estructuras de control

12

  • En base a esta distinción con respecto al número de repeticiones,

tenemos dos tipos de bucles:

  1. Estructuras repetitivas con la característica b).Esquema REPETIR

REPETIR

sentencias

HASTA QUE cond de control

Sentencias Cond. Cont. TRUE

FALSE

La condición de control es una expresión booleana que actúa comocondición para la salida del bucle.Esquema MIENTRAS.

MIENTRAS cond de control HACER

sentencias

FINMIENTRAS

TRUE Sentencias

FALSE

Cond. Cont.

La condición de control es una expresión booleana que actúa comocondición para la salida del bucle.

E.T.S. de Ingeniería Informática (Ing. Informática)

Dpto de Lenguajes y C. de la Computación

Elementos de Programación

Tema V. Estructuras de control

  • El esquema REPETIR no es suficiente. Ejemplo

: un algoritmo para realizar la división entera de dos números

naturales mediante sumas y restas.

Primer nivel de refinamiento:

Algoritmo

DivisionEntera

Inicio

Leer dividendo y divisor

Utilizar restas sucesivas para calcular el cociente y el resto.

Escribir el resultado (cociente y resto)

Fin

Segundo nivel de refinamiento (definitivo):

// Leer los

operandos asegurandose que son

validos

PROC

LeerOperandos(

dividendo,

divisor:

N

)

Inicio

leer(dividendo) REPETIR

leer(divisor)

HASTA

QUE

(divisor >

Fin /*

  • Subalgoritmo Dividir. Usa

un proceso de

restas

  • sucesivas

para

calcular cociente

y resto

*/ PROC

Dividir(

dividendo,

divisor:

N;

cociente,

resto:

N

)

Inicio

resto

dividendo

cociente

0

REPETIR

resto

resto -

divisor

INC

(cociente)

HASTA QUE

resto < divisor

Fin

E.T.S. de Ingeniería Informática (Ing. Informática)

Dpto de Lenguajes y C. de la Computación

Elementos de Programación

Tema V. Estructuras de control

14

/*

  • Algoritmo DivisionEntera.

Realiza

la division

  • entera de

dos numeros

naturales leidos

por teclado

*/ Algoritmo

DivisionEntera

Variables

dividendo, divisor,

cociente, resto:

N

Inicio

LeerOperandos(dividendo,divisor)Dividir(dividendo, divisor, cociente,

resto)

escribir(cociente,resto)

Fin

  • No contempla la posibilidad de que dividendo sea menor que divisor

inicialmente.

  • El esquema MIENTRAS tiene la condición de control al principio del

bucle, antes del conjunto de sentencias que lo componen.

  • Si

en

el

ejemplo

anterior

utilizamos

el

esquema

MIENTRAS

solucionamos el problema:

PROC

Dividir(

dividendo, divisor:

N;

cociente, resto:

N

)

Inicio

resto

dividendo

cociente

0

MIENTRAS

resto

divisor

HACER

resto

resto - divisor

INC

(cociente)

FINMIENTRAS

Fin

E.T.S. de Ingeniería Informática (Ing. Informática)

Dpto de Lenguajes y C. de la Computación

Elementos de Programación

Tema V. Estructuras de control

15

  1. Estructuras

repetitivas

o

de

iteración

con

un

número

fijo

de

iteraciones.Esquema PARA.

-^

Los dos esquemas anteriores se caracterizan porque no seconoce de antemano el número de veces que se van a repetir lassentencias que contienen.

-^

En el esquema PARA sí se conoce de antemano.

PARA vc

vi HASTA vf (PASO p) HACER

sentencias

FINPARA

donde: vc

es la variable de control del bucle. Su tipo debe ser

ordinal

vi

es el valor inicial que toma la variable de control. vf

es el valor final que puede tomar la variable de control. p es el entero (positivo o netativo) que se le va sumando a lavariable de control en cada iteración del bucle. Si se omite setoma por defecto 1.

-^

En el cuerpo del bucle no se puede modificar ninguno de loselementos anteriores (

vc

, vi

, vf

, p

-^

Al salir del bucle,

vc

tiene un valor indefinido.

E.T.S. de Ingeniería Informática (Ing. Informática)

Dpto de Lenguajes y C. de la Computación

Elementos de Programación

Tema V. Estructuras de control

18

V.2.1.- DiseÒo de bucles. Concepto de invariante de un bucle. - El

invariante

de un bucle establece su comportamiento. Se expresa

mediante un conjunto de condiciones que se deben cumplir antes deentrar por primera vez en el bucle, que se mantienen después de cadaiteración y que por tanto se siguen cumpliendo cuando éste acaba.

  • El diseño de un bucle puede simplificarse estableciendo antes su

invariante.

  • No confundir el invariante con la condición de control de un bucle.- Ejemplo: Cálculo del factorial de un número natural n leido por

teclado. Primer nivel de refinamiento:

Algoritmo

EscribirFactorial

Inicio

Leer número n.

Si n es cero el resultado será uno. Si no, generar y multiplicaracumulativamente todos los números naturales comprendidosentre el uno y el número leido.

Escribir el resultado.

Fin

E.T.S. de Ingeniería Informática (Ing. Informática)

Dpto de Lenguajes y C. de la Computación

Elementos de Programación

Tema V. Estructuras de control

En la segunda acción aparece un proceso iterativo cuyo invariante podríaser:

  1. n
  1. Una variable contador almacenará los distintos números naturales

generados sucesivamente.

  1. Una variable fact (fact
  1. contendrá el producto acumulativo de

todos los números naturales comprendidos entre uno y el valor decontador.

contador

fact =

Π

i i=

  1. De la expresión anterior deducimos que contador debe tener

como valor final n para que fact contenga el factorial de n. Porotro lado, como n puede ser uno, el valor inicial de contadordebe ser como máximo 1. Y como mínimo debe ser también unopuesto que fact

  • El bucle quedaría de la siguiente forma:

fact

1

contador

1

MIENTRAS

(contador < num)

HACER

contador

contador + 1

fact

fact

  • contador

FINMIENTRAS

E.T.S. de Ingeniería Informática (Ing. Informática)

Dpto de Lenguajes y C. de la Computación

Elementos de Programación

Tema V. Estructuras de control

20

Segundo y definitivo nivel de refinamiento

Algoritmo

EscribirFactorial

PROC

Factorial(

num:

N ;

fact:

N

)

Variables

contador:

N

Inicio

SI

num = 0

ENTONCES

fact

1

SINO

fact

1

contador

1

MIENTRAS

(contador

< num)

HACER

contador

contador

  • 1

fact

fact *

contador

FINMIENTRAS

FINSI

Fin

Variables

num, fact:

N

Inicio

escribir("Introduzca

el numero n:")

leer(num)Factorial(num,

fact)

escribir("El factorial es:",fact)

Fin

E.T.S. de Ingeniería Informática (Ing. Informática)

Dpto de Lenguajes y C. de la Computación

Elementos de Programación

Tema V. Estructuras de control

21

  • Para el diseño correcto de un bucle se deben considerar los siguientes

aspectos:

  • Diseño del flujo de control, determinando:

a) Condición de terminación del bucle.b) La forma de inicializar y actualizar esa condición.

  • Diseño del procesamiento interior del bucle, determinando:

a) El proceso que se repiteb) La forma de iniciarlo y actualizarlo.

V.2.2.- Bucles anidados.

  • Al

diseñar

una

estructura

iterativa

anidada

debemos

empezar

diseñando la más externa y terminar con las más internas.

  • El comienzo y final de un bucle anidado deben estar dentro del

mismo bucle que lo anida.

øQuÈ es ProgramaciÛn Estructurada? Un programa estructurado es esencialmente aquel que se puede entenderfácilmente, y la abstracción es la herramienta más útil para llevar a cabodicho cometido.La

abstracción

se

basa

en

la

identificación

de

los

elementos

a

un

determinado

nivel,

ignorando

los

detalles

especificados

en

niveles

inferiores.Sólo podremos emplear la abstracción en el análisis del software siutilizamos las estructuras de control de una forma disciplinada.