Contactos

Listado: lo que es en palabras simples: un análisis completo del concepto. Listado de programas ¿Qué es un listado en programación?

Cita

El código fuente se utiliza para producir código objeto o lo ejecuta el intérprete. Nunca se realizan cambios en el código objeto, solo en el original, seguido de una reconversión al código objeto.

Otro propósito importante del código fuente es como descripción de un programa. Usando el texto del programa, puede restaurar la lógica de su comportamiento. Los comentarios se utilizan para facilitar la comprensión del código fuente. También hay herramientas que le permiten recuperar automáticamente la documentación del código fuente, el llamado. Generadores de documentación.

Además, el código fuente tiene muchos otros usos. Puede utilizarse como herramienta didáctica; Los programadores novatos pueden encontrar útil examinar el código fuente existente para aprender técnicas y metodologías de programación. También se utiliza como herramienta de comunicación entre programadores experimentados debido a su naturaleza (idealmente) concisa e inequívoca. El uso compartido de código entre desarrolladores se suele citar como un factor que contribuye a mejorar la experiencia de programación.

Los programadores a menudo transfieren el código fuente de un proyecto a otro, lo que se denomina reutilización de código ( Reutilización de software).

El código fuente es un componente esencial en el proceso de portar software a otras plataformas. Sin el código fuente de ningún software, la migración es demasiado difícil o imposible.

Organización

El código fuente de alguna parte del software (módulo, componente) puede constar de uno o varios archivos. El código del programa no está escrito necesariamente en un solo lenguaje de programación. Por ejemplo, a menudo los programas escritos en C, con fines de optimización, contienen inserciones de código en lenguaje ensamblador. Las situaciones también son posibles cuando algunos componentes o partes de un programa están escritos en diferentes lenguajes, con posterior ensamblaje en un solo módulo ejecutable utilizando una tecnología conocida como bibliotecas de enlace ( vinculación de biblioteca).

El software complicado requiere decenas o incluso cientos de archivos fuente para su construcción. En tales casos, para simplificar la compilación, generalmente se utilizan archivos de proyecto que describen las dependencias entre los archivos con el código fuente y describen el proceso de compilación. Estos archivos también pueden contener otros parámetros del compilador y del entorno de desarrollo. Los diferentes entornos de diseño pueden usar diferentes archivos de proyecto y, en algunos entornos, estos archivos pueden estar en un formato de texto adecuado para que un programador los edite directamente mediante editores de texto universales, en otros entornos se admiten formatos especiales y los archivos se crean y modifican con herramientas especiales. programas. Los archivos de proyecto se conocen comúnmente como código fuente. En la gran mayoría de los entornos de lenguaje modernos, los archivos de proyecto se utilizan necesariamente, independientemente de la complejidad del otro código fuente incluido en el proyecto. El código fuente a menudo se refiere a archivos de recursos que contienen varios datos, por ejemplo, gráficos necesarios para construir un programa.

Para facilitar el trabajo con el código fuente, para el trabajo conjunto en el código por parte de un equipo de programadores, se utilizan sistemas de control de versiones.

Calidad

A diferencia de los humanos, no existe un código "bien escrito" o "mal escrito" para una computadora. Pero la forma en que se escribe el código puede tener un efecto profundo en el proceso de mantenimiento. La calidad del código fuente se puede juzgar mediante los siguientes parámetros:

  • legibilidad del código (incluida la presencia o ausencia de comentarios sobre el código;
  • facilidad de soporte, prueba, depuración y corrección de errores, modificación y portabilidad;
  • baja complejidad;
  • bajo uso de recursos: memoria, procesador, espacio en disco;
  • el compilador no muestra comentarios;
  • sin "basura": variables no utilizadas, bloques de código inalcanzables, comentarios obsoletos innecesarios, etc.

La lista del programa "demol.c" se muestra en la Fig. 6.7. El programador creará el nombre del programa. Se requiere la extensión ".c". El texto se escribe en el editor "Programmer's Notepad 2" (abreviado PN2), que se incluye en el paquete WinAVR en lugar del shell gráfico. También hace la creación de proyectos, corrección de errores, compilación de programas e incluso programación MK.

Arroz. 6.7. Listado del programa "demol.c".

Arroz. 6.8. Aparición del programa PN2.

El editor PN2 es un proyecto independiente con su propio sitio web. El menú principal de PN2 se muestra en la Fig. 6.8.

Procedimiento.

1.3 Ejecute para la ejecución el archivo "WlnAVR-20100110-install.exe" (29 MB) que se encuentra en el CD-ROM suministrado. Este archivo, si es necesario, se puede descargar gratuitamente de Internet. Instale WlnAVR de forma predeterminada en la carpeta C: \ WinAVR-20100110 \.

2. Abra el editor PN2: "Inicio - Programas - WinAVR-20100110 - Bloc de notas de programadores". Habilitar la numeración de líneas: "Herramientas - Opciones - General - Predeterminado -<поставить «галочку» возле «Show Line Numbers»>- OK".

3. Cree un nuevo archivo C en el editor PN2: "Archivo - Nuevo - C / C ++". Introduzca el texto del programa desde el teclado de acuerdo con la Fig. 6.7 y guárdelo en el disco duro: "Archivo - Guardar como ... -<ввести путь и имя файла, например, для однозначности C:\1001\demol.c>- OK".

En adelante, las capturas de pantalla (capturas de pantalla) se mostrarán solo en los puntos de acción más importantes para ahorrar espacio. El resto de capturas de pantalla en modo paso a paso se pueden ver en los videos tutoriales en el CD adjunto.

Explicaciones para el listado.

La línea 1 comienza con comentarios, que están delimitados a la izquierda por dos líneas oblicuas de barra inclinada hacia adelante. Todo el texto después de los signos "//" puede ser sobre cualquier cosa, en cualquier idioma, con las libertades y abreviaturas. Esta es una información arbitraria que el programador escribe para sí mismo, su amada, para recordar en un mes o dos lo que, de hecho, se discutió. Por lo general, se indican el nombre corto del programa y la autoría.

La línea 2 también contiene comentarios, pero de carácter técnico. Aquí hay un diagrama de circuito para conectar el indicador HL1 y el botón SB1 a líneas específicas de los puertos MK. Los nombres de las señales corresponden al diseño del dashit en MHKpocxeMyATmega48A (Fig. 6.9).

Arroz. 6,9. Diseño de señal MKATmega48A.

La práctica de la descripción textual de diagramas simples en la "cabeza" del programa está muy extendida en la comunidad de programadores que son perezosos para dibujar y aplicar diagramas gráficos, creyendo que "todo está claro de todos modos".

La línea 3 especifica los parámetros del "archivo MAKE". Como referencia, el funcionamiento normal del compilador AVR-GCC es posible con dos archivos necesarios. El primero es el archivo de listado con la extensión ".c", el segundo es el archivo de directiva del sistema "makefile" sin la extensión. El "Makefile" es creado por la utilidad "MFile" (Fig. 6.10, por JoergWunsch, Alemania) incluida en WinAVR.

Arroz. 6.10. La aparición del programa MFile.

Procedimiento.

1. Ejecute la utilidad "MFile" para su ejecución: "Inicio - Programas - WinAVR-2010010 - MFile".

2. Complete los campos de la plantilla de la siguiente manera (Fig. 6.11):

En el ítem "Makefile - Nombre del archivo principal ... - Archivo principal" ingrese el nombre del proyecto que se está desarrollando "demol" y haga clic en Aceptar;

En el elemento "Makefile - Tipo de MCU - ATmega" seleccione MK "atmega48a";

En el elemento "Makefile - Nivel de optimización", establezca el nivel de optimización en "2". Otras posibilidades: "0" - sin optimización, "s" - la longitud mínima de los códigos, los dígitos "1" ... "3" son tres métodos de optimización diferentes, y el número "3" no significa la mejor opción, todo depende del programa C específico ...

No es necesario corregir el resto de las cláusulas de la plantilla "makefile", déjelas que sigan siendo las predeterminadas.

Arroz. 6.11. Cumplimentación de los campos del programa MFile.

Para cada nuevo proyecto y nuevo tipo de MK, debe componer su propio "archivo MAKE", mientras que el nombre del proyecto y el tipo de MK cambiarán.

La línea 4 contiene comentarios que especifican los números hexadecimales de los bytes Low, High y Ext de la configuración. Estos valores serán necesarios más adelante cuando programe los fusibles MK.

С «ктг5 es informativamente vacío. Separa visualmente el texto del comentario del resto del programa. En lugar de una, puede insertar dos líneas en blanco, lo cual no es importante. El punto principal es mejorar la visibilidad. Esto no afecta la longitud de los códigos de firmware MK.

El diseño externo del listado lo inventa el propio programador, basándose en sus propias ideas sobre la belleza de la imagen y la conveniencia de presentar la información. A menudo, por el estilo del encabezado, enumerando líneas y comentarios, se puede identificar al autor del programa o componer su retrato psicológico. En la monografía de Alain Golub se dan notas interesantes sobre este tema.

La línea 6 es servida por el preprocesador del compilador. Esta no es una declaración de C ni un comentario. El nombre es complejo, pero el significado es simple. El preprocesador (preprocesador) busca en el programa las líneas que comienzan con el carácter "#". Además, dependiendo de la palabra clave, realiza una determinada acción, por ejemplo, "definir" - asigna valores a las constantes, "si está definido" - verifica una condición, "inC1ude" - conecta una biblioteca de funciones, etc.

Para un primer conocimiento, basta con saber que una biblioteca de funciones es un conjunto de archivos que contienen textos de procedimientos estándar o que se repiten con frecuencia. En este caso, la directiva "# inC1ude" (traducida del inglés. "Incluir") activa la biblioteca del sistema "avr / io.h", que es responsable del funcionamiento de los puertos de E / S. Esta biblioteca tiene un nombre diferente en diferentes compiladores, pero la esencia es la misma, sin ella no puede controlar ninguna línea de puertos MK. Por lo tanto, la conexión de la biblioteca de E / S es obligatoria para todos los programas C del microcontrolador.

La línea 7 también es procesada por el preprocesador del compilador, pero tiene la palabra clave "define". Por lo tanto, declara una constante INI y le asigna un valor constante de 255. Los comentarios indican la conversión de 255 a hexadecimal 0xFF y binario 0bl 1111111. La diferencia entre ellos radica en las letras "x" y "b" después del dígito obligatorio "0". La correspondencia de números en diferentes sistemas se da en la Tabla. 6.3.

Cuadro 6.3. Conversión de números de hexadecimal a binario y viceversa

Si la constante INI se encuentra en algún lugar del "cuerpo" del programa, entonces el compilador, sin dudarlo, sustituye el valor numérico especificado en la línea 7, es decir, 255. Esto es muy conveniente para los programadores cuando corrigen listados grandes, cuando las constantes están dispersas por el texto. Además, el mismo nombre de la constante puede tener una carga semántica y servir como pista verbal. En particular, INI es una abreviatura de la palabra inglesa "initialization", que significa un valor inicial.

La importancia de colocar la constante en el "encabezado" del programa radica en la simplicidad de su búsqueda y la rapidez en la realización de cambios. Por ejemplo, habiendo corregido el número "255" una vez, puede estar seguro de que en todas partes del texto se introducirá automáticamente (¡y sin errores!) A través de la constante lNI.

Al programador se le ocurre el nombre de la constante basándose en el sentido común y la preferencia humana. Según una larga tradición, los nombres de las constantes se escriben en mayúsculas. El primero del nombre debe ser una letra, por ejemplo, I2CBUS, T34. El cirílico no está permitido.

La declaración de la constante INI podría escribirse de dos formas más equivalentes: "#define INI OxFF" o "#define INI Obl 1111111".

La línea 8 contiene el operador que describe la variable "a". Una variable se puede representar en sentido figurado como una caja (caja, caja, estuche de lápices), donde se almacenan una serie de elementos (cuentas, granos, fósforos). Para que las "cajas" sean diferentes entre sí, se marcan con diferentes inscripciones en el estuche, en este caso la letra "a". Si no se especifica el número inicial en la descripción de la variable, entonces se considera que la "caja" está vacía y se inicializa con cero (a = 0). En el transcurso del programa, puede agregar elementos al "cuadro" y eliminarlos, es decir, aumentar y disminuir el valor de una variable.

El volumen de la "caja" depende de su declaración original. Mesa. 6.4 muestra los límites aceptados en el compilador AVR-GCC. Como puede ver, la declaración "unsigned char" le permite poner 255 elementos en la "caja". Junto con el valor cero ("caja" vacía) habrá un total de 256 estados o 256 bytes. La variable con la declaración "unsigned long" ya no es como un ataúd, sino como un tren completo, que está diseñado para 4.200 millones de artículos.

Cuadro 6.4. Dimensión de variables adoptadas en АУК-ВСС

Dado que MK no ha desarrollado herramientas para trabajar con números negativos, al principio, para no confundirse, es mejor usar solo números positivos en los programas, es decir, que contiene una declaración "sin firmar".

Los "padres-comandantes" de la lengua Desde la antigüedad, han establecido un orden tácito, según el cual el nombre de una variable no debe tener más de 8 caracteres. En el compilador AVR-GCC, esta regla se ignora y la variable puede contener tantos caracteres como desee, pero sin fanatismo. Lo único es que la primera letra del nombre debe ser necesariamente la letra del alfabeto latino, puede ir seguida de letras, números, símbolos. El cirílico no está permitido.

Una variable, a diferencia de una constante, contiene algún número de variable (no una constante). Para distinguir las variables de las constantes, se escriben en minúsculas. Por lo general, intentan que el nombre coincida con el significado, por ejemplo, "cuenta" para un contador, "datos" para datos, "retraso" para un retraso. Aunque a veces las variables de una letra son más simples, más familiares y más compactas, bien conocidas por el álgebra escolar, mira a, b, c, d, i, j, k, x, y, z.

El programador determina qué dimensión especificar para una variable en particular. Dado que la variable "a" en este listado es un repositorio para recopilar información del puerto digital de 8 bits "C", significa que debe contener "dos a la octava potencia" bytes, es decir, de 0 a 255.

Es interesante que el compilador no genera un error si se juega a lo seguro y declara la variable con un margen como "unsigned long a;". Es cierto que esto conduce a un aumento innecesario del tamaño del código de 114 a 126 bytes y, en consecuencia, a una ligera disminución de la velocidad de ejecución del programa.

El otro extremo es la subestimación de la dimensión, cuando, por ejemplo, en lugar de declarar "unsigned int", se utiliza "unsigned char". Si ingresa un número mayor que 255 en dicha variable, solo se guardará el resto de la división por 256 y la parte inicial se perderá irremediablemente. En sentido figurado, los objetos se extraen de la "caja". El compilador no reacciona a tales errores, asumiendo que el programador está en un estado adecuado y comprende lo que está haciendo. La determinación correcta y sin errores de la dimensión de las variables suele venir con la experiencia.

La línea 9 está vacía para información, similar a la línea 5. Si insertarla en la lista depende de la voluntad del programador.

La línea 10 está llena de comentarios, pero para variar, tienen un formato diferente. Es decir, el texto está subrayado en el lado izquierdo con los caracteres "/ *", y en el lado derecho, con los caracteres "* /". Este estilo se origina en las versiones más antiguas del lenguaje C. Posteriormente, se utilizaron los símbolos "//" en los comentarios, que es típico del lenguaje C ++. En WinAVR, ambas opciones tienen el mismo derecho a existir. La "nueva" ortografía es más simple y clara, y la "vieja" en algunos lugares es la única posible si quieres comentar el comienzo del operador.

La línea 11 contiene una llamada típica a la función "principal" de acuerdo con las reglas del American National Standards Institute (ANSI). Se permiten expresiones abreviadas, pero no se recomiendan: "int main ()", "main ()", "main (void)". A veces incluso escriben "void main (void)", enfatizando la ausencia total de parámetros recibidos y pasados. Para MK simples que no son compatibles con sistemas operativos en tiempo real, no habrá consecuencias negativas. Sin embargo, si piensa en el futuro, es mejor memorizar inmediatamente la forma completa de escritura, lo que facilitará en el futuro la transferencia de programas en C a plataformas de microcontroladores más modernas.

La línea 12 pasa por debajo de la primera llave abierta. No fue por casualidad que le concedieran tal honor. El compilador de C, al ejecutar la línea 12, realiza la inicialización inicial de los registros MK, la instalación de la pila y la asignación del espacio de direcciones. No es necesario aprender la mecánica de este proceso de joyería (¡a diferencia de los programas de Assembler!).

Para un programador, lo principal es aprender correctamente dos cosas que son producidas automáticamente por el compilador incluido en WinAVR:

Al inicio del programa, todas las interrupciones están deshabilitadas;

Todas las líneas de puerto MK están configuradas como entradas sin resistencias pull-up.

Línea 13. Finalmente, el primer comando de programa ejecutable apareció en forma de declaración de asignación. Explicación de símbolos:

“DDRB” es el nombre convencional del registro DDR de ocho bits del puerto “B”;

"=" - signo de escritura de datos en el registro DDRB;

"ОЬ": una indicación de que los siguientes 8 dígitos estarán en código binario;

"11111111": los bits del número binario escritos en el registro DDRB, dispuestos en el orden 7, 6, 5, 4, 3, 2, 1, 0 (el bit más significativo a la izquierda, el bit menos significativo a la izquierda derecho).

Como resultado de ejecutar este operador, todas las líneas del puerto "B" se establecen en el modo de salida, ya que todos los dígitos contienen unidades.

La declaración de la línea 13 tiene dos espacios desde la izquierda. Esta es una convención de formato de texto a la que se adhieren muchos programadores. El compilador "guardará silencio" si comienza el texto en la primera o séptima columna desde la izquierda, como desee. Solo hay una recomendación: "La lista de un programa en C debería ser fácil de ver". A continuación, en el futuro, todos los textos se formatearán de modo que las llaves se ubiquen en columnas impares verticalmente (1, 3, 5, etc.), y en cada columna solo habrá una apertura en la parte superior y una cerradura curvada. tirantes en la parte inferior.

El orden especificado no es un dogma, sino una forma de acortar la lista en ancho y largo sin pérdida de contenido de información. Un programador "en casa", en sus listados, tiene derecho a ingresar cualquier número de espacios, líneas en blanco, etc.

La línea / 4 actúa junto con la línea 13, ya que el estado específico de la línea del puerto en los controladores AVR está determinado por un grupo de dos registros DDRx y PORTx, donde "x" es la letra ordinal del puerto, por ejemplo, B, C o D. Considerando que cada registro contiene 8 bits con números del 0 al 7 (condicionalmente "z"), entonces el diseño general a lo largo de las líneas del puerto es el siguiente:

DDRx.z = 1, PORTx.z = 1 - Salida de nivel ALTO;

DDRx.z = 1, PORTx.z = 0 - Salida BAJA;

DDRx.z = 0, PORTx.z = 1 - entrada con una resistencia "pull-up";

DDRx.z = 0, PORTx.z = 0 - entrada sin resistencia pull-up.

Resumiendo las líneas 13 y 14: DDRB.0 ... DDRB.7 = 1, PORTB.O = 0, PORTB.l = 1, PORTB.2 ... PORTB.7 = 0, por lo tanto, líneas 0, 2 .. .7 del puerto "B" se configurará como salidas BAJAS y la línea 1 como ALTA. Dado que el indicador HL1 está conectado a la línea PB1 (pin 15 del microcircuito DD1 en la Fig. 6.3), se apagará. Resulta que la parte inicial de la tarea técnica se completó con éxito.

Las líneas 15, 16 son similares a las líneas 13, 14, pero para el puerto "C". Para variar, se utiliza la sustitución constante lNI. Después de ejecutar las líneas 15 y 16, todas las líneas del puerto "C", incluso aquellas que no están directamente involucradas en el trabajo, se configurarán como entradas con resistencias "pull-up". Esta es una técnica estándar para inicializar puertos para activar las resistencias pull-up internas que evitan que las entradas CMOS de la línea MCU cuelguen en el aire y eliminen todo tipo de ruido y rutas de captación.

La línea 17 es similar a las líneas 13, 14 y 15, 16, pero para el puerto "D". No se usa en absoluto en el circuito eléctrico, pero debe tomarlo como regla: inicializar todos los puertos sin excepción al comienzo del programa. Sus líneas inactivas deben configurarse como entradas de resistencia pull-up o como salidas HIGH / LOW. En el futuro, dicho automatismo permitirá evitar colisiones y malentendidos.

Una característica especial es la asignación del registro PORTD al valor previamente asignado en la línea 13 al registro DDRB, es decir el número binario Obl 1111111. Esto se hizo con fines educativos, porque podría haber sido más fácil: "PORTD = OxFF;".

Otro detalle es la falta de escritura en el registro DDRD. Esto no es un error tipográfico, sino una reducción deliberada del listado en una línea, ya que cuando se enciende la energía, de acuerdo con la hoja de datos, todos los registros DDRx, PORTx se llenan automáticamente con ceros, es decir, no es necesario borrar adicionalmente el registro DDRD.

La línea 18 contiene la instrucción de bucle "while". Para el primer conocido, es suficiente recordar que la expresión "while (1)" significa la ejecución secuencial de declaraciones en las líneas 19 ... 21 en un bucle infinito.

La línea 19 contiene un paréntesis abierto y una declaración de asignación. Esta combinación está permitida por las reglas del lenguaje C, lo que hace que el listado sea más compacto en altura.

Después de ejecutar la línea 19, la variable "a" almacenará el byte de estado de las ocho líneas del puerto "C", que se leyó del registro PINC. Si no se presiona el botón SB1, entonces "a = OxFF", y si se presiona, entonces "a = OxFE".

La línea 20 desplaza el contenido de la variable "a" un bit a la izquierda. Hay dos opciones posibles: si "a" era OxFF anterior, se convertirá en OxFE, y si era OxFE, se convertirá en OxFD. Por qué se hace esto, la siguiente línea del programa le dirá.

La línea 21 contiene el operador de asignación, pero, en comparación con la línea 19, la variable "a" y el registro de puerto están invertidos. En el lenguaje C, tal enroque da como resultado el reemplazo de una operación de lectura desde un puerto por una operación de escritura en un puerto. En total, el código 0xFE (si no se presiona el botón SB1) o el código 0xFD (si se presiona el botón SB1) se enviará al puerto "B". En el primer caso, el indicador HL1 se apagará, en el segundo se iluminará, lo que se requería lograr de acuerdo con los términos de referencia.

Las líneas 22, 23 contienen llaves de cierre. Si dibuja mentalmente de ellos dos líneas verticales "de abajo hacia arriba", entonces apuntarán directamente al paréntesis de apertura en las líneas 19 y 12. El paréntesis en la línea 22 indica una repetición de bucle en las líneas 19 ... 21. El paréntesis de la línea 23 comienza en la primera posición desde la izquierda, por lo que se ha llegado al final de la función "principal" y, por lo tanto, al programa principal.

La línea 24 contiene comentarios sobre el número de versión de WinAVR y la longitud de los códigos de firmware, lo cual es muy útil cuando otros usuarios compilan el programa. Se sabe que las versiones de WinAVR no son 100% compatibles entre sí, por lo que existen ejemplos ilustrativos. En consecuencia, la longitud del código compilado de la misma lista puede diferir de una versión a otra. La conclusión práctica es que primero debe compilar el programa con el paquete WinAVR indicado en la línea 24, y solo entonces en una versión anterior o más reciente, verificando la longitud del código recibido como una suma de verificación.

El lector atento tiene derecho a notar que en la etapa de compilación de la lista del programa C, era imposible calcular de antemano cuánto ocupan los códigos en la memoria MK. Para ser honesto, la inscripción "114 bytes (2.8%)" se agregó más tarde, después de que se compiló el programa. Hay un claro ejemplo de la propia retroalimentación, que en el diagrama estructural de la Fig. 6.1 se indica mediante una línea de puntos entre los bloques "K" y "L".

La línea 25 está completamente en blanco, pero a diferencia de las líneas 5 y 9, marca el final físico de la lista. Sin esta línea de terminación, el compilador emite una advertencia leve, pero aún así: "Advertencia: no hay nueva línea al final del archivo".

Antes de que una moneda de valor o criptomoneda esté disponible para los comerciantes en los pisos de negociación, debe pasar por un complejo proceso de selección y figurar en la lista. Analicemos en palabras simples qué es una cotización en una bolsa - tanto en stock como en criptomonedas, cuáles son las principales etapas que se deben pasar para estar en la lista, los principales beneficios que recibe la empresa en este caso, qué es la esencia de la exclusión de la lista.

Que es el listado

El concepto de listado se encuentra en diferentes áreas de nuestra vida:

  • Bolsas de acciones y criptomonedas- serán el tema de este artículo. Se trata de agregar valores o monedas criptográficas a las listas de plataformas comerciales.
  • En comercio- esto implica la adición de productos de un fabricante u otro al surtido de la tienda.
  • En programación- este es el código fuente (texto) del programa, que se traduce a código ejecutable mediante el compilador.
  • En el sector inmobiliario- aquí se firman contratos de cotización entre el dueño de la propiedad y el agente de ventas que la vende por una comisión.

No consideraremos las dos últimas industrias. Estamos interesados ​​en cotizar en, así como en criptomonedas.

Cotización y exclusión de valores

Listado apareció en nuestro léxico de la lista de palabras, que se traduce del inglés como "lista". La cotización de valores en la bolsa de valores es el procedimiento para agregar acciones, bonos de empresas a la lista de instrumentos que se cotizan en la plataforma. Después de eso, estarán disponibles para comprar y vender en él.

Una vez superado el procedimiento de cotización, los valores se incluyen en la lista de negociación de la bolsa.

A menudo, los participantes del mercado llaman a la lista en sí misma una lista. Además, cada sitio tiene su propia lista.

El iniciador de la cotización suele ser la empresa emisora, pero en casos excepcionales, el intercambio en sí puede expresar el deseo de incluir ciertos valores en su lista, si ya tienen una gran demanda entre los comerciantes a través de canales informales.

Para las empresas, cotizar en bolsa tiene una gran cantidad de ventajas, por lo que no es de extrañar que las empresas hagan un gran esfuerzo para pasar por este procedimiento.

Es importante no confundir una cotización en bolsa con una oferta pública inicial. En el primer caso, la empresa busca entrar en la lista de cotizaciones de una determinada plataforma de negociación. Una OPI implica que la empresa se convierte en una empresa pública y sus valores se ponen a disposición de los inversores no solo a través, sino también a través de otros canales, por ejemplo, a través de sus sucursales.

Listado de etapas

El procedimiento de cotización prevé varias etapas por las que debe pasar la empresa emisora ​​antes de que sus valores estén disponibles para los inversores.

  1. Todo comienza con la presentación de una solicitud. Esto puede hacerlo tanto el propio emisor como una persona que represente los intereses de la empresa.
  2. Luego viene la etapa de exámenes. Los representantes de la bolsa analizan tanto los valores como todos los datos disponibles sobre la empresa. Se investiga la rentabilidad de la empresa y la liquidez de sus activos. La empresa debe proporcionar todos los estados financieros recopilados durante los últimos años.
  3. Una comisión especial considera los resultados de los exámenes y decide agregar valores a su cotización o rechazar la solicitud.
  4. Si la decisión es positiva, ambas partes, la empresa y el intercambio, concluyen un acuerdo.

El procedimiento dura de 1 a 2 meses en promedio. Para permanecer en la lista, el emisor, por regla general, deberá enviar los datos requeridos al intercambio una vez por trimestre.

Las reglas de cotización que aplican los pisos de negociación a las empresas varían. Algunos solo pueden admitir cotizar empresas cuya capitalización sea de al menos 50 millones de dólares, y el tiempo de su presencia en el mercado sea de al menos 3 años. Otros pueden subir o bajar el listón para estos y otros requisitos.

Si no se cumplen todas las condiciones, pero los valores son de interés para el intercambio, obtienen una lista preliminar de valores, también se llama pre-listado... Los inversores también pueden negociar estas acciones, sin embargo, fuera de los muros de la bolsa y el piso de negociación, no son responsables de ellas.

Niveles de listado

En su mayoría, hay varios niveles de cotización en los intercambios. Primero prima Se incluyen los valores más líquidos y con un alto nivel de fiabilidad.

A empresas segundo nivel los requisitos no son tan altos. Y el más bajo para las empresas que solicitan el tercero, el llamado lista sin comillas... Los inversores que compren valores de empresas de este nivel deben analizar cuidadosamente su fiabilidad por su cuenta.

Por ejemplo, los sitios principal y alternativo son válidos para. El primero se divide en dos niveles: "Estándar" y "Premium". El mercado alternativo está destinado a las pequeñas y medianas empresas en desarrollo que son admitidas aquí mediante un procedimiento simplificado.

De vez en cuando, las plataformas pueden subir o viceversa los niveles de cotización de bonos, acciones o incluso eliminarlos por completo.

Tipos de listado

Distinga entre listado primario y secundario.

Listado principal implica que las acciones están disponibles para los inversores en el piso de intercambio dentro del país donde está registrada la empresa.

En listado secundario los papeles se llevan a los mercados internacionales y se incluyen en las listas de plataformas extranjeras. Esto solo se puede hacer si se ha pasado la etapa de listado inicial.

Todavía hay listado doble, en el que la empresa busca constantemente entrar en las listas de cotización de varios pisos de negociación de su país de origen.

Así como también listado cruzado- en este caso, la empresa envía aplicaciones para ser agregadas a las listas de varias plataformas de intercambio en diferentes países. Además, si uno de ellos aprueba la incorporación de valores, el otro tiene la oportunidad de completar el procedimiento de cotización según un esquema simplificado. Esto reduce no solo los costos de material, sino también el tiempo de consideración de la aplicación.

Cuáles son las ventajas del emisor

No en vano las empresas se esfuerzan por cotizar en bolsa, ya que esto les promete una serie de beneficios. Primero, aumenta su atractivo de inversión y, como resultado, es más fácil atraer fondos para un mayor desarrollo. Las ventajas también incluyen:

  • crecimiento de la capitalización de la empresa con un aumento de la demanda de valores emitidos;
  • aumentar la visibilidad y la confianza en la comunidad empresarial;
  • aumentar la liquidez de acciones, bonos;
  • la capacidad de agregar a las listas de divisas;
  • en algunos casos, puede solicitar beneficios fiscales.

Sin embargo, no olvide que a partir de ahora las actividades de la empresa recibirán una mayor atención y cualquier acción afectará instantáneamente el valor de las acciones. Además, el procedimiento de cotización no es gratuito. Todos los exámenes de expertos cuestan dinero.

¿Qué les da a los inversores?

Lo principal es la confianza. Los inversores, que invierten en acciones de la empresa, saben que su fiabilidad ha sido verificada por profesionales. Su presencia en la cotización de la bolsa los salva de controles independientes de la fiabilidad de la empresa.

¿Qué es la exclusión de la lista?

Si los valores están incluidos en la lista de cotización del intercambio, no hay garantía de que permanecerán allí para siempre. Bajo ciertas condiciones, el sitio puede eliminarlos. Esto sucede en el caso, por ejemplo, si el emisor deja de cumplir con las condiciones del canje, no cumple con sus obligaciones, se declara en quiebra, etc.

Además, el precio de la acción, que no crece con el tiempo, puede llevar a la exclusión de la lista, lo que indica una baja demanda. Sucede que el iniciador de la exclusión de la lista es la propia empresa, por ejemplo, en una fusión de empresas.

Listado de criptomonedas

El listado también se discute a menudo en el entorno de las criptomonedas. Aquí, las monedas o tokens digitales tienden a aparecer en la lista de operaciones de las plataformas de intercambio.

Los proyectos de criptomonedas se esfuerzan por ingresar a las listas de intercambios populares

Los requisitos para cotizar en los intercambios de cifrado varían. Es mucho más difícil llegar a grandes sitios conocidos que a pequeños. Por lo tanto, la mayoría de los proyectos comienzan con pequeñas plataformas comerciales.

El precio de la emisión

Uno de los principales problemas es el costo. . Los intercambios poco conocidos pueden agregar criptomonedas a la lista de forma gratuita. Entrar en las listas de plataformas conocidas puede costar miles, o incluso decenas de miles de dólares: se toma dinero para analizar una moneda antes de cotizarla. Sin embargo, existen excepciones.

Binance, por ejemplo, anunció este otoño que las tarifas de cotización se destinarán a la financiación de proyectos caritativos. Al mismo tiempo, no hay precios fijos: los propios desarrolladores determinan cuánto quieren pagar por el anuncio. La gerencia de Poloniex afirma que no toma dinero para la cotización en absoluto.

A principios de año, los periodistas de Business Insider publicaron un artículo según el cual el umbral mínimo para listar intercambios de criptomonedas para proyectos ICO es de 50.000 dólares y, en algunos casos, puede llegar a 1 millón de dólares.

También hubo casos en que la administración de los intercambios encontró sobornos para la inclusión de monedas en el listado. Un ejemplo es el intercambio Coinnest: sus directores operativos y técnicos recibieron alrededor de 890 mil dólares para agregar la criptomoneda S-coin a la lista de negociación.

Cómo funciona

Para que se incluya un token, la mayoría de las veces en el sitio seleccionado, debe enviar una solicitud y completar un cuestionario. Sin embargo, las monedas populares del intercambio se pueden incluir en la lista por sí mismas, sin esperar a que el equipo del proyecto se ofrezca a hacerlo. Por ejemplo, bitcoin (BTC) es obligatorio en todos los intercambios y, como regla, Ethereum (ETH).

¿Qué preguntas se encuentran con más frecuencia en el cuestionario?

  • nombre y descripción de la moneda;
  • la fecha de lanzamiento de la red principal, así como la propia plataforma;
  • enlace a Github;
  • enlace al Libro Blanco del proyecto;
  • enlaces a redes sociales;
  • si hay minería en la red y si hubo minería previa;
  • emisión máxima de monedas, etc.

A menudo, los intercambios también realizan concursos entre sus usuarios: votan por las criptomonedas propuestas y la moneda ganadora se agrega a la lista de cotizaciones.

Huobi Global lanzó una plataforma automatizada de listado de criptomonedas a fines del verano de 2018. Con su ayuda, el intercambio tiene la intención de acelerar el proceso de agregar tokens a la lista de operaciones y hacerlo transparente.

Matices importantes

Lo primero que miran los intercambios es el valor de la moneda, su utilidad para la comunidad. En segundo lugar está la seguridad del proyecto, porque si la red de cifrado es pirateada, el intercambio también se verá afectado. Seguro que estarán interesados ​​en la profesionalidad, así como en la reputación del equipo.

Por ejemplo, en Bittrex hay una etapa preliminar de consideración de una aplicación y una en profundidad. Si los especialistas de la compañía consideran en la etapa preliminar que la moneda merece ser incluida en el intercambio, comienza un estudio exhaustivo de sus características técnicas, capacidades innovadoras y cumplimiento de los requisitos de la plataforma.

Monedas que pueden reconocerse como valores, los intercambios intentan no agregar... Por ejemplo, Poloniex invita inmediatamente a los desarrolladores a familiarizarse con la prueba de Howie para determinar si un token puede cumplir con estos criterios o no.

La excepción entre las principales plataformas es el intercambio Coinbase, que ha recibido la aprobación regulatoria adecuada y puede operar oficialmente tokens que tienen propiedades de valores.

Curiosamente, si un activo contradice las leyes de un país en particular, es posible que no esté disponible para los usuarios de determinadas jurisdicciones.

"Efecto de los intercambios"

Después de agregar intercambios de cifrado populares a los listados, el costo de las monedas, por regla general, aumenta drásticamente, en un promedio del 25-30%. Este patrón incluso se ha denominado "efecto de bolsa". Esto sucede debido al hecho de que más usuarios aprenden sobre la moneda, se vuelve reconocible y aumenta la demanda. Sin embargo, la mayoría de las veces este despegue es de corta duración y pronto el costo comienza a disminuir.

También hay situaciones en las que el precio de los tokens después de ingresar a las listas comerciales de intercambios, por el contrario, cae. Esto sucede con mayor frecuencia cuando el proyecto se enumera inmediatamente después, y los inversores que invirtieron durante la venta del token tienden a ganar dinero extra en la moneda más rápido, fusionándola activamente en el intercambio.

Las criptomonedas se eliminan de la lista por varias razones:

  • bajo interés de los comerciantes;
  • cambios en la legislación;
  • piratear la cadena de bloques de la red criptográfica;
  • negativa de los desarrolladores a seguir apoyando la moneda;
  • quejas de los usuarios.

Los tokens generalmente no se eliminan de inmediato: el intercambio les da a los comerciantes varias semanas para cerrar posiciones y retirar fondos a sus propias billeteras.

Listado en comercio

El concepto de cotización también está presente en el ámbito comercial. Cuando un proveedor desea que sus productos se vendan, por ejemplo, en los estantes de una gran cadena minorista, primero debe ponerse de acuerdo con la dirección de la empresa para agregar su producto a la lista.

Si el producto no tiene demanda entre los compradores, también puede pasar por el procedimiento de exclusión de la lista, en cuyo caso desaparece de los estantes de las tiendas.

Al compilar el programa, puede establecer el parámetro "l" (listado):

Luego, además del archivo con el código objeto suma. obj, una suma de lista de archivos. lst:

  • 1; suma. asm - un programa que calcula S = A + B
  • 2 0000 segmento de datos
  • 3 0000 0001 a dw 01h
  • 4 0002 0002 b dw 02h
  • 5 0004 ???? s dw?
  • 6.0006 datos terminan
  • 7 0000 segmento de código
  • 8 asumir ds: datos
  • 9 0000 BA 0000s comienzan: mov dx, data
  • 100003 8E DA mov ds, dx
  • 11 0005 A1 0000r mov eje, a
  • 12 0008 03 06 0002r añadir eje, b
  • 13 000C A3 0004r mov s, hacha
  • 14 000F B8 4C00 mov hacha, 4C00h
  • 15 0012 CD 21 int 21h
  • 16 0014 codeends
  • 17 fincomienzo

El listado es una tabla que contiene cuatro columnas:

    Número de línea.

    Una dirección dentro de un segmento, es decir, desde su inicio (desplazamiento).

    El contenido de la memoria en estas direcciones. En el segmento de datos, estos son los valores de las variables, en el segmento de código, estos son códigos de máquina de instrucciones.

    Código de ensamblador.

Los comentarios de la lista también se guardan, solo se omiten aquí para ahorrar espacio.

En la lista puede ver que solo las líneas 9-15 corresponden a los comandos del procesador. El resto de líneas corresponden a las denominadas. directivas de montaje.

En cualquier caso, aparece información de varios niveles. Hay información directamente sobre la tarea y hay información sobre la información: metainformación. Estas son, por ejemplo, varias explicaciones, instrucciones, etc. Hay dos tipos de información en el código fuente del lenguaje ensamblador:

    comandos: información para el procesador;

    directivas: información para el propio ensamblador, cómo compilar el programa: cómo traducir las instrucciones al lenguaje de máquina y cómo colocar los datos.

Aquí hay una analogía con el resaltado de los tipos de comandos. Los comandos de transferencia de datos, las transferencias de control y los comandos aritmético-lógicos transportan información sobre la tarea y los comandos de control de la máquina, sobre las condiciones para su ejecución, es decir, también representan metainformación.

El programa en consideración contiene las siguientes directivas:

    segmento - directiva para declarar el comienzo de un segmento;

    dw (definir palabra) es una directiva de 16 bits para la definición de datos (asignación e inicialización de un área de memoria);

    extremos (segmento final) - directiva para declarar el final del segmento;

    asumir - directiva para asignar un registro de segmento a un segmento;

    end - directiva para indicar el final del programa, su argumento debe ser la etiqueta del primer comando del programa - el punto de entrada al programa.

También existen las siguientes directivas de definición de datos:

    db (define byte) - directiva para definir un área de memoria en 8 bits;

    dd (definir palabra doble) es una directiva para definir un área de memoria de 32 bits.

Hay directivas precedidas de un punto. De este tipo de directivas, solo necesitamos directivas para especificar el conjunto de instrucciones utilizado para un modelo de procesador en particular, por ejemplo:

    386: se utilizan comandos que no son del sistema del procesador i80386;

    386p: se utilizan todos los comandos del procesador i80386, incluidos los del sistema.

Las líneas 3-5 contienen las directivas para definir las variables A, B y S. En conjunto, las líneas 3-5 y 9-15 contienen información para el procesador, un programa que incluye instrucciones y datos. Se asignan directamente a la memoria de la computadora.

Eso puede ser leído por humanos. En un sentido generalizado, cualquier dato de entrada para un traductor. El código fuente está traducido a código ejecutable completamente antes de que el programa se ejecute usando el compilador, o se puede ejecutar inmediatamente usando el intérprete.

Cita

El código fuente se utiliza para producir código objeto o lo ejecuta el intérprete. Los cambios se realizan solo en el original, seguidos de la reconversión a objeto.

Otro propósito importante del código fuente es como descripción de un programa. Usando el texto del programa, puede restaurar la lógica de su comportamiento. Los comentarios se utilizan para facilitar la comprensión del código fuente. También hay herramientas que le permiten recuperar automáticamente la documentación del código fuente, el llamado. Generadores de documentación.

Además, el código fuente tiene muchos otros usos. Puede utilizarse como herramienta didáctica; Los programadores novatos pueden encontrar útil examinar el código fuente existente para aprender técnicas y metodologías de programación. También se utiliza como herramienta de comunicación entre programadores experimentados debido a su naturaleza concisa e inequívoca. El uso compartido de código entre desarrolladores se suele citar como un factor que contribuye a mejorar la experiencia de programación.

Los programadores a menudo transfieren el código fuente (como módulos, tal cual o con adaptación) de un proyecto a otro. A esto se le llama reutilización de código.

El código fuente es un componente esencial en el proceso de portar software a otras plataformas. La portabilidad es demasiado difícil o imposible sin el código fuente de cualquier software.

Organización

El código fuente de alguna parte del software (módulo, componente) puede constar de uno o varios archivos. El código del programa no está escrito necesariamente en un solo lenguaje de programación. Por ejemplo, los programas en C a menudo contienen inserciones en lenguaje ensamblador por razones de optimización. Las situaciones también son posibles cuando algunos componentes o partes de un programa están escritos en diferentes lenguajes, con posterior ensamblaje en un solo módulo ejecutable utilizando una tecnología conocida como bibliotecas de enlace ( vinculación de biblioteca).

El software complicado requiere decenas o incluso cientos de archivos fuente para su construcción. En tales casos, para simplificar la compilación, generalmente se utilizan archivos de proyecto, que describen las dependencias entre los archivos con el código fuente y describen el proceso de compilación. Estos archivos también pueden contener opciones para el compilador y el entorno de diseño. Para diferentes entornos de diseño, se pueden usar diferentes archivos de proyecto y, en algunos entornos, estos archivos pueden estar en un formato de texto adecuado para que un programador los edite directamente usando editores de texto universales, en otros entornos se admiten formatos especiales y los archivos se crean y modifican utilizando programas instrumentales especiales. Los archivos de proyecto se conocen comúnmente como código fuente. El código fuente a menudo se refiere a archivos de recursos que contienen varios datos, por ejemplo, gráficos necesarios para construir un programa.

Los sistemas de control de versiones se utilizan para facilitar el trabajo con el código fuente y la colaboración en el código por parte de un equipo de programadores.

Calidad

A diferencia de los humanos, no existe un código "bien escrito" o "mal escrito" para una computadora. Pero la forma en que se escribe el código puede tener un efecto profundo en el proceso de mantenimiento. La calidad del código fuente se puede juzgar mediante los siguientes parámetros:

  • legibilidad del código (incluida la presencia de comentarios sobre el código);
  • facilidad de soporte, prueba, depuración y corrección de errores, modificación y portabilidad;
  • uso económico de recursos: memoria, procesador, espacio en disco;
  • el compilador no muestra comentarios;
  • sin "basura" - variables no utilizadas, bloques de código inalcanzables, comentarios obsoletos innecesarios, etc.;
  • manejo adecuado de errores;
  • la capacidad de internacionalizar la interfaz.

Código fuente no ejecutable

Las licencias de software libre con copyleft requieren la distribución del código fuente. Estas licencias también se utilizan a menudo para trabajos que no son de software, como documentación, imágenes, archivos de datos para juegos de computadora.

En tales casos, el código fuente se considera la forma preferida del trabajo para su edición. También puede denominarse versión "transparente" en las licencias que no sean software. Esto podría ser, por ejemplo:

  • para un archivo comprimido con pérdida de datos - versión sin pérdida;
  • para renderizar una imagen vectorial o un modelo tridimensional: la versión vectorial y el modelo, respectivamente;
  • para texto de imagen: el mismo texto en formato de texto;
  • para música: un archivo en el formato interno del editor de música;
  • y finalmente, el archivo en sí, si cumple las condiciones especificadas, o si simplemente no existía una versión más conveniente.

ver también



¿Te gustó el artículo? Compártelo