Vous êtes sur la page 1sur 12

LENGUAJE DE

PROGRAMACIN PARALELA
X10
Clase 2:
Funciones
y Rails
Rails
Los rails son similares a los arrays de una dimensin pero ocupa
menos memoria.
Ejemplos
Rail R de 6 elementos que van desde el ndice 0 al 5.
import x10.io.Console;
public class ejemplo {
public static def main(args:Rail[String]){
val R:Rail[Long] = [1,3,5,3,15,5];
for (var i:Long=0;i<R.size;i++)
Console.OUT.println(R(i));
}
}
Rail R de 10 elementos inicializados a cero. (Por defecto)
import x10.io.Console;
public class ejemplo {
public static def main(args:Rail[String]){
val R=new Rail[Long](10);
for (i in 0..(R.size-1))
Console.OUT.println(i+" "+R(i));
}
}
Rail R de 10 elementos inicializados a pi.
import x10.io.Console;
public class ejemplo {
public static def main(args:Rail[String]){
val R=new Rail[Double](10,Math.PI);
for (x in R)
Console.OUT.println(x);
}
}
Rail R de 10 elementos inicializados a indice*pi.
import x10.io.Console;
public class ejemplo {
public static def main(args:Rail[String]){
val R=new Rail[Double](10,(i:Long)=>i*Math.PI);
for (i in R.range())
Console.OUT.println(R(i));
}
}
Rail R de 10 elementos inicializados a enteros aleatorios entre 0 y 6.
import x10.io.Console;
import x10.util.Random;
public class ejemplo {
public static def main(args:Rail[String]){
val r=new Random();
val R=new Rail[Long](10,(i:Long)=>r.nextLong(7));
for (a in R)
Console.OUT.println(a);
}
}
Funciones
import x10.io.Console;
public class ejemplo {
static def resta(x:Long,y:Long): Long{
return x-y;
}
public static def main(args:Rail[String]){
val Rx:Rail[Long] = [1,3,5,3,15,5];
val Ry:Rail[Long] = [7,2,5,4,8,15];
for (var i:Long=0;i<6;i++)
Console.OUT.println(resta(Rx(i),Ry(i)));
}
}
Funciones en clases diferentes
import x10.io.Console;
public class ejemplo {
public static def main(args:Rail[String]){
val Rx:Rail[Long] = [1,3,5,3,15,5];
val Ry:Rail[Long] = [7,2,5,4,8,15];
for (var i:Long=0;i<6;i++)
Console.OUT.println(resta(Rx(i),Ry(i)));
}
}

//Si esta en el mismo archivo //Si esta en otro archivo


class MiClase { public class MiClase {
static def resta(x:Long,y:Long): Long{ static def resta(x:Long,y:Long): Long{
return x-y; return x-y;
} }
} }
Funciones
import x10.io.Console;
public class ejemplo {
static def resta(x:Rail[Long],y:Rail[Long],ind:Long): Long{
return x(ind)-y(ind);
}
public static def main(args:Rail[String]){
val Rx:Rail[Long] = [1,3,5,3,15,5];
val Ry:Rail[Long] = [7,2,5,4,8,15];
for (var i:Long=0;i<6;i++)
Console.OUT.println(resta(Rx,Ry,i));
}
}
Copiando Rails
import x10.io.Console;
import x10.util.Random;
public class ejemplo {
static def imprimir(ra:Rail[Long]){
for(x in ra)
Console.OUT.print(x+"-");
Console.OUT.println();
}
public static def main(argv:Rail[String]){
val r=new Random();
val r1 = new Rail[Long](10, (i:Long)=>r.nextLong(15));
val r2 = new Rail[Long](10);
val r3 = new Rail[Long](10);
Console.OUT.print("r1 = ");
imprimir(r1);
Console.OUT.println("Copia r1 a r2");
Rail.copy(r1,r2);
Console.OUT.print("r2 = ");
imprimir(r2);
Console.OUT.println("solo copia los elementos indice 4,5,6 de r1");
Console.OUT.println("en los elementos 6,7,8 de r3");
Rail.copy(r1,4,r3,6,3);
Console.OUT.print("r3 = ");
imprimir(r3);
}
}
Borrando y completando elementos de Rails
import x10.io.Console;
import x10.util.Random;
public class ejemplo {
static def imprimir(ra:Rail[Long]){
for(x in ra)
Console.OUT.print(x+"-");
Console.OUT.println();
}
public static def main(argv:Rail[String]){
val r=new Random();
Console.OUT.println("Los elementos del Rail son inicializados a numero aleatorio");
val r1 = new Rail[Long](10, (i:Long)=>r.nextLong(15));
Console.OUT.print("r1= ");
imprimir(r1);
Console.OUT.println("Borrando los elementos 6,7,8");
r1.clear(6, 3);
imprimir(r1);
Console.OUT.println("Borrrando todos los elementos");
r1.clear();
imprimir(r1);
Console.OUT.println("Completando todo el rail con 7");
r1.fill(7);
imprimir(r1);
}
}
Rango, tamao y ordenar Rails
import x10.io.Console;
import x10.util.Random;
import x10.util.RailUtils;
public class ejemplo {
static def imprimir(ra:Rail[Long]){
for(x in ra)
Console.OUT.print(x+"-");
Console.OUT.println();
}
public static def main(argv:Rail[String]){
val r=new Random();
Console.OUT.println("Los elementos del Rail son inicializados a numero aleatorio");
val r1 = new Rail[Long](10, (i:Long)=>r.nextLong(15));
Console.OUT.print("r1= ");
imprimir(r1);
Console.OUT.println("El tamao de r4 es "+r1.size);
Console.OUT.println("El rango r4 es "+r1.range);
Console.OUT.println("Imprimiendo elementos");
for (var i:Long=0; i<r1.size;i++)
Console.OUT.print(r1(i)+"-");
Console.OUT.println("\nOtra forma de imprimir");
for (i in r1.range)
Console.OUT.print(r1(i)+"-");
Console.OUT.println("\nOtra forma mas");
for (i in r1)
Console.OUT.print(i+"-");
Console.OUT.println("\nOrdenar de forma ascendente");
RailUtils.sort(r1);
imprimir(r1);
}
}
Buscar un elemento y su posicin en Rails
import x10.io.Console;
import x10.util.Random;
import x10.util.RailUtils;
public class ejemplo {
static def imprimir(ra:Rail[Long]){
for(x in ra)
Console.OUT.print(x+"-");
Console.OUT.println();
}
public static def main(argv:Rail[String]){
val r=new Random();
Console.OUT.println("Los elementos del Rail son inicializados a numero aleatorio");
val r1 = new Rail[Long](10, (i:Long)=>r.nextLong(7));
Console.OUT.print("r1= ");
imprimir(r1);
Console.OUT.println("Busca el nmero 5 (r1 sin ordenar) "+RailUtils.binarySearch(r1,5));
Console.OUT.println("No funciona. Ahora ordenamos primero el rail");
RailUtils.sort(r1);
imprimir(r1);
Console.OUT.println("Busca el nmero 5 (r1 ordenado) "+RailUtils.binarySearch(r1,5));
Console.OUT.println("Si existe muestra el indice, sino negativo");
}
}
Prctica de laboratorio 1
a) En la funcin main() cree un rail que se complete aleatoriamente y de forma consecutiva con las
coordenadas reales (4 decimales) x, y y z de 500 puntos. El dominio de las 3 variables es [-10 , 10].
b) Mediante una funcin transforme cada terna (x,y,z) a (r, ,) y muestre los resultados a medida que
calcula. Esta funcin es llamada por main() pero es la funcin quien imprime los resultados.
c) Luego paralelice y compare los tiempos.

Considere las restricciones indicadas en la frmula.

Vous aimerez peut-être aussi