0% encontró este documento útil (0 votos)
20 vistas

Python Tema2 Parte8 v3

Cargado por

Eduardo Culman
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
20 vistas

Python Tema2 Parte8 v3

Cargado por

Eduardo Culman
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 13

IBM SkillsBuild | Introducción a Python

Conceptos básicos de
programación
Estructuras de control: condicionales y bucles

1
IBM SkillsBuild | Introducción a Python

Índice

Introducción 3

Condicionales 4
Estructura condicional simple: IF 4
Estructura condicional doble: IF – ELSE 5
Estructura condicional múltiple: IF - ELSEIF – ELSE 6

Bucles 8
Estructura de repetición indexada: FOR 8

Estructura repetitiva condicional: WHILE 10

Ruptura de ciclos de repetición: BREAK y CONTINUE 10

Estructura de elección entre varios casos: SWITCH 12

2
IBM SkillsBuild | Introducción a Python

Introducción

Son parte fundamental de cualquier lenguaje.

Sin ellas, las instrucciones de un programa sólo


podrían ejecutarse en el orden en que están escritas
(orden secuencial).

Las estructuras de control permiten modificar este


orden.

Hay dos categorías de estructuras de control:

• Condicionales
• Bucles

3
IBM SkillsBuild | Introducción a Python

Condicionales Estructura condicional simple: IF


Este es el tipo más sencillo de estructura condicional.
Sirve para implementar acciones condicionales del
Permiten que se ejecuten conjuntos distintos de
tipo siguiente:
instrucciones, en función de que se verifique o no
determinada condición. Si se verifica una determinada condición,
ejecutar una serie de instrucciones y luego
seguir adelante.

Si la condición NO se cumple, NO se ejecutan


dichas instrucciones.


Condición Instrucciones

No

...

if condición

instrucciones a cumplir en caso afirmativo

...
En términos de un lenguaje de programación, que se
verifique o no una condición se traduce en que una Obsérvese que, en ambos casos (que se verifique o
(adecuada) expresión lógica tome el valor verdadero no la condición), los “caminos” bifurcados se unen
(TRUE) o tome el valor falso (FALSE). posteriormente en un punto, es decir, el flujo del
programa recupera su carácter secuencial, y se
En los casos más sencillos y habituales la condición
continúa ejecutando por la instrucción siguiente a la
suele ser una comparación entre dos datos, como por
estructura IF.
ejemplo: si a < b hacer una cosa y en caso contrario
hacer otra distinta. Como ejemplo de utilización de este tipo de
condicional, se considera el cálculo del valor en un
punto x de una función definida por partes, como por
ejemplo:

4
IBM SkillsBuild | Introducción a Python

A continuación, se muestra el pseudocódigo Como ejemplo de utilización de este tipo de


correspondiente. estructuras se plantea el problema de calcular las
raíces de una ecuación de segundo grado
Cálculo del valor de la función f(x) = 0 si x ≤ 0, f(x) =
x2 si x > 0. ax2 + bx + c = 0
Inicio
distinguiendo dos casos: que las raíces sean reales o
1- LEER x que sean complejas (no se contempla, de momento,
2- HACER f=0 3- Si x>0 HACER f=x2 distinguir entre una o dos raíces reales).
Fin Si
LEER
4- IMPRIMIR ’El valor de la función es: ’, f A,B,C

Fin CALCULAR
2
D=B-4AC
A2=2A

Estructura condicional doble: IF – ELSE CALCULAR CALCULAR


DD= D ¿D>0? DD= -D
Sí No
Este tipo de estructura permite implementar x1=(-B+DD)/A2
x2=(-B-DD)/A2
Re=-B/A2
Im=DD/A2
condicionales en los que hay dos acciones
alternativas: ESCRIBIR ESCRIBIR
x1,x2 Re, Im

• Si se verifica una determinada condición, ejecutar


un serie de instrucciones (bloque 1).
• Si no, esto es, si la condición NO se verifica, Fin

ejecutar otra serie de instrucciones (bloque 2).

En otras palabras, en este tipo de estructuras hay una Diagrama de flujo para determinar las raíces reales o
alternativa: se hace una cosa o se hace la otra. En complejas de la ecuación de segundo grado Ax2 + Bx
ambos casos, se sigue por la instrucción siguiente a + C = 0.
la estructura IF - ELSE. A continuación, se muestra el pseudocódigo
correspondiente.

...

Condición if
No

Bloque 1 Bloque 2

condición

bloque-1

else

bloque-2

...

5
IBM SkillsBuild | Introducción a Python

Cálculo de las raíces de la ecuación de segundo En cualquiera de los casos, el flujo del programa
grado Ax2 + Bx + C = 0, distinguiendo los casos de continúa por la instrucción siguiente a la estructura
raíces reales y complejas.
Inicio

1- LEER A,B y C Condición 1 Bloque 1


2- CALCULAR D=B2-4*A*C

No
3- CALCULAR AA=2*A
4- Si D≥0 √ Condición 2 Bloque 2

CALCULAR DD= D x1=(-B+DD)/AA x2=(-B-
No
DD)/AA
Bloque 3
IMPRIMIR ’La ecuación tiene raíces reales:’, x1,
x2
Si no √
CALCULAR DD= -D
...
Re=-B/AA
if condición-1
Im=DD/A2
bloque-1
IMPRIMIR ’La ecuación tiene raíces complejas
conjugadas:’
elseif condici´on-2
IMPRIMIR ’Parte real:’, Re
bloque-2
IMPRIMIR ’Parte imaginaria:’, Im Fin Si Fin
else bloque-3

Estructura condicional múltiple: IF - ...

ELSEIF – ELSE A continuación, se muestra el pseudocódigo


correspondiente.
En su forma más general, la estructura IF - ELSEIF -
ELSE permite implementar condicionales más Determinación del signo de un número: positivo,
complicados, en los que se “encadenan” condiciones negativo o nulo.
en la forma siguiente: Inicio

Si se verifica la condición 1, ejecutar las 1- LEER X


instrucciones del bloque 1. 2- Si X>0
IMPRIMIR ’El número tiene signo positivo’
Si no se verifica la condición 1, pero SÍ se
Si no, si X<0
verifica la condición 2 , ejecutar las
instrucciones del bloque 2. IMPRIMIR ’El número tiene signo negativo’

Si no, esto es, si no se ha verificado ninguna de Si no


las condiciones anteriores, ejecutar las
IMPRIMIR ’El número es nulo’ Fin
instrucciones del bloque 3.
La cantidad de casos que podemos agregar a este
tipo de condicionales es infinita.

6
IBM SkillsBuild | Introducción a Python

E incluso podemos hacer condicionales anidados


unos dentro de otros, con lo que la complejidad sube
exponencialmente.

Dados dos números reales, a y b, y el símbolo, S


(carácter), de un operador aritmético (+, -, *, /),
imprimir el resultado de la operación a S b
Inicio

LEER a

LEER b

LEER S

Si S=’+’

IMPRIMIR ’El resultado es =’, a+b

Si no, si S=’-’

IMPRIMIR ’El resultado es =’, a-b

Si no, si S=’*’

IMPRIMIR ’El resultado es =’, a*b

Si no, si b=0

Si a=0

IMPRIMIR ’El resultado es =’, NaN


(indeterminación)

Si no

IMPRIMIR ’El resultado es =’, Inf (infinito)


Fin Si

Si no

IMPRIMIR ’El resultado es =’, a/b

Fin Si Fin

7
IBM SkillsBuild | Introducción a Python

Bucles
En los bucles indeterminados no sabemos a ciencia
cierta cuántas veces se va a repetir un bucle, ya que
se estará repitiendo hasta que se cumpla una
condición que, a priori, no sabemos cuándo se
Permiten que se ejecute repetidamente un conjunto
cumplirá.
de instrucciones, bien un número pre-determinado
de veces, o bien hasta que se verifique una Por ejemplo, imprimir repetidamente en pantalla una
determinada condición. frase hasta que el usuario pulse una tecla para
detener el bucle.

A continuación, se describen las distintas estructuras


de control. Para cada una de ellas se describe el
diagrama de flujo y una sintaxis genérica que será
ligeramente diferente según el lenguaje que estemos
usando, pero básicamente en todos los lenguajes de
alto nivel es muy parecida.

Obsérvese que todas ellas tienen una única entrada y


una única salida.

Estructura de repetición indexada: FOR


Este tipo de estructura permite implementar la
repetición de un cierto conjunto de instrucciones un
número pre-determinado de veces.

Para ello se utiliza una variable de control del bucle,


llamada también índice, que va recorriendo un
Existen dos tipos de bucles según si se conoce o no
conjunto pre-fijado de valores en un orden
el número de repeticiones que va a hacer nuestro
determinado. Para cada valor del índice en dicho
bucle.
conjunto, se ejecuta una vez el mismo conjunto de
instrucciones.

DETERMINADOS INDETERMINADOS En el siguiente ejemplo, el bloque de instrucciones se


ejecuta una vez para cada valor del índice, que va
tomando sucesivamente el valor de cada
FOR WHILE DO WHILE
componente del vector V, de longitud N.

En los bucles determinados se conoce con certeza el


número de veces que se va a repetir, por ejemplo
podemos meter en un bucle una frase y que se nos
muestre en pantalla un número determinado de
veces.

8
IBM SkillsBuild | Introducción a Python

... for indice=V Dado un entero, n, calcular la suma de los n primeros


números impares.
instrucciones
Inicio
... LEER n

HACER suma=0
k = 1 Para i= 1, 3, 5, ..., 2*n-1 HACER suma=suma+i

Fin Para
k > N IMPRIMIR ’La suma vale : ’, suma
TRUE
FALSE Fin

indice=V(k) Algoritmo 5.10 Dado un número natural, n, imprimir


la lista de sus divisores, en orden decreciente.
Inicio LEER n
Instrucciones
IMPRIMIR ’ Lista de divisores del numero: ’, n

Para i=ParteEntera(n/2) hasta 2 (incremento -1)


k = k+1
Si resto(n/i)=0 IMPRIMIR i

Fin Si Fin

Para
El indice del bucle recorre los valores de un vector V
de longitud N. IMPRIMIR 1

Como ejemplo de utilización de la estructura FOR, Fin


véanse el siguiente pseudo-códigos para calcular la
suma de los n primeros números impares.

• El valor de la variable de control índice puede ser


utilizado o no dentro del conjunto de
instrucciones que forman parte del cuerpo del
FOR, pero no debe ser modificado.
• El conjunto de valores que debe recorrer el índice
puede ser vacío (N=0). En ese caso, el bloque de
instrucciones no se ejecuta ninguna vez.
• Las estructuras FOR e IF pueden “anidarse”, es
decir, incluir una dentro de la otra, con la
restricción (de sentido común) de que la interior
tiene que estar completamente contenida en uno
de los bloques de instrucciones de la otra.

9
IBM SkillsBuild | Introducción a Python

Estructura repetitiva
Imprimir de forma ascendente los 100 primeros
números naturales.

condicional: WHILE Inicio i=1

Mientras que i ≤ 100

Permite implementar la repetición de un mismo IMPRIMIR i


conjunto de instrucciones mientras que se verifique
HACER i=i+1
una determinada condición: el número de veces que
se repetirá el ciclo no está definido a priori. El Fin Mientras Fin
diagrama de flujo descriptivo de esta estructura se
muestra en la siguiente figura. Ruptura de ciclos de
repetición: BREAK y
CONTINUE
Condición
FALSE
En ocasiones es necesario interrumpir la ejecución de
TRUE un ciclo de repetición en algún punto interno del
bloque de instrucciones que se repiten.
Instrucciones
Lógicamente, ello dependerá de que se verifique o no
alguna condición.

La interrupción puede hacerse de dos formas:


...
1. Abandonando el ciclo de repetición
while expresión-lógica definitivamente.
2. Abandonando la iteración en curso, pero
instrucciones comenzando la siguiente.

end Las instrucciones para poner esto en práctica tienen


nombres diversos en los distintos lenguajes de
...
programación. En Javascript, la primera opción se
Su funcionamiento es evidente, a la vista del implementa con la instrucción BREAK y la segunda con
diagrama: la instrucción CONTINUE. Ambas pueden utilizarse
tanto para romper un ciclo FOR como un ciclo WHILE.
• Al comienzo de cada iteración se evalúa la
Cuando se utiliza la orden BREAK dentro de un ciclo
expresión-lógica.
FOR, el índice del bucle conserva, fuera del mismo, el
• Si el resultado es VERDADERO, se ejecuta el
último valor que tomó.
conjunto de instrucciones y se vuelve a iterar, es
decir, se repite el paso 1.
• Si el resultado es FALSO, se detiene la ejecución
del ciclo WHILE y el programa se sigue
ejecutando por la instrucción siguiente al END.

A continuación se representa es un ejemplo de


utilización de esta estructura.
10
IBM SkillsBuild | Introducción a Python

Véanse los correspondientes diagramas de flujo en


las siguientes figuras.

Condición
WHILE FALSE
Condición
TRUE WHILE FALSE
TRUE
Instrucciones-1
Instrucciones-1

TRUE
Condición
BREAK TRUE Condición
ruptura CONTINUE
ruptura
FALSE
FALSE

Instrucciones-2
Instrucciones-2

11
IBM SkillsBuild | Introducción a Python

Estructura de elección
entre varios casos: SWITCH

Este tipo de estructura permite decidir entre varios


caminos posibles, en función del valor que tome una
determinada instrucción.

No todos los lenguajes de programación disponen de


este estructura.

El diagrama de flujo correspondiente a una de estas


estructuras (con cuatro casos) se presenta en la
Figura 5.12.

switch expresión

case valor-1 instrucciones caso 1

case valor-2 instrucciones caso 2 ... case {valores...}

default instrucciones caso diferente


end

Valor
Expresión

Caso 1 Caso 2 Caso k otherwise


....

Instrucs. Instrucs. Instrucs. Instrucs.

caso 1 caso 2 caso k "otro caso"

12
IBM SkillsBuild | Introducción a Python

En cada uno de los casos, el valor correspondiente Dados dos números reales, a y b, y el símbolo, S
puede ser o bien un sólo valor, o bien un conjunto de (carácter), de un operador aritmético (+, -, *, /),
valores, en cuyo caso se indican entre llaves. La imprimir el resultado de la operación a S b
cláusula DEFAULT y su correspondiente conjunto de LEER a , b , S
instrucciones puede no estar presente.
Elegir caso S
El funcionamiento es el siguiente:
Caso ’+’
• Al comienzo se evalúa la expresión.
IMPRIMIR ’El resultado es =’, a+b
• Si expresión toma el valor (ó valores)
especificados junto a la primera cláusula CASE, se Caso ’-’

ejecuta el conjunto de instrucciones de este caso IMPRIMIR ’El resultado es =’, a-b
y después se abandona la estructura SWITCH,
Caso ’*’
continuando por la instrucción siguiente al END.
• Se repite el procedimiento anterior, de forma IMPRIMIR ’El resultado es =’, a*b

ordenada, para cada una de las cláusulas CASE Caso ’*’


que siguen.
IMPRIMIR ’El resultado es =’, a*b
• Si la cláusula DEFAULT está presente y la expresión
no ha tomado ninguno de los valores Caso ’/’ Si a6=0

anteriormente especificados, se ejecuta el IMPRIMIR ’El resultado es =’, a/b


conjunto de instrucciones correspondiente.
Si no, si b6=0
Obsérvese que se ejecuta, como máximo el conjunto
IMPRIMIR ’El resultado es =’, Inf (infinito)
de instrucciones de uno de los casos, es decir, una
vez que se ha verificado un caso y se ha ejecutado su Si no
conjunto de instrucciones, no se testea el resto de
IMPRIMIR ’El resultado es =’, NaN
casos, ya que se abandona la estructura.
(indeterminaci´on) Fin Si
Obviamente, si la cláusula DEFAULT no está presente,
puede ocurrir que no se dé ninguno de los casos. En otro caso

Ejemplo de utilización de la sentencia SWITCH. IMPRIMIR ’El operador no se reconoce’ Fin

Elegir caso

NOTA: Todas las estructuras de control (también


llamados modificadores del flujo de ejecución)
presentados en este tema son genéricos. La mayoría
de los lenguajes de programación disponen de ellas,
aunque no todos y su sintaxis difiere ligeramente de
uno a otro.

Más adelante en este curso veremos las que


corresponden a Javascript y a Python.

13

También podría gustarte