Inicialización de arreglos de 2 variables INTEGER, DIMENSIÓN (4, 3) : : ini DO i=1, 4 DO j= 1,3 ini(i, j) = j END DO i=1123 i=2123 i=3123 i=4123 j=1j=2j=3.

Slides:



Advertisements
Presentaciones similares
Arreglos Unidimensionales y Bidimensionales ESTRUCTURAS DE DATOS I
Advertisements

Estrella 0 - Fundamentos de la Programación
III - Gestión de memoria
Estructuras de Datos (ARRAYS)
Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas.
DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO
MANEJO DE ARRAYS EN C.
Funcionamiento, programación
FORTRAN 90 arreglos.
FORTRAN 77 y Cómputo Científico
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Teoría de lenguajes y compiladores
Estructuras de control
Arreglos (vectores, matrices, ….)
Unidad 3 Punteros.
¿Qué es un PUNTERO?: Un puntero es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No.
Vectores en java.
MÓDULO DE PROCEDIMIENTOS Los módulos también pueden contener subrutinas y funciones → MÓDULO DE PROCEDIMIENTOS  PROCEDIMIENTOS → son compilados como parte.
Diseño descendente Diseño descendente, top-down, que consiste en dividir el problema en subproblemas más pequeños, que se pueden tratar de forma separada.
Tema 6: Clases Antonio J. Sierra.
TÉCNICO EN PROGRAMACIÓN DE SOFTWARE Instructor: Ingeniero Adrián Guerrero Taborda
Al término de la clase, el alumno reconoce las ventajas de usar JAVASCRIPT para un proyecto web.
Fundamentos de Programación
Arrays (introducción)
LÓGICA - DECISIONES Los valores lógicos: constantes, variables y expresiones lógicas, permiten controlar la ejecución de las sentencias de un programa.
TABLAS Definición. El tipo tabla permite definir objetos formados por un conjunto de elementos del mismo tipo. Ejemplos. El tipo tabla se utiliza para.
Programación en Matlab
Matrices Es una estructura homogénea, compuesta por varios elementos, todos del mismo tipo y almacenados consecutivamente en memoria A cada elemento se.
ARREGLOS BIDIMENSIONALES
Java. Java nació el año 1991, por un par de ingenieros de la Sun Microsystems.
Estructuras de Datos Arreglos.
Clase 10: Estructuras de datos y arreglos.
Resolución de Problemas y Algoritmos Uso de iteración con secuencias
Sesión 5 Sentencias de Selección y repetición Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
Administración de Memoria
Programación en Lenguaje C
Informática Ingeniería en Electrónica y Automática Industrial
COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida.
Aplicación de estructuras de datos
Programación I Arreglos II- Matrices.
Arreglos: Controles e Indicadores
Ciclos (Loops, Repeticiones) Permiten ejecutar una secuencia de sentencias mas de una vez. Hay 2 tipos de loops:  WHILE repite la acción un número indefinido.
Teoría – Alejandro Gonzalez
Fundamentos de Programación
APRENDIZ: SANDRA L. CAICEDO C. ORDEN: 20194
TEORIA DE LA INFORMACION INGENIERO ANYELO QUINTERO.
Programación en C para electrónicos
Matrices Departamento de Computación Escuela de Ingeniería de Sistemas
Clase 6 COMPUTACION 2009 C lase 8 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros.
Arreglos y comunicación Usuario
Vectores y Matrices.
Objetivo Mostrar los fundamentos de la programación a través de ejemplos y prácticas utilizadas cotidianamente en el desarrollo de aplicaciones.
ELEMENTOS DE COMPUTACIÓN Profesor: Guillermo Figueroa
PEDRO ALBERTO ARIAS QUINTERO. El shell es un intérprete de órdenes, los intérpretes de órdenes de Linux son auténticos lenguajes de programación. Como.
Contenido:  ¿Qué son los Punteros?  Los Procedimientos: New y Dispose.
Estructura de datos I CIS - UABJB.
Visual Basic FUNCIONES Y PROCEDIMIENTOS
INTRODUCCION A LA PROGRAMACION
Fundamentos de Programación
“variables , sentencia if y bucles”
Computación I. CI-2125 Tema VII
ARREGLOS BIDIMENSIONALES MATRICES Son un espacio de almacenamiento continuo, que contiene una serie de elementos del mismo tipo de datos. Desde el punto.
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
Ada 2º Parte (variables, ámbitos, subrutinas, tipos abstractos de datos y excepciones)
 Las funciones son un conjunto de instrucciones que realizan una tarea específica. En general toman unos valores de entrada, llamados parámetros y proporcionan.
MEMORIA DINÁMICA.
PROGRAMACIÓN Grupo de Modelamiento de Sistemas
Estructura de Datos PILA Universidad Hispanoamericana Prof. Ing. Erick López.
Prof. Jonathan Silva Ingeniería Civil – Informática I Ingeniería Civil Informática I Clase 5.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
Transcripción de la presentación:

Inicialización de arreglos de 2 variables INTEGER, DIMENSIÓN (4, 3) : : ini DO i=1, 4 DO j= 1,3 ini(i, j) = j END DO i=1123 i=2123 i=3123 i=4123 j=1j=2j=3 Pero si inicializamos con: (/1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3/) Ini es de 4x3 Ini es de 1x12

Aunque los 2 arreglos tienen el mismo numero de elementos, no tienen la misma forma y no pueden ser usados en la misma operación. Para transformalo está la función intrínseca RESHAPE Ejini= RESHAPE ((/1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3/), (/4, 3/) Convierte al vector 1X12 en una matriz de 4X3 la cual es asignada a ini:  INTEGER, DIMENSION (4,3) : : ini (4,3)=& RESHAPE ((/1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3/), (/4, 3/) Buena costumbre: Cuando se trabaja con matrices conservar su forma. Leerlas y escribirlas con DO o DO implícitos y al realizar operaciones→ programas mas entendibles. Matrices y subconjuntos de matrices Se puede realizar operaraciones aritméticas con dos matrices cuando son conformes o una es un escalar Ej

a= Para realizar un subconjunto de la matriz a a( :, 1)= a(1, : ) = [ ] a(1: 3, 1: 5: 2) =

Arreglos de mas de 2 dimensiones Ej 2x2x2 A(1,1,1)A(2,1,1)A(1,2,1)A(2,2,1)A(1,1,2)A(2,1,2)A(1,2,2)A(2,2,2) Generalizando para N dimensiones: El primer subíndice es el que se mueve mas rápidamente, un poco mas lento el segundo… el último es el más lento de todos. Esto se debe tener en cuenta para inicializar, leer o escribir….. Enmascarar : la construcción WHERE Ej: Queremos calcular el logaritmo a una matriz DO i=1, ifin DO j=1, jfin logval(i,j)= log(valor(i,j)) END DO

Otra forma: logva= log (valor) Pero no tubimos en cuenta si exiistia algun valor negativo o un 0 para la cual la función LOG no es válida. Para evitar ese error se deberia programar: DO i=1,ifin DO j=1,jfin IF(valor(i,j) >0.) then logval(i, j) = LOG(valor(i,j)) ELSE logval(i, j) = END IF END DO A esta asignación se le dice enmascarar En FORTRAN 90 existe una función que realiza esta asignación: WHERE [nombre] WHERE ( mask_exp) Sentencias de asignación del arreglo !Bloque 1 ELSEWHERE [nombre] Sentencias de asignación del arreglo !Bloque 2 END WHERE [nombre]

Si la expresión mask_exp es verdad se ejecuta el Bloque 1, en caso contrario se ejecuta el Bloque 2. Ej WHERE (valor>0) logval=LOG(valor) ELSEWHERE logval= ENDWHERE El FORTRAN 95 agrega una clausula mas al WHERE [nombre] WHERE ( mask_exp1) Sentencias de asignación del arreglo !Bloque 1 ELSEWHERE ( mask_exp2) [nombre] Sentencias de asignación del arreglo !Bloque 2 ELSEWHERE [nombre] Sentencias de asignación del arreglo !Bloque 3 END WHERE [nombre] En los FORTRAN 90/95 también es válido WHERE(mask_exp) sentencia de asignación del arreglo

Usando DO e IF Usando WHERE Analizar un conjunto de datos de entrada cuyo rango se debe encontrar entre y Si un valor no esta dentro de este intervalo asignarle el valor del límite inferior o superior según sea su signo.

Forall permite aplicar operaciones a elemento por elemento de una matriz o a un subconjunto, ya sea a través de los índices o/y una expresión lógica. (FORTRAN 95) En general: [nombre] FORALL (in1= icom, ifin, incr, [in2= ico, m2, ifin2, incr…..exp_log] sentencia 1 …….. sentencia n END FORALL [nombre] Ej SI se quiere conocer la inversa de una matriz de números reales FORALL(i=1:n, j=1: m, r(i,j)/=0) r(i, j) =1./ r (i, j) END FORALL FORALL puede representar un DO anidado combinado con un IF DO i= 1,n DO j=1,m IF (r (i, j)/= 0.) THEN r (i, j)=1./ r (i, j) END IF END DO

FORALL (in1= icom, ifin, incr, [in2= ico, m2, ifin2, incr…..exp_log] sentencia de asignación Cuando utilizamos las sentencias Do e IF las setencias dentro de ella se realizan en forma secuencial, en la forma seleccionada por el procesador. FORALL (i=2:n-1, j=2,m-2) a( i, j) = SQRT(a( i, j)) b( i, j) = 1./ a( i, j) END FORALL Realiza todos a( i, j) y cuando termina hace los b( i, j)

Hasta ahora el tamaño de los arreglos que hemos utilizado fue declarado junto con el nombre de la variable. Ej: INTEGER, DIMENSIÓN (4, 3) : : ini Esto se denomina STATIC MEMORY ALLOCATION. El espacio en memoria para almacenar el contenido del arreglo es siempre el mismo a lo largo de todo el programa. En algunos casos, esto puede resultar inconveniente si hay algún arreglo que interviene en nuestro programa del que no conocemos a priori el tamaño que va a tener. Para salvar este problema generalmente se definen arreglos muy grandes que eventualmente permitan ajustarse a muchas situaciones, pero esto puede ser ineficiente si no utilizamos el tamaño completo de las variables ya que estamos usando mucha memoria. Para resolver este problema, se introdujo la DYNAMIC MEMORY ALLOCATION que permite definir el tamaño de un arreglo durante la ejecución del programa. Esto hace que podamos adaptar los tamaños de los arreglos al problema específico que estamos resolviendo en cada caso. ALLOCATABLE ARRAYS

REAL, ALLOCATABLE, DIMENSION(:) :: X ! La variable X tiene una sola dimensión Este atributo le dice al programa que el tamaño de X no será determinado en el momento de la declaración sino más adelante. Si bien no hay que especificar el tamaño, si las dimensiones, esto lo hacemos colocando un “: “. REAL, ALLOCATABLE, DIMENSION(:,:) :: X !En este otro caso X tiene 2 dimensiones. Para lograr asignarle un espacio en la memoria y poder utilizar a la variable X disponemos de la sentencia ALLOCATE. ALLOCATE ( X(10,20)) Esta sentencia le indica al programa que reserve un espacio de 10 filas por 2 columnas en la memoria para la variable X. A partir de este momento podemos utilizar la variable X como lo hacíamos antes. Para permitir que el tamaño de un arreglo sea asignado durante la ejecución del Programa → el atributo ALLOCATABLE en la declaración de las variables.

ALLOCATE(X(N,M)) ! Esto también es válido si N y M son 2 INTEGER. Para liberar el espacio que está ocupado por la variable X en la memoria ⇨ DEALLOCATE DEALLOCATE ( X ) IMPORTANTE ⇨ después de haber hecho esto no podremos acceder más a la variable X, su contenido se ha perdido.

EJ: Tipiar y compilar el siguiente programa, ejecutarlo mirando como varía la memoria utilizada por el sistema con el monitor del sistema de windows. PROGRAM pepe REAL, ALLOCATABLE, DIMENSION(:,:) :: X WRITE(*,*)"Antes de asignar a X espacio en memoria, presione enter" READ(*,*) ALLOCATE(X(50000,1000)) WRITE(*,*)"X ya está en la memoria de la máquina, presione enter" READ(*,*) DEALLOCATE(X) WRITE(*,*)"X fue eliminado de la memoria de la máquina" STOP END PROGRAM pepe