Introducción a las funciones intrínsecas de Fortran Asignación: Lea el capítulo 4 y el ejemplo trig. f. Mucho antes de que hubieran calculadoras científicas, los científicos y los ingenieros se dieron cuenta de que necesitaban maneras fáciles de obtener resultados de funciones comunes como seno, coseno, logaritmo natural y muchos más. Estas necesidades han sido consideradas con cada estándar de Fortran, resultando en una larga lista de funciones incorporadas (funciones intrínsecas) para hacer su vida más fácil. No cubriremos todas las funciones en el estándar actual (Fortran 90), pero le daré algunas claves en este y en las discusiones posteriores. La sintaxis para el uso de funciones intrínsecas puede ser muy familiar para usted, porque también aparecen en hojas de cálculo. Si introdujo la magnitud de una velocidad en la caja A1 y el ángulo entre la velocidad y el eje x (en radianes) en la casilla A2, entonces puedo calcular la componente x de la velocidad en la casilla A3 con la fórmula A1 COS (A2). En Fortran este resultado puede obtenerse con una declaración de asignación como velx vel cos (angrad) Antes de pasar a una definición simple. En el ejemplo anterior angrad es un argumento de la función cos. Algunas Funciones Intrínsecas Básicas abs (x) - Valor absoluto de x iabs (I) - Valor absoluto de un entero I (pre-90 Fortran abs no tuvo gusto de argumentos enteros.) Sin (x) - Devuelve el seno de x (x es No es un entero) cos (x) - Devuelve el coseno de x (x no es un entero) tan (x) - Devuelve la tangente de x (x no es un entero) exp (x) - calcula e (2.7183. X (x no es un entero y 0) log10 (x) - calcula el logaritmo de base 10 de x (x no es un entero y 0) Asin (x) - Devuelve el arcoseno (seno inverso) de x (x es real) acos (x) - Devuelve el arccoseno (coseno inverso) de x (x es real) atan (x) - Devuelve el arctangente (tangente inversa) X (x es real) sqrt (x) - Devuelve la raíz cuadrada de x (x no es un entero y 0) nint (x) - Devuelve el entero más cercano al número real x min (x1, x2) El mínimo de x1, x2. (Los argumentos deben ser del mismo tipo) max (x1, x2.) - Devuelve el máximo de x1, x2. (Los argumentos deben ser del mismo tipo) Las funciones max y min son inusuales ya que toman cualquier número de argumentos. Las formas genéricas min y max no eran una parte obligatoria de la norma Fortran 77, pero están en Fortran 90. En muchos códigos de Fortran 77 verá funciones: amax1 (x1, x2.) - Devuelve el máximo de x1, x2. Como un número real (los argumentos son reales) amax0 (i1, i2.) - Devuelve el máximo de i1, i2. Como un número real (argumentos son enteros) max0 (i1, i2.) - Devuelve el máximo de i1, i2. Como un entero (los argumentos son enteros) max1 (x1, x2.) - Devuelve el máximo de x1, x2. Como un entero (los argumentos son reales) Formas similares aparecieron para min. Además, log y log10 eran formas opcionales en Fortran 77. Los programas más antiguos usan a menudo alog y alog10 para iniciar el nombre de la función con una letra característica de un valor real en lugar de un valor entero. En general, Fortran 77 era más dependiente de que escogiera específicamente una función apropiada para los tipos de argumentos y el tipo de valor que se devolvería. Mientras que en el tema de Fortran 90 funciones intrínsecas, vale la pena señalar dos que ha visto en el ejemplo ranges. f. Y una función relacionada, que son útiles en programas que se ejecutan en una gama de máquinas. (X) - Devuelve el número positivo más grande que se puede representar en el equipo actual para el argumento real x x (-) La precisión aproximada decimal disponible en el equipo actual para el argumento real x Algunos comentarios sobre la velocidad Es necesario darse cuenta de que las funciones intrínsecas trigonométricas, de registro y de exp son relativamente caras en términos de tiempo de computadora requerido. Si necesita el valor de sin (0.1) frecuentemente, utilice la función una vez en una asignación como: sin0p1 sin (0.1) y utilice la nueva variable sin0p1 donde sea necesario (0.1). El alto costo de exp y log también se refleja en el uso del operador. Por lo general, una expresión como x y da como resultado que el compilador inserte código equivalente a exp (y log (x)). Sin embargo, la mayoría de los compiladores son lo suficientemente inteligentes como para darse cuenta de que si y es un entero, pueden usar una o más multiplicaciones (x 2 x x, x 3 x x x, etc.). Tales compiladores contienen la lógica para conocer el punto de equilibrio, en términos de tamaño de y, entre dicha multiplicación y la combinación de exp y log. Es siempre más rápido programar x 2 que x 2.0, así que tenga cuidado en su elección de tipos para exponentes. La velocidad también es un factor en la existencia de la función intrínseca sqrt. Este es un algoritmo especial para calcular la raíz cuadrada de un número, que es siempre más rápido que elevar el número a la potencia 0.5. Cuando existe la opción, use sqrt (x) en lugar de x 0,5. En mi experiencia sqrt (sqrt (x)) es más rápido que x 0.25. Mientras estamos en el tema de la velocidad, deberíamos revisar la velocidad relativa de otras operaciones. Sumar y restar son siempre los más rápidos. Multiplicar viene en segundo lugar. Divide es más lento que multiplicar, pero significativamente más rápido que sqrt. Si se va a dividir por una variable x con frecuencia (más de 2 o 3 veces), es una buena idea definir otra variable, digamos rx con la ecuación rx 1./x, y luego multiplicar por rx, donde habría dividido por x. Un programa de ejemplo que utiliza funciones intrínsecas Estudie el programa de ejemplo trig. f para ver ejemplos de funciones intrínsecas y como un comienzo útil para su tarea más reciente. Preguntas de revisión Pruebe su conocimiento de este material con algunas preguntas de revisión. Para arriba un nivel / ayuda de Home Here s en la conversión a Fortran 90 F ORTRAN 77 es un subconjunto de Fortran 90. Así, si usted está utilizando FORTRAN estándar 77, usted puede cambiar fácilmente a Fortran 90. Mientras que hay muchas nuevas características del lenguaje en Fortran 90, no está obligado a utilizarlos. Este artículo hace hincapié en las diferencias entre los estándares FORTRAN 77 y Fortran 90 y da algunos ejemplos de compilación para comenzar el camino hacia la conversión a Fortran 90. Para complementar este artículo, la Oficina de Asesoría Técnica de SCD ha creado un nuevo conjunto de información Fortran 90 En su ConsultWeb en línea. La URL de ConsultWeb es: Seleccione el enlace Fortran 90 Info. El sitio de ayuda de ConsultWeb Fortran 90 enfatiza los problemas prácticos de la migración de los sistemas de compilación Cray CF77 a CF90, incluyendo la comprobación de su código, compilación y vinculación, cambios de idioma, entorno UNIX, problemas de rendimiento, nuevas características y administración de origen mediante make. Reimpresiones de SCD Computing Noticias de Fortran 90 artículos de Jeanne Adams, un Tutorial de Fortran 90 de Zane Dodson (Universidad de Nuevo México) y una lista de Preguntas Frecuentes de Fortran 90 (FAQ). Por qué convertir ahora Cuando el entorno de programación Cray 2.0 fue lanzado este primavera, el compilador Cray Fortran 90 (CF90) reemplazó el sistema de compilación CF77 para sistemas CRAY PVP como el compilador Fortran soportado. La conversión a Fortran 90 se ha convertido en una alta prioridad porque SCD ha adquirido un Cray C90 que reemplazó al CRAY Y-MP (antero). SCD también ha adquirido un Cray J90se, ouray. El compilador Fortran sólo en estas máquinas es el compilador Fortran 90 (CF90). Si se obtienen otros nuevos Crays, también tendrán CF90 como el único compilador de Fortran. ¿Qué pasará con CF77? Aunque SCD todavía puede proporcionar el sistema de compilación CF77 en nuestros sistemas más antiguos, como el CRAY Y-MP (shavano), todos los nuevos sistemas Cray vienen con CF90 como el sistema de compilación por defecto. CF77 debe ser considerado como un compilador de transición sólo, con énfasis en la obtención de códigos de ejecución con CF90 tan pronto como sea posible. Los usuarios que planean funcionar en el C90 (antero) DEBEN convertir sus códigos a Fortran 90 ahora. Conversión a Fortran 90: Problemas y respuestas ¿Está utilizando Fortran estándar (77 o 90)? Entonces la conversión debería ser una brisa. Los usuarios de FORTRAN 77 necesitarán realizar muy pocos cambios en un programa FORTRAN 77 para convertirlo a Fortran 90, siempre y cuando todas las sentencias utilizadas sean declaraciones bona fide de FORTRAN 77. Como se mencionó anteriormente, Fortran 90 es un superconjunto del lenguaje FORTRAN 77. Algunas de las dificultades de convertir programas provienen de declaraciones que son extensiones Cray a la norma FORTRAN 77 que no están en el estándar Fortran 90. Si las instrucciones están en el estándar FORTRAN 77, habrá muy pocos cambios (si los hay) para ejecutarse utilizando el compilador Fortran 90. Por supuesto, hay archivos de control y los cambios de línea de comandos que inevitablemente vienen con el cambio a cualquier nuevo compilador. Y cualquier compilador nuevo tendrá características de optimización que pueden ser diferentes a las que se han utilizado en el pasado. El trabajo de conversión no requiere cambiar los bucles DO a la notación vectorial de Fortran 90 (que, por cierto, se puede hacer usando varias rutinas de conversión). Puede aprovechar las nuevas características en un momento posterior, después de ejecutar los programas en el compilador Fortran 90. Hay diferentes enfoques para la conversión de un código fuente dependiendo de qué tipo de declaración está en cuestión. Los códigos estándar de FORTRAN 77 deberían compilar sin dificultad, a excepción de algunas advertencias que se tratan a continuación. Norma FORTRAN 77 declaraciones: Algunas advertencias FORTRAN 77 instrucciones estándar se compilará, con algunas excepciones, en el estándar Fortran 90. Una de las excepciones es con nombres de sus funciones proporcionadas por el usuario que son los mismos que los nuevos nombres en la lista de estándar Funciones del Fortran 90. Un ejemplo podría ser MATMUL en Fortran 90, que hace que una matriz se multiplique en matrices numéricas o lógicas. Si también tiene una función llamada MATMUL y desea utilizar su propia rutina, debe declarar su rutina EXTERNAL o cambiar su nombre. Otro nombre comúnmente utilizado que puede causar conflictos es la función intrínseca SUM de Fortran 90. El descriptor de edición de formato G produce 0.0E 00 en salida, mientras que Fortran 90 produce 0.0. Fortran 90 no en blanco pad después de un carácter dirigido a la lista si el número de caracteres en la lista es menor que el número de caracteres en el registro. FORTRAN 77 dejó este procesador dependiente. Si depende de esta característica, utilice PAD NO en la instrucción OPEN. Cuando se utiliza una constante real para inicializar una constante de doble precisión, sólo se utiliza la precisión de la constante real en Fortran 90. FORTRAN 77 permite una mayor precisión. Si los datos se inicializan en una instrucción DATA, Fortran 90 indica que los datos tienen el atributo SAVE FORTRAN 77 hace que este procesador dependa. Cray Fortran sentencias que extienden Fortran 90 y Cray Fortran instrucciones que se extienden FORTRAN 77, pero que no están en Fortran 90: No hay doble tipo complejo en un estándar de Fortran. Cray NAMELIST es diferente del Fortran 90 NAMELIST. Ambos formularios se aceptan en el compilador Fortran 90. Si planea trasladar su programa a otro sistema, utilice el NAMELIST estándar conforme. Las abreviaturas de una letra como. T. de verdad. Y. A. Para y. Etc no están en el estándar, pero están permitidos en el compilador Cray CF77. El compilador Cray CF77 es permisivo en estos casos. La interpretación de los operadores lógicos intrínsecos da como resultado un valor lógico (verdadero o falso) en los estándares de Fortran. Estos no se interpretan como un operador de enmascaramiento en una expresión booleana como en Cray Fortran. XOR. Es un operador adicional añadido por Cray. Hay varias rutinas de biblioteca de sistema en Cray CF77 Fortran que no están en el estándar. Sin embargo, estas rutinas permanecerán en el compilador Cray Fortran 90 para compatibilidad. Algunas de las directivas de tarea de Cray CF77 Fortrans anterior han sido reemplazadas por EXIT y la construcción CASE en el Fortran estándar 90. El DO GLOBAL ha sido reemplazado por la instrucción DO ALL, que no está en el Fortran estándar 90. La instrucción DO ALL es Cray Fortran 90. REAL 4, etc. no están conformes de forma estándar en Fortran 90, el parámetro KIND se utiliza en lugar de hacerlo en el estándar. Sin embargo, ambas formas están en Cray Fortran 90. La recursión fue en Cray FORTRAN 77, pero en una forma ligeramente diferente. En Fortran 90, la palabra RECURSION debe aparecer en procedimientos recursivos. Fue requerido en el estándar debido a consideraciones de eficiencia para los escritores del compilador, ya que la recursión es generalmente ineficiente e impacta la optimización. Tanto los punteros Cray como los punteros Fortran 90 están en Cray Fortran 90. Aunque estas dos implementaciones son diferentes, no entran en conflicto si el usuario se pega a una forma u otra. No obstante, los punteros Cray no son conformes a las normas. Fortran 90 es más estricto con la comprobación de tipo que con el CF77. Los punteros no son intercambiables con el tipo entero como en CF77. En Fortran 90, los punteros son su propio tipo y apuntan a un tipo particular de datos. La traducción directa de los punteros de Cray Fortran a los punteros estándar de Fortran 90 puede añadir una sobrecarga significativa debido a crear, copiar y desasignar arreglos temporales. Fortran 95 proyectos de declaraciones estándar Fortran 95 todavía se está revisando y votando. La votación final debe concluir a principios de 1997. Sólo hay algunas nuevas características en esta norma. Incluyen la instrucción FORALL y la construcción, las funciones PURE y ELEMENTAL, algunas nuevas funciones intrínsecas (NULL y CPU TIME) y la inicialización por defecto del puntero. Muchas aclaraciones se hicieron a Fortran 90 en la preparación del proyecto de documento del Fortran 95. Arquitectura de lenguaje Fortran 90/95: Cómo seguir Cómo evitar que un idioma crezca indefinidamente a un tamaño muy grande y cómo permitir que el software antiguo funcione en cualquier sistema nuevo son dos problemas que son difíciles de resolver. Por esta razón, se desarrolló una arquitectura de lenguaje para Fortran 90 que definió qué características eran viejas, nuevas, obsoletas y no estándar (suprimidas). La lista de características obsoletas se derivó de aquellas que eran poco utilizadas, y / o redundantes con otra característica, posiblemente una nueva. Las características eliminadas se eligieron cada ciclo de revisión estándar de la lista de características actuales obsoletas. Sin embargo, no todas estas características se eliminan, especialmente si los usuarios se quejan en un ciclo de revisión pública. Se requiere por lo menos un ciclo de revisión estándar antes de quitar una característica del idioma. Tabla 1. CARACTERÍSTICAS ELIMINADAS Tratamiento de las funciones eliminadas y obsoletas Todas las características obsoletas siguen estando en el estándar. Añadir nuevas funciones de Fortran 90 gradualmente Ahora ha sido introducido a las diferencias básicas entre FORTRAN 77 y Fortran 90 y debe ser capaz de comenzar a convertir a Fortran 90. Si tiene un programa estándar de FORTRAN 77 para convertir, no debería usar Cualquiera de las nuevas características de Fortran 90 inicialmente. Estas nuevas características se pueden introducir en el programa como es conveniente. La notación de array, los módulos, las construcciones WHERE anidadas y el uso de muchos procedimientos intrínsecos nuevos están entre la lista de cosas nuevas en Fortran 90. Hay muchos libros de texto y tutoriales disponibles para ayudarle a comenzar a usar nuevas características. Copias de la norma Fortran 90 están disponibles en la Oficina de Consultoría de SCD, Sala 17 del Laboratorio de Mesa. A continuación se muestran algunos ejemplos que muestran cómo invocar el compilador Cray Fortran 90. Cambios en los archivos de control y líneas de comandos: Utilización del compilador Fortran 90 en los sistemas Cray Puede encontrar información detallada sobre el compilador Cray Fortran 90 en línea en la página de manual f90 y puede obtener asistencia caso por caso en la Oficina de Asesoría Técnica de SCD . Nota: El nivel predeterminado de optimización bajo cf77 y f90 en sistemas Cray es - O 2 (optimización moderada). En comparación, ninguna optimización se realiza bajo f77 en una plataforma Sparc. Cf77: cf77 - o file. exe file. f cf90: f90 - o file. exe file. f Activar la multitarea automática: cf77: cf77 - Zp file. f cf90: f90 - O task2 file. f No interprete las directivas multitarea del usuario : Cf77: cf77 file. f cf90: f90 - O task0 file. f Interpretar las directivas multitarea del usuario: cf77: cf77 - Zu file. f cf90: f90 file. f cf90: f90 - O file1 task. f cf77: cf77 file. f - L / usr / local / lib - lncarm - lncaro cf90: f90 file. f - L / usr / local / lib - lncarm - lncaro Compilar con las bibliotecas de gráficos NCAR: cf77: cf77 file. f - L / usr / local / lib - lncarg - lncarg gks - lncarg c - lX11 cf90: cf90 file. f - L / usr / local / lib - lncarg - lncarg gks - lncarg c - lX11 Compile-only (para uso con make): cf77: cf77 - c file. f cf90: f90 - c file. f Sólo enlace (para uso con make): cf77: cf77 file1.o file2.o cf90: f90 file1.o file2.o Compilar con memoria estática: cf77: cf77: cf77 - a Static file. f cf90: f90 - ev file. f Compile con variables predeterminadas a valores indefinidos: Para más información Para más información y ayuda para convertir códigos de CF77 a CF90, llame a SCD Consultants al 303-497-1278, Consultoría en Mesa Lab Room 17, o envíe un e-mail a consult1 ncar. ucar. edu. Matrices y E / S formateadas Objetivos Al final de esta hoja de trabajo usted será capaz de: Entender el uso de arrays Mejorar la apariencia de su salida Arrays Imaginemos que queremos encontrar el promedio de 10 números. Un método (crudo) se muestra en el siguiente programa. Este enfoque es desordenado, implica un montón de escribir y es propenso a error. Imagínese si tuviéramos que lidiar con miles de números. El camino alrededor de esto es usar matrices. Una matriz es una lista a la que podemos acceder a través de un subíndice. Para indicar a FORTRAN que estamos utilizando una matriz, sólo especificamos su tamaño cuando lo declaramos. Este fragmento de código asigna 100 ubicaciones de memoria a la matriz x. Para acceder a una ubicación individual, se le llama elemento de matriz. Utilizamos un subíndice aquí estamos asignando el número 4 al 66º elemento de la matriz xy 3 al primer elemento. Ahora vamos a regresar al programa av al comienzo de esta hoja de trabajo, lo volveremos a escribir usando una matriz. Tenga en cuenta que si escribimos el programa se imprimirá todo el contenido de la matriz. El beneficio adicional de este programa es que con muy pocos cambios, podríamos hacer que se ocupe de cualquier número de elementos en nuestra lista. Podemos mejorar esto aún más haciendo uso del tipo de datos del parámetro: Tenga en cuenta que este es un ejemplo de buena programación. El código es fácil de mantener todo lo que tenemos que hacer para encontrar un promedio de una lista de números de cualquier tamaño es sólo para cambiar el tamaño del parámetro imax. También podemos asignar el tamaño de la matriz en tiempo de ejecución mediante la asignación dinámica de memoria. El siguiente programa demuestra el uso de matrices donde no sabemos el tamaño de la matriz. El programa se llama alloc. f95 y se puede copiar desde la página web. Observe en particular las líneas en negrita. La nueva forma de declarar el vector de matriz le dice al compilador que es asignable, es decir, el tamaño se determinará en tiempo de ejecución. Examinaremos esto más adelante en la Sección 7. Ejercicio 5.1 Escribe un programa que pregunta al usuario cuántos números quieren ingresar, llame a este valor imax. Asigne elementos imax a dos matrices, a y b. Lea en números imax a a y haga lo mismo para b. Imprima las matrices a, b e imprima la suma de a y b. Compare su intento con sumalloc. f95. Array magic Uno de los beneficios de los arrays es que usted puede hacer operaciones fácilmente en cada elemento mediante el uso de operadores aritméticos simples. Ejercicio 5.2 Copie el programa ramagic. f95 y archive el archivo data. txt en su propio ordenador. Ejecute el programa y examine la salida. Ejercicio 5.3 Escriba un programa que rellene una matriz de 10 elementos x con valores entre 0 y .9 en pasos de .1. Imprima los valores de sin (x) y cos (x) utilizando las propiedades de arrays para simplificar su programa. Compare su respuesta con ramagic2.f95. Arrays multi dimensionales Los arreglos que hemos visto hasta ahora han sido unidimensionales. Que es una lista única de números a los que se accede utilizando un solo subíndice. En el concepto, las matrices 1 dimensionales funcionan de manera similar a los vectores. También podemos usar matrices bidimensionales que conceptualmente son equivalentes a matrices. Establece un espacio de almacenamiento con 25 ubicaciones de números enteros. El siguiente programa crea una matriz bidimensional con 2 filas y 3 columnas. Llena todas las ubicaciones en la columna 1 con 1, columnas 2 con 2, columna 3 con 3 y así sucesivamente. Fortran realmente permite el uso de matrices de hasta 7 dimensiones, una característica que rara vez se necesita. Para especificar una matriz tridimensional de precisión extendida b con subíndices que van de 1 a 10, 1 a 20 y 1 a 30, escribiríamos: Ejercicio 5.4 Usando una matriz 4 4 crearemos una matriz de identidad, es decir, una matriz de la forma: y La salida. ¿No sería bueno si realmente pudiéramos mostrar los elementos de la matriz en filas y columnas Al final de esta sección veremos exactamente cómo hacerlo. Formato de su salida Usted puede ahora preguntarse si hay alguna manera de tener un mejor control sobre lo que su salida se parece. Hasta ahora hemos estado usando la opción de salida por defecto que es lo que son los s para las sentencias write e print: Ejercicio 5.5 Copy format. f95, and run it Puede ver que las instrucciones write y format vienen en parejas. Estamos utilizando en este ejemplo a como el dispositivo de salida en otras palabras, la pantalla. La instrucción de formato puede ir a cualquier lugar del programa, pero por convención usualmente los colocamos justo después de la escritura asociada o todos juntos al final del programa. Es sólo una cuestión de gusto. La parte complicada aquí es la especificación. Existen diferentes especificaciones para variables enteras, reales y de caracteres. Integer Especificación Justificada a la derecha m es el número de espacios de caracteres reservados para la impresión (incluyendo el signo si existe) Si el ancho real es menor que m, se imprimen espacios en blanco n es el número de enteros a emitir por línea. Si se omite, se genera un número por línea. Punto flotante Especificación Justificada a la derecha m es el número de espacios de caracteres reservados para la impresión (incluido el signo si existe) y el punto decimal. Si el ancho real es menor que m, se imprimen espacios en blanco n es el número de números reales a emitir por línea. Si se omite, se genera un número por línea. D es el número de espacios reservados para la parte fraccionaria del número llenado con 0 s si se necesitan menos espacios. Si la parte fraccional es demasiado ancha, es redondeada. Si la anchura total para la salida (m) es demasiado pequeña, FORTRAN sólo emitirá s. Esencialmente, haz m agradable y ancho y no tendrás ningún problema Especificación Exponencial Forma general nEm. d Especificación alternativa para emitir d real es el número de decimales m es el ancho total del campo incluyendo el signo (si lo hay), el Carácter E y su signo, el punto decimal y el número de lugares de decimales. Nuevamente haga m agradable y ancho para asegurar que el campo está impreso correctamente. N es el número de números exponenciales a emitir por línea. Si se omite, se genera un número por línea. Ejemplo de especificación de caracteres Forma general n A m n es el número de cadenas a imprimir m es el número máximo de caracteres a emitir Ejemplo: Ejercicio 5.6 Uso de las especificaciones de formato en formato. F95 como una guía, producir una tabla de, para valores de x en incrementos de 0,1. Escriba su salida en un archivo llamado myoutput. Asegúrese de que sus líneas de salida de forma ordenada en columnas. Un programa de ejemplo es neatoutput. f95 está disponible en el sitio web. Implied Do Loop para escribir arrays Hasta ahora, el método que hemos utilizado para la entrada y salida de arrays es: El problema con este método es que las filas y las columnas no se conservan en la salida. Un método alternativo, y neater es utilizar un bucle de hacer implicado en la declaración de la escritura. Ejercicio 5.7 En el ejercicio 5.4 escribiste un programa para producir e identificar la matriz. Aplique lo que sabe sobre el formateo ahora para crear una matriz bien formateada en pantalla. Hay un ejemplo identity1.f95 disponible en el sitio web.
Market Makers vs Agencia Modelo Brokers Obtener Forex comprar / vender señales directamente a su correo electrónico y por SMS. Para saber más haga clic aquí Mucho se ha dicho acerca de estos tipos de negocio de corretaje, pero estamos aquí para mostrarle una opinión sabia, pero impopular. Últimos años Market Makers han sido culpados por todo el mal en el mercado de divisas, ya que estos corredores están esperando realmente un comerciante a perder el dinero. Agencia de corredores modelo, también conocido como A-Book corredores, han sido elogiados como las empresas que prestan servicios a los comerciantes sin ningún tipo de conflicto de intereses. Los recientes acontecimientos del jueves negro han cambiado enormemente la situación, ya que eran en su mayoría agencias de modelos de corredores que han perdido mucho. Como algunos corredores se convirtió en insolvente, la comunidad comercial comenzó a cuestionar si los fabricantes de mercado son en realidad una mala elección. Sigue leyendo pa...
Comments
Post a Comment