Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1
Departamento
de
Electrónica
Pontificia
Universidad
Javeriana
Taller
diseñado
por
Juan
C.
Giraldo
Capítulo:
Algoritmos
y
Pensamiento
Algorítmico
Tema:
Uso
de
construcciones
para
realizar
iteraciones
Habilidad
Personal:
Habilidad
para
hacer
transformación
de
bucles
Program
Outcomes:
CDIO:
3.2.
COMMUNICATION
3.2.5.
Graphical
Communication
4.5.
IMPLEMENTING
4.5.3.
Software
Implementing
Process
(Algorithmic
thinking)
ABET:
(g.)
Develop
an
ability
to
communicate
effectively
(k.)
An
ability
to
use
techniques,
skills,
and
modern
engineering
tools
necessary
for
engineering
practice
1.
DE
QUÉ
SE
TRATA:
Las
transformaciones
de
bucle
o
en
inglés
"loop
transformations"
es
un
concepto
simple.
En
pocas
palabras
trata
sobre
distintas
técnicas
para
RECORRER
BUCLES,
CICLOS
o
LOOPS,
sin
alterar
el
propósito
de
los
algoritmos.
2.
INTRODUCCIÓN
A
LAS
TRANSFORMACIONES
DE
BUCLE:
Para
el
desarrollo
de
este
taller
se
tomará
como
referencia
una
de
las
operaciones
de
matrices
más
simples
que
consiste
en
iniciar
todos
sus
valores
con
cero.
Por
tal
motivo
es
deseable
que
antes
de
iniciar
este
taller
desarrolle
el
diagrama
de
flujo
para
iniciar
con
ceros
una
matriz
cuadrada
que
puede
ser
de
16x16
o
32x32.
Suponga
que
usa
las
variables
“i”
y
“j”
para
recorrer
las
filas
y
columnas.
Por
simplicidad,
en
las
siguientes
figuras
se
usa
una
matriz
de
4x4,
en
donde
cada
recuadro
menor
corresponde
a
una
posición
de
la
matriz
que
debe
ser
iniciada
con
el
valor
0.0.
Figura
No.
1.
Técnica
de
Loop
Reversal
En
la
técnica
de
Loop
Unrolling,
dentro
del
cuerpo
del
bucle
se
hacen
varias
operaciones
por
lo
que
la
variable
contadora
debe
hacer
saltos
diferentes
del
tradicional
de
uno
en
uno.
En
la
Fig.
2.
se
aprecia
que
se
puede
eliminar
uno
de
los
dos
ciclos
anidados
para
recorrer
la
matriz.
Figura
No.
2.
Técnica
de
Loop
Unrolling
En
la
técnica
de
Loop
Interchange,
en
lugar
de
recorrer
por
filas
el
bucle
interior,
el
recorrido
se
hace
por
columnas.
En
lenguaje
C
los
elementos
contigüos
se
almacenan
por
filas
mientras
que
en
Fortran
por
columnas.
En
la
Fig.
3.
Se
muestra
un
recorrido
por
columnas
al
estilo
del
lenguaje
de
programación
Fortran.
DISPRO
3
Departamento
de
Electrónica
Pontificia
Universidad
Javeriana
Taller
diseñado
por
Juan
C.
Giraldo
Figura
No.
3.
Técnica
de
Loop
Interchange
A
la
técnica
Loop
Tiling
(en
donde
tile
traduce
loza
o
baldosa)
se
le
conoce
también
como
Loop
Blocking.
El
recorrido
en
esta
técnica
se
hace
en
bloques
de
valores
que
están
cercanos,
como
se
muestra
en
la
Fig.
4.
Para
comprender
mejor
loop
tiling,
suponga
que
ya
tiene
construido
un
algoritmo
para
iniciar
una
matriz
de
2x2
(recuadros
sombreados
con
rojo)
y
a
continuación
se
re-‐usa
este
algoritmo
pero
haciendo
un
recorrido
por
bloques.
Esta
técnica
requiere
incorporar
más
de
dos
ciclos
para
controlar
el
recorrido.
Figura
No.
4.
Técnica
de
Loop
Tiling
3.
INSTRUCCIONES:
Tras
esta
breve
introducción
a
algunas
de
las
técnicas
las
transformaciones
de
bucle,
estudie
con
detenimiento
los
enlaces
que
se
referencian
al
final
de
esta
guía.
Usando
la
plantilla
adjunta,
Usted
debe
elaborar
un
diagrama
de
flujo
para
cada
una
de
las
cuatro
técnicas
explicadas
inicialmente.
Luego
debe
seguir
las
instrucciones
para
aplicar
la
técnica
de
Loop
Fusion
y
de
Loop
Tiling
propuestos.
4.
ENTREGA
DEL
TALLER:
Los
diagramas
de
flujo
deben
entregarse
usando
el
formato
de
planchas
en
“power-‐
point”
suministrado
por
el
profesor
de
la
asignatura
en
formato
“.ppt”
o
“pptx”.
Debe
enviar
su
trabajo
al
correo
electrónico
que
su
profesor
indique
en
un
archivo
con
el
nombre
“username_loop_transformation”
en
letras
minúsculas,
siendo
“username”
el
nombre
de
usuario
de
su
propio
correo
electrónico.
El
envío
debe
realizarlo
antes
de
las
11:59
PM
del
día
especificado,
registrando
el
tiempo
de
dedicación
para
esta
actividad.
5.
MATERIAL
DE
REFERENCIA
PARA
ESTUDIO
PERSONAL:
https://en.wikipedia.org/wiki/Loop_optimization
https://en.wikipedia.org/wiki/Loop_fission
https://en.wikipedia.org/wiki/Loop_fusion
https://en.wikipedia.org/wiki/Loop_interchange
https://en.wikipedia.org/wiki/Loop_inversion
https://en.wikipedia.org/wiki/Loop-‐invariant_code_motion
https://en.wikipedia.org/wiki/Loop_tiling
https://en.wikipedia.org/wiki/Loop_unrolling
“loop_transformation_instructions.pdf”