PDF de programación - Arrays: Vectores y Matrices

Imágen de pdf Arrays: Vectores y Matrices

Arrays: Vectores y Matricesgráfica de visualizaciones

Publicado el 17 de Agosto del 2019
1.503 visualizaciones desde el 17 de Agosto del 2019
29,6 MB
34 paginas
Creado hace 6a (01/01/2018)
Evaluación

— Primer cuatrimestre (40% de la nota final)

— FECHAS EXÁMENES PARCIALES:

— 18-OCTUBRE-2018
— 13-DICIEMBRE-2018

HORARIO DE CLASE – AULA ¿?
HORARIO DE CLASE – AULA ¿?

— ES OBLIGATORIO APROBAR EL PRIMER CUATRIMESTRE PARA

CONTINUAR CON LA EVALUACIÓN CONTINUA.

Evaluación

Teoría

Presentaciones 1

Presentaciones 2

6Septiembre Introducción
13Septiembre Datos y Operadores
20Septiembre Control de flujo I
27Septiembre Control de flujo II
4Octubre
11Octubre
18Octubre
25Octubre
8Noviembre Formato lectura escritura
15Noviembre Programación modular I
22Noviembre Programación modular II HISTORIA LENG
29Noviembre Tipos derivados
13Diciembre

Arrays I
Arrays II
EXAMEN PARCIAL
Intrínsecas

EXAMEN PARCIAL

CPU

DISCO DURO
FPGA
CLUSTER

RAM

GPU
XEON PHI
RASPBERRY PI
FUTURO LENG

20Diciembre

Programación avanzada

SISTEMAS OPERATIVOS LEY DE MOORE

FIN DE ELECCIÓN DE PRESENTACIÓN 07/10/18

• Tipos de datos: Intrínsecos

• Numéricos: (integer, real, complex)
• Lógicos: (logical)
• Carácter: (character)

• Tipos de datos: Derivados

• Arrays

• Vectores Clase de hoy
• Matrices

• Estructuras

Antes:

• Dudas práctica jueves pasado:

• Ejercicio números primos: ¿?



Sumatorios: ¿Dudas?

Antes:

• Estilo de programación:
program main
implicit none
integer, parameter:: n = 100
integer:: s
integer:: i, j
!---Fin declaracion-------------------
s = 0
do i=1,n

do j=1,n

if (i <= j) then
endif

s = s + i + j

enddo

enddo
end program main

Antes:

• Uso de las condicionales: I.- if… else… end if

if ((n-(n/2)*2) == 0) then
else Bien!!
endif

...
...

if((n-(n/2)*2) == 0) then
elseif((n-(n/2)*2) /= 0) then
end if

...
...

...

if((n-(n/2)*2) == 0) then
endif
if((n-(n/2)*2) /= 0) then
end if

...

Regular à Mal

Antes:

• Uso de las condicionales: II.- if… elseif… else… endif

IF(x > 0) THEN

WRITE(*,*) '+'

ELSEIF(x == 0) THEN

WRITE(*,*) '0'

ELSE

ENDIF

WRITE(*,*) '-'

Cálculo número de divisores primos

integer:: n,i
n = 7
i = 2
write(*,*) n – ( (n/i) * i )
n = 6
i = 2
write(*,*) n – ( (n/i) * i)
!Y si probara a dividir el número por todos los que son
menores que él...

!6–INT(6/2)*2=0

!7–INT(7/2)*2=1

Arrays: Vectores y Matrices

Arrays: Vectores y Matrices: Declaración

U:

A:

U(1) U(2) U(3) U(4) U(5)

A(1,1)
A(2,1)

A(1,2)
A(2,2)

A(1,3)
A(2,3)

T:

T(0,-1)
T(1,-1)
T(2,-1)

T(0,0)
T(1,0)
T(2,0)

Arrays: Vectores y Matrices: Declaración

Vectores y Matrices: Almacenamiento en memoria

integer :: U(5)

integer :: B(5,3)

u(1)
u(2)
u(3)
u(4)
u(5)

b(1,1)
b(2,1)
b(3,1)
b(4,1)
b(5,1)

b(1,2)
b(2,2)
b(3,2)
b(4,2)
b(5,2)

b(1,3)
b(2,3)
b(3,3)
b(4,3)
b(5,3)

• Velocidad de cálculo en grandes códigos

Arrays: Vectores y Matrices: Asignación

program asignacion

integer :: U(4)

U = 10

end program asignacion

program asignacion

integer :: U(4)

U = (/0,2,-1,3/)

end program asignacion

U:

10

10

10

10

U:

0

2

-1

3

Arrays: Vectores y Matrices: Asignación

program asignacion

integer :: U(4)

U(2) = 0
U(3) = -1
U(1) = 3
U(4) = 2

end program asignacion

U:

3

0

-1

2

Arrays: Vectores y Matrices: Asignación

A:

10
10

10
10

10
10

program asignacion

integer :: A(2,3)

A = 10

end program asignacion

program asignacion

integer :: A(2,3)

A = reshape((/1, 0, -2, 3, 5, 8/), (/2,3/))

end program asignacion

A:

1
0

-2
3

5
8

OJO!!

Arrays: Vectores y Matrices: Asignación

program asignacion

integer :: A(2,3)

A(1,3) = 2
A(1,1) = 10
A(2,1) = -1
A(2,2) = 14
A(1,2) = 3
A(2,3) = -5

end program asignacion

A:

10
-1

3
14

2
-5

Arrays: Vectores y Matrices: Declaración II

• Parámetro

• Dinámica

program declaracion

program declaracion

integer, parameter :: n = 2
integer, parameter :: m = 3
integer, parameter :: Linf = 0
integer, parameter :: Lsup = 10

integer :: U(n)
real :: V(n*m)
real :: A(n,m)
real :: T(Linf:Lsup, Linf:Lsup)

end program declaracion

integer :: n
Integer :: m

integer, allocatable :: U(:)
real, allocatable :: A(:,:)

end program declaracion

Arrays: Vectores y Matrices: Declaración II

• Parámetro

• Dinámica

program declaracion

program declaracion

integer, parameter :: n = 2
integer, parameter :: m = 3
integer, parameter :: Linf = 0
integer, parameter :: Lsup = 10

integer :: U(n)
real :: V(n*m)
real :: A(n,m)
real :: T(Linf:Lsup, Linf:Lsup)

end program declaracion

integer :: n
Integer :: m

integer, allocatable :: U(:)
real, allocatable :: A(:,:)

end program declaracion

U(:) es un vector y A(:,:) una
matriz de tamaño desconocidos al

principio del programa

Arrays: Vectores y Matrices: Asignación II

• Parámetro

• Dinámica

program declaracion

program declaracion

integer, parameter :: n = 2
integer, parameter :: m = 3

integer :: n
Integer :: m

integer :: U(n)
real :: A(n,m)

integer, allocatable :: U(:)
real, allocatable :: A(:,:)

A = 0.d0
U = 0.d0



Igual que antes

end program declaracion

! Cuerpo de programa
n = 2
m = 3
allocate(U(n))
allocate(A(n,m))

A = 0.d0
U = 0.d0

end program declaracion

Arrays: Vectores y Matrices: Asignación II

• Parámetro

• Dinámica

program declaracion

program declaracion

integer, parameter :: n = 2
integer, parameter :: m = 3

integer :: n
Integer :: m

integer :: U(n)
real :: A(n,m)

A = 0.d0
U = 0.d0



Igual que antes

end program declaracion

integer, allocatable :: U(:)
real, allocatable :: A(:,:)

! Cuerpo de programa
n = 2
m = 3
allocate(U(n))
allocate(A(n,m))

Reserva dinámica
de memoria para
U(:)y A(:,:)

A = 0.d0
U = 0.d0

end program declaracion

Arrays: Vectores y Matrices: Asignación III

• Asignación por bucle

program asignacion

integer, parameter :: n = 10
integer :: U(n)
integer :: i

!--- Fin declaracion -------------------

do i=1,n

end do

U(i) = i*i

write(*,*) U

do i=1,n

end do

write(*,*) U(i)

end program asignacion

Arrays: Vectores y Matrices: Asignación III

Escribir un programa que defina la matriz identidad con n = 5

23

Arrays: Vectores y Matrices: Asignación III

Escribir un programa que defina la matriz identidad con n = 5

Arrays: Vectores y Matrices: Asignación III

Escribir un programa que defina la matriz Anxn con n = 100

Arrays: Vectores y Matrices: Asignación III

Escribir un programa que defina la matriz Anxn con n = 100

program main
integer, parameter :: n = 100
integer :: A(n,n)
integer :: i, j
!--- Fin declaracion -------------------

do i=1,n

do j=1,n

else

end if

end do

end do
end program main

if (i <= j) then

A(i,j) = i + j

A(i,j) = 0

Arrays: Vectores y Matrices: Asignación III

Escribir un programa que defina la matriz Anxn con n = 100

program main
integer, parameter :: n = 100
integer :: A(n,n)
integer :: i, j
!--- Fin declaracion -------------------

A = 0
do i=1,n

do j=1,n

if (i <= j) A(i,j) = i + j

end do

end do
end program main

Arrays: Vectores y Matrices: Asignación III

Escribir un programa que defina la matriz Anxn con n = 100

program main
integer, parameter :: n = 100
integer :: A(n,n)
integer :: i, j
!--- Fin declaracion -------------------

A = 0
do i=1,n

end do

end do
end program main

do j=i,n

A(i,j) = i + j

Asignación Dinámica

program declaracion

integer :: n
Integer :: m

integer, allocatable :: U(:)
real, allocatable :: A(:,:)

! Cuerpo de programa

allocate(U(n))
allocate(A(n,m))

A = 0.d0
U = 0.d0

end program declaracion

Asignación Dinámica

program declaracion

integer :: n,info
integer, allocatable :: U(:)
! Cuerpo de programa

n = 5

allocate(U(n), stat=info)

if (info > 0) stop ‘** No hay memoria &

& suficiente para U**’

Declaración de U como array dinámico

Reserva de memoria, con control de error
Si la asignación es correcta stat = 0.
En caso contrario stat > 0

U = 0.d0

deallocate(U, stat=info)

end program declaracion

if (info > 0) stop ‘** U no tenía&

& memoria reservada**’

Libera la memoria previamente reservada,
con control de error

Arrays: Vectores y Matrices: Asignación III

• Trabajo para casa: (subid a Moodle antes del 13 de Noviembre)

• El objetivo de esta práctica es escribir un programa que calcule números

primos.

• Se proponen tres estructuras de programa: versión básica, media y
avanzada. Dependiendo de la opción elegida, la pareja optará a tres
notas distintas: aprobado, notable o sobresaliente.

• En todo caso, se valorará la limpieza del programa (e.g., indentación

correcta) así como el uso de comentarios explicativos.

La entrega se realizará a través de Moodle.


• Solo uno de los miembros de la pareja realizará la entrega.
• El nombre del fichero será DNI1_DNI2.f90.
• Un comentario en la parte superior del código especificará si se entrega

la versión básica, media o avanzada.

Arrays: Vectores y Matrices: Asignación III

• Trabajo para casa: (subid a Moodle antes del 13 de Noviembre)

TRABAJO NÚMEROS PRIMOS: VERSIÓN BÁSICA

APROBADO

1.- El programa pide al usuario que introduzca un número entero
mayor que cero, n.
2.- El programa comprueba que el valor introducido es correcto (es
mayor que cero). En caso contrario, el programa finaliza.
3.- El programa creará un vector de tamaño n.
3.- El programa calcula los números primos menores o iguales a n
y los almacena en el vector creado.
4.- El programa escribirá por pantalla el contenido del vector.
5.- El programa liberará la memoria del vector.

Arrays: Vectores y Matrices: Asignación III

• Trabajo para casa: (subid a Moodle antes del 13 de Noviembre)

TRABAJO NÚMEROS PRIMOS: VERSIÓN MEDIA

NOTABLE

1.- El programa pide al usuario que introduzca un número entero
mayor que cero, n.
2.- El programa comprueba que el valor introducido es correcto (es
mayor que cero). En caso contrario, le pide al usuario que
introduzca de nuevo otro número.
3.- El programa calcula los números primos menores o iguales a n.
4.- El programa creará un vector de tamaño el número de números
primos menores o iguales a n.
5.- El programa almacenará los números primos menores o iguales
a n en el vector creado.
6.- El programa
  • Links de descarga
http://lwp-l.com/pdf16469

Comentarios de: Arrays: Vectores y Matrices (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