Professional Documents
Culture Documents
(y su forma en Python y en C)
Clase 5
Introduccin a la Computacin
Patricia Borensztejn
Estructuras de Control
En el modelo de ejecucin secuencial que
vimos, el procesador repite:
1)Fetch de instruccin
2)Decodifica y Ejecuta instruccin
3) Incrementa direccin de siguiente instruccin
Si nuestro programa quisiera calcular el 10
trmino de la serie de Fibonacci, debera
hacer lo siguiente:
#include <stdio.h> // sexto trmino
int fibo10() term=prev+cur;
{ prev=cur;
Uffffffff!!!!!!!!!!
int term, cur=1,prev=1; cur=term;
// tercer trmino
term=prev+cur; // septimo trmino
prev=cur; term=prev+cur;
cur=term; prev=cur;
cur=term;
// cuarto trmino
term=prev+cur; // octavo trmino
prev=cur; term=prev+cur;
cur=term; prev=cur;
cur=term;
// quinto trmino
term=prev+cur; // noveno trmino
prev=cur; term=prev+cur;
cur=term; prev=cur;
cur=term;
10 GOTO 40
20 PRINT "line number 20" Ejemplo de lo que se llam
30 GOTO 60
40 PRINT "line number 40"
programa spaguetti, en
50 GOTO 20 Basic.
60 END
Interface Hardware-Software
Cualquier sentencia estructurada se
implementa con un GOTO!
for (Bloque A; expresin booleana; Bloque B)
{ Cdigo interno }
i=0;
rama else: i=0
if (i) printf("rama then: i=%d\n",i);
rama then: i=8
else printf("rama else: i=%d\n",i);
rama then: i=1
i=8;
rama else: i=0
if (i) printf("rama then: i=%d\n",i);
j=8;
if (i==j) printf("rama then: i=%d\n",i==j);
if (i!=j)printf ("rama then: i=%d\n",i==j);
else printf("rama else: i=%d\n",i!=j);
}
Tipo Booleano en C
Es decir, podemos utilizar cualquier valor
entero como condicin.
Cuando C evala una expresin de tipo
condicin, el resultado es 0(false) o 1(true)
Podemos incluir el archivo : <stdbool.h>
donde esta definido el tipo bool y las dos
constantes true y false.
El tipo bool
#include <stdio.h> El tipo bool es un
#include <stdbool.h>
subconjunto de los
int main()
{
enteros y sus
bool i,j; valores se
i=true; almacenan .
if (i) printf("rama then: i=%d\n",i);
j=false; como los enteros
if (j)printf ("rama then: j=%d\n",j);
else printf("rama else: j=%d\n",j); (32 bits)
}
El tipo bool en Python
Existe el tipo bool, sus valores son True y False
Igual que en C, el tipo bool es un subconjunto de los
enteros
>>> a=True
>>> b=False
>>> a+b
>>>c=True 1
>>> print a
>>>type(c) True
<type bool'> >>> print b
False
>>> print a+b+a+b
2
>>> print a+a
2
>>> print (a+a+a+a+a+a+a)*2
14
Estructuras de control en los lenguajes
Sentencias Condicionales:
if-then-else
Select-case
Sentencias Repetitivas:
While
Repeat
For
Condicionales en C
Y se pueden anidar:
Condicionales en C
Bucle while
Bucle do-while
Bucle for
Bucle while (C)
r=r*x
Bucle do-while (C)
No existe
equivalente en
Python
La diferencia con
el while es que en
este caso se
ejecuta al menos
una vez el cuerpo
del bucle porque
la condicin se
evala al final.
Bucle for (C)
Es equivalente a:
Sentencias para alterar el flujo
iterativo (C)
Break:
Aborta la ejecucin del bucle
Continue
Sale de la iteracin actual, pero no aborta la
ejecucin del bucle
Condicionales en Python
Algunas formas de los condicionales. Python
no tiene switch-case
Repetitivas: while
Repetitivas: For in
Las listas son secuencias o series de valores y se
representan mediante corchetes.
Los elementos de la lista pueden ser enteros,
cadenas, reales, etc
For ..in (Python)
Podemos utilizar la funcin range() que
devuelve una lista.
Funcin range()
La funcin range() tiene 1,2, o 3 argumentos
range (4): [0,1,2,3]
range(3,7): [3,4,5,6]
range(4,8,2):[4,6]
Mas ejemplos:
range(4,1,-1):[4,3,2]
Algunas cosas generales
A los dos lenguajes
Cualquier estructura de control puede
anidarse dentro de cualquier otra
Ojo con la variable de iteracin del for (en C y
en Python): no se le debe asignar valores
dentro del cuerpo del bucle.
Euler 4
A palindromic number reads the same both
ways. The largest palindrome made from the
product of two 2-digit numbers is 9009 = 91
99.
Find the largest palindrome made from the
product of two 3-digit numbers.