Liste du programme. Listing - ce que c'est en termes simples : une analyse complète du concept. Cours, rapport sur la pratique du premier cycle

La liste du programme "demol.c" est illustrée à la Fig. 6.7. Le programmeur viendra avec le nom du programme. L'extension ".c" est requise. Le texte est tapé dans l'éditeur "Programmer's Notepad 2" (en abrégé PN2), qui est inclus dans le package WinAVR à la place du shell graphique. Il permet également la création de projets, la correction d'erreurs, la compilation de programmes et même la programmation MK.

Riz. 6.7. Référencement du programme "demol.c".

Riz. 6.8. Apparition du programme PN2.

L'éditeur PN2 est un projet indépendant avec son propre site internet. Le menu principal du PN2 est illustré à la Fig. 6.8.

Procédure.

1.3 Exécutez pour exécution le fichier "WlnAVR-20100110-install.exe" (29 Mo) situé sur le CD-ROM joint. Ce fichier peut être librement téléchargé sur Internet, si nécessaire. Installez WlnAVR par défaut dans le dossier C:\WinAVR-20100110\.

2. Ouvrez l'éditeur PN2 : "Démarrer - Programmes - WinAVR-20100110 - Bloc-notes des programmeurs". Activer la numérotation des lignes : "Outils - Options - Général - Par défaut -<поставить «галочку» возле «Show Line Numbers»>- D'ACCORD".

3. Créez un nouveau fichier C dans l'éditeur PN2 : "Fichier - Nouveau - C / C++". Saisissez le texte du programme à l'aide du clavier conformément à la Fig. 6.7 et enregistrez-le sur le disque dur : "Fichier - Enregistrer sous ... -<ввести путь и имя файла, например, для однозначности C:\1001\demol.c>- D'ACCORD".

Ci-après, les captures d'écran (captures d'écran) ne seront affichées qu'aux points d'action les plus importants pour économiser de l'espace. Le reste des captures d'écran en mode étape par étape peut être vu dans les didacticiels vidéo sur le CD joint.

Explications pour la liste.

La ligne 1 commence par des commentaires, qui sont délimités à gauche par deux barres obliques obliques. Tout texte après les signes "//" peut concerner n'importe quoi, dans n'importe quelle langue, avec n'importe quelles libertés et abréviations. Il s'agit d'informations arbitraires que le programmeur écrit pour lui-même, sa bien-aimée, afin de se souvenir dans un mois ou deux de ce qui, en fait, a été discuté. Habituellement, le nom abrégé du programme et la paternité sont indiqués.

La ligne 2 contient également des commentaires, mais de nature technique. Voici un schéma de circuit pour connecter l'indicateur HL1 et le bouton SB1 à des lignes spécifiques des ports MK. Les noms des signaux correspondent à la disposition du tiret sur MHKpocxeMyATmega48A (Fig. 6.9).

Riz. 6.9. Disposition du signal MKATmega48A.

La pratique de la description textuelle de schémas simples dans la "tête" du programme est répandue dans la communauté des programmeurs qui sont trop paresseux pour dessiner et appliquer des schémas graphiques, estimant que "tout est clair de toute façon".

La ligne 3 spécifie les paramètres du "makefile". Pour référence, le fonctionnement normal du compilateur AVR-GCC est possible avec deux fichiers requis. Le premier est le fichier de liste avec l'extension ".c", le second est le fichier de directive système "makefile" sans l'extension. Le "Makefile" est créé par l'utilitaire "MFile" (Fig. 6.10, par JoergWunsch, Allemagne) inclus dans WinAVR.

Riz. 6.10. L'apparition du programme MFile.

Procédure.

1. Exécutez l'utilitaire "MFile" pour l'exécution : "Démarrer - Programmes - WinAVR-2010010 - MFile".

2. Remplissez les champs du modèle comme suit (Fig. 6.11) :

Dans l'élément "Makefile - Main file name ... - Main file" entrez le nom du projet en cours de développement "demol" et cliquez sur OK;

Dans l'élément "Makefile - Type MCU - ATmega", sélectionnez MK "atmega48a" ;

Dans l'élément "Makefile - Niveau d'optimisation", définissez le niveau d'optimisation "2". Autres possibilités : "0" - pas d'optimisation, "s" - la longueur minimale des codes, les chiffres "1" ... "3" sont trois méthodes d'optimisation différentes, et le nombre "3" ne signifie pas la meilleure option, il tout dépend du programme C spécifique ...

Il n'est pas nécessaire de corriger le reste des clauses du modèle "makefile", laissez-les rester celles par défaut.

Riz. 6.11. Remplir les champs du programme MFile.

Pour chaque nouveau projet et nouveau type de MK, vous devez composer votre propre "makefile", tandis que le nom du projet et le type de MK changeront.

La ligne 4 contient des commentaires spécifiant les nombres hexadécimaux des octets Low, High et Ext de la configuration. Ces valeurs seront nécessaires ultérieurement lors de la programmation des fusibles MK.

С «тг5 est vide d'un point de vue informationnel. Il sépare visuellement le texte du commentaire du reste du programme. Au lieu d'une, vous pouvez insérer deux lignes vierges, ce qui n'est pas important. L'essentiel est d'améliorer la visibilité. Cela n'affecte pas la longueur des codes du firmware MK.

La conception externe de la liste est inventée par le programmeur lui-même, sur la base de ses propres idées sur la beauté de l'image et la commodité de présenter des informations. Souvent, par le style de l'en-tête, des lignes de listage et des commentaires, on peut identifier l'auteur du programme ou composer son portrait psychologique. Des notes intéressantes à ce sujet sont données dans la monographie d'Alain Golub.

La ligne 6 est servie par le préprocesseur du compilateur. Ce n'est pas une déclaration C ou un commentaire. Le nom est complexe, mais le sens est simple. Le préprocesseur (préprocesseur) recherche dans le programme les lignes commençant par le caractère "#". De plus, selon le mot-clé, il effectue une certaine action, par exemple, "définir" - attribue des valeurs aux constantes, "si défini" - vérifie une condition, "inC1ude" - connecte une bibliothèque de fonctions, etc.

Pour une première connaissance, il suffit de savoir qu'une bibliothèque de fonctions est un ensemble de fichiers qui contiennent des textes de procédures standards ou fréquemment répétées. Dans ce cas, la directive "# inC1ude" (traduit de l'anglais. "Include") active la bibliothèque système "avr/io.h", qui est responsable du fonctionnement des ports d'E/S. Cette bibliothèque a un nom différent dans différents compilateurs, mais l'essence est la même, sans elle, vous ne pouvez contrôler aucune ligne de port MK. Par conséquent, la connexion de la bibliothèque I/O est obligatoire pour tous les programmes C du microcontrôleur.

La ligne 7 est également traitée par le préprocesseur du compilateur, mais elle a le mot-clé "define". Il déclare donc une constante INI et lui attribue la valeur constante 255. Les commentaires indiquent la traduction de 255 en hexadécimal 0xFF et binaire 0bl 1111111. La différence entre eux réside dans les lettres "x" et "b" après le chiffre obligatoire "0". La correspondance des nombres dans différents systèmes est donnée dans le tableau. 6.3.

Tableau 6.3. Conversion de nombres hexadécimaux en binaires et vice versa

Si la constante INI est rencontrée quelque part dans le "corps" du programme, alors le compilateur, sans hésitation, substitue la valeur numérique spécifiée à la ligne 7 à la place de celle-ci, c'est-à-dire 255. Ceci est très pratique pour les programmeurs lors de la correction de grandes listes, lorsque les constantes sont dispersées dans le texte. De plus, le nom même de la constante peut porter une charge sémantique et servir d'indice verbal. En particulier, INI est l'abréviation du mot anglais "initialisation", qui signifie une valeur initiale.

L'importance de placer la constante dans "l'en-tête" du programme réside dans la simplicité de sa recherche et la rapidité des modifications. Par exemple, après avoir corrigé une fois le nombre « 255 », vous pouvez être sûr que partout dans le texte il sera automatiquement (et sans erreur !) saisi par la constante lNI.

Le programmeur propose le nom de la constante, basé sur le bon sens et les préférences humaines. Selon une longue tradition, les noms des constantes sont écrits en majuscules. Le premier du nom doit être une lettre, par exemple, I2CBUS, T34. Le cyrillique n'est pas autorisé.

La déclaration de la constante INI pourrait être écrite de deux manières plus équivalentes : "#define INI OxFF" ou "#define INI Obl 1111111".

La ligne 8 contient l'opérateur décrivant la variable "a". Une variable peut être représentée au sens figuré sous la forme d'une boîte (boîte, boîte, étui à crayons), où un certain nombre d'éléments (perles, grains, allumettes) sont stockés. Pour rendre les "boîtes" différentes les unes des autres, elles sont marquées de différentes inscriptions sur le boîtier, en l'occurrence la lettre "a". Si le numéro initial n'est pas précisé dans la description de la variable, alors on considère que la "boîte" est vide et elle est initialisée à zéro (a = 0). Au cours du programme, vous pouvez ajouter des éléments à la "boîte" et les supprimer. augmenter et diminuer la valeur d'une variable.

Le volume de la "boîte" dépend de sa déclaration d'origine. Tableau. 6.4 montre les limites acceptées dans le compilateur AVR-GCC. Comme vous pouvez le voir, la déclaration "unsigned char" permet de mettre 255 éléments dans la "box". Avec la valeur zéro (« boîte » vide), il y aura un total de 256 états ou 256 octets. La variable avec la déclaration "unsigned long" n'est plus comme un cercueil, mais un train entier, qui est conçu pour 4,2 milliards d'articles.

Tableau 6.4. Les dimensions des variables retenues dans le АУК-ВСС

Étant donné que MK n'a pas développé d'outils pour travailler avec des nombres négatifs, dans un premier temps, afin de ne pas se tromper, il est préférable d'utiliser uniquement des nombres positifs dans les programmes, c'est-à-dire contenant une déclaration "non signée".

Les "pères-commandants" de la langue Depuis l'Antiquité, ils ont établi un ordre tacite selon lequel le nom d'une variable ne doit pas comporter plus de 8 caractères. Dans le compilateur AVR-GCC, cette règle est ignorée et la variable peut contenir autant de caractères que l'on veut, mais sans fanatisme. La seule chose est que la première lettre de l'alphabet latin doit être la première du nom, elle peut être suivie de lettres, de chiffres, de symboles. Le cyrillique n'est pas autorisé.

Une variable, contrairement à une constante, contient un certain nombre de variable (pas une constante). Pour distinguer les variables des constantes, elles sont écrites en minuscules. Habituellement, ils essaient de faire correspondre le nom à la signification, par exemple, « compter » pour un compteur, « données » pour des données, « retarder » pour un délai. Bien que parfois plus simples, les variables à une lettre plus familières et plus compactes qui sont familières à l'algèbre scolaire semblent plus simples - a, b, c, d, i, j, k, x, y, z.

La dimension à spécifier pour une variable particulière est déterminée par le programmeur. Étant donné que la variable "a" dans cette liste est un stockage pour collecter des informations à partir du port numérique à 8 bits "C", cela signifie qu'elle doit contenir "deux à la huitième puissance", c'est-à-dire de 0 à 255.

Il est intéressant de noter que le compilateur ne génère pas d'erreur si vous jouez la sécurité et déclarez la variable avec une marge comme "unsigned long a;". Certes, cela conduit à une augmentation inutile de la taille du code de 114 à 126 octets et, par conséquent, à une légère diminution de la vitesse d'exécution du programme.

L'autre extrême est une sous-estimation de la dimension, lorsque, par exemple, au lieu de déclarer "unsigned int", "unsigned char" est utilisé. Si vous entrez un nombre supérieur à 255 dans une telle variable, alors seul le reste de la division par 256 sera sauvegardé, et la première partie sera irrémédiablement perdue. Au sens figuré, les objets sortent de la "boîte". Le compilateur ne réagit pas à de telles erreurs, en supposant que le programmeur est dans un état adéquat et comprend ce qu'il fait. La détermination correcte et sans erreur de la dimension des variables vient généralement avec l'expérience.

La ligne 9 est vide pour information, similaire à la ligne 5. L'insertion ou non dans la liste dépend de la volonté du programmeur.

La ligne 10 est remplie de commentaires, mais pour des raisons de variété, ils sont dans un format différent. A savoir, le texte est souligné sur le côté gauche avec les caractères "/*", et sur le côté droit - avec les caractères "* /". Ce style provient des versions les plus anciennes du langage C. Plus tard dans les commentaires, les symboles "//" ont été utilisés, ce qui est typique du langage C ++. Dans WinAVR, les deux options ont le même droit d'exister. L'orthographe "nouvelle" est plus simple et plus claire, et l'"ancienne" à certains endroits est la seule possible si vous souhaitez commenter le début de l'opérateur.

La ligne 11 contient un appel typique à la fonction "principale" selon les règles de l'American National Standards Institute (ANSI). Les expressions abrégées sont autorisées, mais non recommandées : "int main ()", "main ()", "main (void)". Parfois, ils écrivent même "void main (void)", soulignant l'absence totale de paramètres reçus et passés. Pour les MK simples qui ne prennent pas en charge les systèmes d'exploitation en temps réel, il n'y aura pas de conséquences négatives. Cependant, si vous pensez à l'avenir, il est préférable de mémoriser immédiatement la forme complète de l'écriture, ce qui facilitera le transfert des programmes C vers des plates-formes de microcontrôleurs plus modernes à l'avenir.

La ligne 12 est entièrement attribuée sous la première accolade ouverte. Ce n'est pas par hasard qu'elle a reçu un tel honneur. Le compilateur C, lors de l'exécution de la ligne 12, effectue l'initialisation initiale des registres MK, l'installation de la pile et l'allocation de l'espace d'adressage. Il n'est pas nécessaire d'apprendre la mécanique de ce processus de bijouterie (contrairement aux programmes en assembleur !).

Pour un programmeur, l'essentiel est de bien comprendre deux choses qui sont automatiquement produites par le compilateur inclus dans WinAVR :

Au démarrage du programme, toutes les interruptions sont désactivées ;

Toutes les lignes de port MK sont configurées comme entrées sans résistances de rappel.

Ligne 13. Enfin, la première commande de programme exécutable est apparue sous la forme d'une instruction d'affectation. Explication des symboles :

« DDRB » est le nom conventionnel du registre DDR à huit bits du port « B » ;

"=" - signe d'écriture des données dans le registre DDRB ;

"ОЬ" - une indication que les 8 prochains chiffres seront en code binaire ;

"11111111" - les bits du nombre binaire écrit dans le registre DDRB, disposés dans l'ordre 7, 6, 5, 4, 3, 2, 1, 0 (bit le plus significatif à gauche, bit le moins significatif à droite) .

À la suite de l'exécution de cet opérateur, toutes les lignes du port "B" sont mises en mode de sortie, car les unités sont indiquées dans tous les chiffres.

L'énoncé de la ligne 13 est en retrait de deux espaces à partir de la gauche. Il s'agit d'une convention de formatage de texte à laquelle de nombreux programmeurs adhèrent. Le compilateur "gardera le silence" si vous commencez le texte dans la première ou la septième colonne à partir de la gauche, comme vous le souhaitez. Il n'y a qu'une seule recommandation : « La liste d'un programme C doit être facile à visualiser. » À la suite de cela, à l'avenir, tous les textes seront formatés de manière à ce que les accolades soient situées verticalement dans des colonnes impaires (1, 3, 5, etc.), et chaque colonne ne contiendra qu'une ouverture en haut et une accolade de fermeture à le fond.

Cet ordre n'est pas un dogme, mais un moyen de raccourcir la liste en largeur et en longueur sans perte de contenu informatif. Le programmeur "à la maison", dans ses annonces, a le droit d'entrer un nombre quelconque d'espaces, de lignes blanches, etc.

La ligne / 4 agit en conjonction avec la ligne 13, car l'état spécifique de la ligne de port dans les contrôleurs AVR est déterminé par un groupe de deux registres DDRx et PORTx, où "x" est la lettre ordinale du port, par exemple, B, C ou D. Considérant que chaque registre contient 8 bits numérotés de 0 à 7 (conditionnellement "z"), alors la disposition générale le long des lignes de port est la suivante :

DDRx.z = 1, PORTx.z = 1 - sortie de niveau HAUT ;

DDRx.z = 1, PORTx.z = 0 - sortie LOW ;

DDRx.z = 0, PORTx.z = 1 - entrée avec une résistance "pull-up" ;

DDRx.z = 0, PORTx.z = 0 - entrée sans résistance de rappel.

Résumant les lignes 13 et 14 : DDRB.0… DDRB.7 = 1, PORTB.O = 0, PORTB.l = 1, PORTB.2… PORTB.7 = 0, donc les lignes 0, 2… 7 du port "B " sera configuré comme sorties LOW et la ligne 1 comme HIGH. Étant donné que l'indicateur HL1 est connecté à la ligne PB1 (broche 15 du microcircuit DD1 sur la figure 6.3), il s'éteindra. Il s'avère que la première partie de la mission technique s'est déroulée avec succès.

Les lignes 15, 16 sont similaires aux lignes 13, 14, mais pour le port "C". Pour changer, la substitution constante lNI est utilisée. Une fois les lignes 15 et 16 exécutées, toutes les lignes du port "C", même celles qui ne sont pas directement impliquées dans l'opération, seront configurées en entrées avec des résistances "pull-up". Il s'agit d'une technique standard pour l'initialisation initiale du port afin d'activer les résistances de rappel internes qui empêchent les entrées CMOS des lignes MCU de pendre en l'air et éliminent tout bruit et chemins de détection.

La ligne 17 est similaire aux lignes 13, 14 et 15, 16, mais pour le port "D". Il n'est pas du tout impliqué dans le circuit électrique, mais vous devez le prendre comme règle - initialiser tous les ports sans exception au début du programme. Leurs lignes inactives doivent être configurées comme des entrées de résistance de rappel ou comme des sorties HIGH / LOW. A l'avenir, un tel automatisme permettra d'éviter les collisions et les malentendus.

Une particularité est l'affectation du registre PORTD à la valeur précédemment affectée à la ligne 13 au registre DDRB, c'est-à-dire le nombre binaire Obl 1111111. Cela a été fait à des fins pédagogiques, car cela aurait pu être plus simple : "PORTD = OxFF;".

Un autre détail est l'absence d'écriture dans le registre DDRD. Ce n'est pas une faute de frappe, mais une réduction délibérée de la liste d'une ligne, car à la mise sous tension, selon la fiche technique, tous les registres DDRx, PORTx sont automatiquement remplis de zéros, c'est-à-dire il n'est pas nécessaire d'effacer en plus le registre DDRD.

La ligne 18 contient l'instruction de boucle "while". Pour la première connaissance, il suffit de se rappeler que l'expression "while (1)" signifie l'exécution séquentielle des instructions des lignes 19 ... 21 dans une boucle infinie.

La ligne 19 contient une parenthèse ouverte et une instruction d'affectation. Cette combinaison est autorisée par les règles du langage C, ce qui rend le listing plus compact en hauteur.

Après l'exécution de la ligne 19, la variable "a" stockera l'octet d'état de huit lignes du port "C", qui a été lu dans le registre PINC. Si le bouton SB1 n'est pas enfoncé, alors "a = OxFF", et s'il est enfoncé, alors "a = OxFE".

La ligne 20 décale le contenu de la variable "a" d'un bit vers la gauche. Deux options sont possibles : si "a" était auparavant OxFF, alors il deviendra OxFE, et s'il s'agissait d'OxFE, il deviendra OxFD. Pourquoi cela est fait, la ligne suivante du programme vous le dira.

La ligne 21 contient l'opérateur d'affectation, mais, par rapport à la ligne 19, la variable "a" et le registre de port sont inversés. En C, ce roque se traduit par le remplacement d'une opération de lecture depuis un port par une opération d'écriture vers un port. Au total, le code 0xFE (si le bouton SB1 n'est pas enfoncé) ou le code 0xFD (si le bouton SB1 est enfoncé) sera envoyé au port "B". Dans le premier cas, l'indicateur HL1 s'éteindra, dans le second, il s'allumera, ce qui devait être réalisé selon les termes de référence.

Les lignes 22, 23 contiennent des accolades fermantes. Si vous dessinez mentalement deux lignes verticales "de bas en haut", alors elles pointent directement vers les crochets ouvrants aux lignes 19 et 12. La parenthèse à la ligne 22 indique une répétition en boucle aux lignes 19 ... 21. La parenthèse sur la ligne 23 commence à la première position en partant de la gauche, donc la fin de la fonction "principale", et donc du programme principal, est atteinte.

La ligne 24 contient des commentaires sur le numéro de version de WinAVR et la longueur des codes du firmware, ce qui est très utile lors de la compilation du programme par d'autres utilisateurs. On sait que les versions de WinAVR ne sont pas 100% compatibles entre elles, pour lesquelles il existe des exemples illustratifs. Par conséquent, la longueur du code compilé de la même liste peut différer d'une version à l'autre. La conclusion pratique est que vous devez d'abord compiler le programme avec le package WinAVR indiqué à la ligne 24, et seulement ensuite sur une version plus ancienne ou plus récente, en vérifiant la longueur du code reçu comme somme de contrôle.

Le lecteur attentif est en droit de constater qu'au stade de la compilation du listing du programme C, il était impossible de calculer à l'avance combien les codes occupent dans la mémoire MK. Pour être honnête, l'inscription "114 octets (2,8%)" a été ajoutée plus tard, après la compilation du programme. Il y a un exemple clair de la rétroaction même, qui dans le diagramme structurel de la Fig. 6.1 était indiqué par une ligne pointillée entre les blocs "K" et "L".

La ligne 25 est complètement vide, mais contrairement aux lignes 5 et 9, elle marque la fin physique de la liste. Sans cette ligne de terminaison, le compilateur émet un avertissement léger mais néanmoins : "Avertissement : pas de nouvelle ligne à la fin du fichier".

Avant qu'une pièce de sécurité ou de crypto-monnaie ne soit disponible pour les commerçants sur les places de marché, elle doit passer par un processus de sélection complexe et être cotée. Analysons en termes simples ce qu'est une cotation sur une bourse - à la fois en actions et en crypto-monnaies, quelles sont les principales étapes à franchir pour figurer sur la liste, les principaux avantages qu'une entreprise reçoit, quelle est l'essence de radiation.

Qu'est-ce que la liste

La notion de référencement se retrouve dans différents domaines de notre vie :

  • Échanges d'actions et de crypto-monnaies- ils seront le sujet de cet article. Il s'agit d'ajouter des titres ou des crypto-monnaies aux listes de plateformes de trading.
  • Dans le commerce- cela implique l'ajout de produits d'un fabricant particulier à l'assortiment du magasin.
  • En programmation- c'est le code source (texte) du programme, qui est traduit en code exécutable à l'aide du compilateur.
  • Dans l'immobilier- voici les contrats d'inscription signés entre le propriétaire du bien et l'agent de vente qui le vend moyennant une commission.

Nous ne considérerons pas les deux dernières industries. Nous sommes intéressés par l'inscription sur, ainsi que les crypto-monnaies.

Cotation et radiation de titres

La liste est apparue dans notre lexique à partir de la liste de mots, qui est traduite de l'anglais par "liste". La cotation des valeurs mobilières en bourse est la procédure d'ajout d'actions, d'obligations de sociétés à la liste des instruments cotés sur la plateforme. Après cela, ils deviennent disponibles pour l'achat et la vente dessus.

Après avoir passé la procédure de cotation, les titres sont inclus dans la liste de négociation de la bourse.

Souvent, les participants au marché appellent la liste elle-même une liste. De plus, chaque site a sa propre liste.

L'initiateur de la cotation est le plus souvent la société émettrice, cependant, dans de rares cas, la bourse elle-même peut exprimer le souhait d'inclure certains titres dans sa liste, s'ils sont déjà très demandés par les commerçants via des canaux informels.

Pour les entreprises, la cotation en bourse présente de nombreux avantages, et il n'est donc pas surprenant que les entreprises fassent beaucoup d'efforts pour passer par cette procédure.

Une cotation en bourse est importante à ne pas confondre avec une introduction en bourse. Dans le premier cas, la société cherche à entrer dans la liste de cotation d'une certaine plateforme de trading. Une introduction en bourse implique qu'une entreprise se transforme en une entreprise publique et que ses titres deviennent accessibles aux investisseurs non seulement via, mais également via d'autres canaux, par exemple via ses succursales.

Étapes de référencement

La procédure de cotation prévoit plusieurs étapes qu'une société émettrice doit franchir avant que ses titres ne soient mis à la disposition des investisseurs.

  1. Tout commence par le dépôt d'une demande. Cela peut être fait aussi bien par l'émetteur lui-même que par une personne représentant les intérêts de la société.
  2. Vient ensuite l'étape des examens. Les représentants de la bourse analysent à la fois les titres et toutes les données disponibles sur la société. La rentabilité de l'entreprise et la liquidité de ses actifs sont étudiées. L'entreprise est tenue de fournir tous les états financiers recueillis au cours des dernières années.
  3. Une commission spéciale examine les résultats des examens et décide d'ajouter des titres à sa cotation ou de rejeter la demande.
  4. Si la décision est positive, les deux parties - l'entreprise et la bourse, concluent un accord.

La procédure dure environ 1 à 2 mois en moyenne. Pour rester sur la liste, l'émetteur devra, en règle générale, soumettre les données requises à la bourse une fois par trimestre.

Les règles de cotation appliquées par les parquets aux entreprises varient. Certains ne peuvent admettre en cotation que des sociétés dont la capitalisation est d'au moins 50 millions de dollars, et la durée de leur présence sur le marché est d'au moins 3 ans. D'autres peuvent élever ou abaisser la barre pour ces exigences et d'autres.

Si toutes les conditions ne sont pas remplies, mais que les titres présentent un intérêt pour la bourse, ils obtiennent une liste préliminaire de titres - on l'appelle aussi pré-inscription... Les investisseurs peuvent également négocier ces actions, cependant, en dehors des murs de la bourse et de la salle des marchés, ils n'en sont pas responsables.

Niveaux de cotation

La plupart du temps, il existe plusieurs niveaux de cotation sur les bourses. Première prime les titres les plus liquides avec un haut niveau de fiabilité sont inclus.

Aux entreprises deuxième niveau les exigences ne sont pas si élevées. Et le plus bas pour les entreprises qui demandent le troisième, le soi-disant liste non citée... Les investisseurs qui achètent des titres de sociétés de ce niveau doivent analyser soigneusement leur fiabilité par eux-mêmes.

Par exemple, les sites principal et alternatif sont valables pour. Le premier est divisé en deux niveaux : "Standard" et "Premium". Le marché alternatif est destiné aux petites et moyennes entreprises en développement qui y sont admises selon une procédure simplifiée.

De temps en temps, les sites peuvent augmenter ou inversement abaisser les niveaux de cotation des obligations, des actions ou même les supprimer complètement.

Types d'annonces

Faites la distinction entre la liste principale et secondaire.

Annonce principale implique que les actions sont disponibles pour les investisseurs sur la bourse du pays où la société est enregistrée.

À inscription secondaire les titres sont introduits sur les marchés internationaux et inscrits sur les listes des plateformes étrangères. Cela ne peut être fait que si l'étape de la liste initiale a été franchie.

Il y a encore double inscription, dans laquelle la société cherche constamment à figurer dans les listes de cotation de plusieurs plateformes de trading dans son pays d'origine.

Aussi bien que liste croisée- dans ce cas, l'entreprise envoie des candidatures à ajouter aux listes de plusieurs plateformes d'échange dans différents pays. De plus, si l'un d'eux approuve l'ajout de titres, l'autre a la possibilité de compléter la procédure de cotation selon un schéma simplifié. Cela réduit non seulement les coûts matériels, mais aussi le temps d'examen de la demande.

Quels sont les avantages de l'émetteur

Les entreprises font des efforts pour être cotées en bourse pour une raison, car cela leur promet un certain nombre d'avantages. Premièrement, leur attrait pour les investissements augmente et, par conséquent, il est plus facile d'attirer des fonds pour un développement ultérieur. Les avantages incluent également :

  • croissance de la capitalisation de l'entreprise avec une augmentation de la demande de titres émis ;
  • accroître la visibilité et la confiance dans le monde des affaires ;
  • augmenter la liquidité des actions, obligations;
  • la possibilité d'ajouter aux listes de bourses étrangères;
  • dans certains cas, vous pouvez demander des avantages fiscaux.

Cependant, n'oubliez pas qu'à partir de maintenant, les activités de l'entreprise recevront une attention accrue et que toute action affectera instantanément la valeur des actions. De plus, la procédure de référencement n'est pas gratuite. Tous les examens d'experts coûtent de l'argent.

Qu'est-ce que cela donne aux investisseurs

L'essentiel est la confiance. Les investisseurs, investissant dans des actions de sociétés, savent que sa fiabilité a été vérifiée par des professionnels. La présence dans la cotation en bourse les dispense de vérifications indépendantes de la fiabilité de l'entreprise.

Qu'est-ce que la radiation

Si des titres sont inclus dans la liste de cotation de la bourse, il n'y a aucune garantie qu'ils y resteront pour toujours. Sous certaines conditions, le site peut les supprimer de celui-ci. Cela se produit dans le cas, par exemple, si l'émetteur cesse de se conformer aux conditions de l'échange, ne remplit pas ses obligations, se déclare en faillite, etc.

De plus, le prix des actions, qui n'augmente pas dans le temps, peut entraîner une radiation, ce qui indique une faible demande. Il arrive que l'initiateur de la radiation soit l'entreprise elle-même, par exemple dans le cas d'une fusion d'entreprises.

Liste des crypto-monnaies

L'inscription est également souvent discutée dans l'environnement de la crypto-monnaie. Ici, les pièces ou jetons numériques ont tendance à apparaître sur la liste de négociation des plateformes d'échange.

Les projets de crypto-monnaie s'efforcent d'entrer dans les listes d'échanges populaires

Les exigences pour l'inscription sur les échanges cryptographiques varient. Il est beaucoup plus difficile d'accéder aux grands sites bien connus qu'aux petits. Par conséquent, la plupart des projets commencent par de petites plateformes de trading.

Prix ​​d'émission

L'un des principaux problèmes est le coût . Des bourses peu connues peuvent ajouter gratuitement des crypto-monnaies à la liste. Entrer dans les listes de plates-formes bien connues peut coûter des milliers, voire des dizaines de milliers de dollars - de l'argent est prélevé pour analyser une pièce avant de l'inscrire. Il y a cependant des exceptions.

Binance, par exemple, a annoncé cet automne que les frais d'inscription serviront à financer des projets caritatifs. Dans le même temps, il n'y a pas de prix fixes - les développeurs eux-mêmes déterminent combien ils veulent payer pour la liste. La direction de Poloniex affirme qu'elle ne prend pas du tout d'argent pour l'inscription.

En début d'année, les journalistes de Business Insider US ont publié un article selon lequel le seuil minimum pour répertorier les échanges cryptographiques pour les projets ICO est de 50 000 dollars, et dans certains cas il peut atteindre 1 million de dollars.

Il y a également eu des cas où la gestion des échanges a rencontré des pots-de-vin pour l'inclusion de pièces dans la liste. Un exemple est l'échange Coinnest - ses directeurs opérationnels et techniques ont été payés environ 890 000 dollars pour ajouter la crypto-monnaie S-coin à la liste de négociation.

Comment ça fonctionne

Pour qu'un token soit référencé, le plus souvent sur le site sélectionné, il faut déposer une candidature et remplir un questionnaire. Cependant, les pièces populaires de la bourse peuvent être incluses seules dans la liste, sans attendre que l'équipe du projet propose de le faire. Par exemple, le bitcoin (BTC) est obligatoire sur chaque échange, et en règle générale, Ethereum (ETH).

Quelles questions sont le plus souvent rencontrées dans le questionnaire :

  • nom et description de la pièce;
  • la date de lancement du réseau principal, ainsi que la plateforme elle-même ;
  • lien vers Github ;
  • lien vers le livre blanc du projet ;
  • liens vers les réseaux sociaux ;
  • s'il y a du minage sur le réseau et s'il y a eu du pré-minage ;
  • émission maximale de pièces, etc.

Souvent, les échanges organisent également des concours entre leurs utilisateurs - ils votent pour les crypto-monnaies proposées, et la pièce gagnante est ajoutée à la liste de cotation.

Huobi Global a lancé une plate-forme automatisée de cotation de crypto-monnaie à la fin de l'été 2018. Avec son aide, la bourse a l'intention d'accélérer le processus d'ajout de jetons à la liste de négociation et de la rendre transparente.

Nuances importantes

La première chose que les échanges regardent est la valeur de la pièce, son utilité pour la communauté. En second lieu se trouve la sécurité du projet, car si le réseau crypto est piraté, l'échange en souffrira également. Ils ne manqueront pas d'être intéressés par le professionnalisme, ainsi que par la réputation de l'équipe.

Par exemple, chez Bittrex, il y a une étape préliminaire d'examen d'une candidature et une étape approfondie. Si les spécialistes de l'entreprise considèrent au stade préliminaire que la pièce mérite d'être cotée en bourse, une étude approfondie de ses caractéristiques techniques, de ses capacités d'innovation et de sa conformité aux exigences de la plate-forme commence.

Des pièces qui peuvent être reconnues comme des titres, les bourses essaient de ne pas ajouter... Par exemple, Poloniex invite immédiatement les développeurs à se familiariser avec le test de Howie pour déterminer si un token peut ou non répondre à ces critères.

L'exception parmi les principales plates-formes est l'échange Coinbase, qui a reçu l'approbation réglementaire appropriée et peut officiellement exploiter des jetons ayant les propriétés de titres.

Fait intéressant, si un actif contredit les lois d'un pays particulier, il peut ne pas être disponible pour les utilisateurs de certaines juridictions.

"Effet des échanges"

Après avoir ajouté des crypto-échanges populaires aux listes, le coût des pièces augmente généralement fortement - de 25 à 30% en moyenne. Ce schéma a même été appelé « effet bourse ». Cela est dû au fait que de plus en plus d'utilisateurs découvrent la pièce, elle devient reconnaissable et augmente la demande. Cependant, le plus souvent, ce décollage est de courte durée et bientôt le coût commence à baisser.

Il existe également des situations où le prix des jetons après leur entrée dans les listes de négociation des bourses, au contraire, baisse. Cela se produit le plus souvent lorsque le projet est répertorié immédiatement après, et les investisseurs qui ont investi lors de la vente de jetons cherchent à gagner de l'argent supplémentaire sur la pièce plus rapidement, en la fusionnant activement sur l'échange.

Les cryptocoins sont radiés pour un certain nombre de raisons :

  • faible intérêt de la part des commerçants ;
  • changements dans la législation;
  • pirater la blockchain du réseau crypto ;
  • refus des développeurs de soutenir davantage la pièce;
  • réclamations des utilisateurs.

Les jetons ne sont généralement pas supprimés immédiatement - la bourse donne aux traders plusieurs semaines pour fermer leurs positions et retirer des fonds dans leurs propres portefeuilles.

Cotation dans le commerce

La notion de cotation est également présente dans le domaine du trading. Lorsqu'un fournisseur souhaite que ses produits soient vendus, par exemple, dans les rayons d'une grande chaîne de distribution, il doit d'abord se mettre d'accord avec la direction de l'entreprise pour ajouter son produit à la liste.

Si le produit n'est pas demandé par les acheteurs, il peut également passer par la procédure de déréférencement, auquel cas il disparaît des rayons des magasins.

Lors de la compilation du programme, vous pouvez définir le paramètre "l" (liste) :

Puis en plus le fichier avec le code objet somme. obj, une somme de liste de fichiers. lst :

  • 1 ; somme. asm - un programme qui calcule S = A + B
  • 2 0000 segment de données
  • 3 0000 0001 a dw 01h
  • 4 0002 0002 b ps 02h
  • 5 0004 ???? s dw?
  • 6 0006 données se terminent
  • 7 0000 segment de code
  • 8 suppose ds: données
  • 9 0000 BA 0000 début : mov dx, données
  • 10 0003 8E DA mov ds, dx
  • 11 0005 A1 0000r mov axe, a
  • 12 0008 03 06 0002r ajouter hache, b
  • 13 000C A3 0004r mov s, hache
  • 14 000F B8 4C00 axe mobile, 4C00h
  • 15 0012 CD 21 int 21h
  • 16 0014 culs de chalut
  • 17 findébut

La liste est un tableau contenant quatre colonnes :

    Numéro de ligne.

    Une adresse dans un segment, c'est-à-dire depuis son début (offset).

    Le contenu de la mémoire à ces adresses. Dans le segment de données, ce sont les valeurs des variables, dans le segment de code, ce sont les codes machine des instructions.

    Code assembleur.

Les commentaires de l'annonce sont également enregistrés, simplement omis ici pour économiser de l'espace.

Dans la liste, vous pouvez voir que seules les lignes 9 à 15 correspondent aux commandes du processeur. Le reste des lignes correspondent à ce qu'on appelle. directives d'assemblage.

Dans tous les cas, des informations de différents niveaux apparaissent. Il y a des informations directement sur la tâche, et il y a des informations sur les informations - les méta-informations. Il s'agit par exemple de diverses explications, instructions, etc. Il existe deux types d'informations dans le code source du langage assembleur :

    commandes - informations pour le processeur;

    directives - informations pour l'assembleur lui-même, comment compiler le programme : comment traduire les instructions en langage machine et comment placer les données.

Il y a ici une analogie avec la sélection des types de commandes. Les commandes de transfert de données, de transfert de contrôle et les commandes arithmétiques et logiques transportent des informations sur la tâche et les commandes de contrôle de la machine - sur les conditions de son exécution, c'est-à-dire représentent également des méta-informations.

Le programme à l'étude contient les directives suivantes :

    segment - directive pour déclarer le début d'un segment ;

    dw (define word) est une directive 16 bits pour la définition des données (allocation et initialisation d'une zone mémoire) ;

    ends (end segment) - directive pour déclarer la fin du segment ;

    assume - directive pour affecter un registre de segment à un segment ;

    end - directive pour indiquer la fin du programme, son argument doit être l'étiquette de la première commande du programme - le point d'entrée dans le programme.

Il existe également les directives de définition de données suivantes :

    db (define byte) - directive pour définir une zone mémoire en 8 bits ;

    dd (define double word) est une directive pour définir une zone mémoire de 32 bits.

Il existe des directives précédées d'un point. De ce type de directives, nous n'avons besoin que de directives pour spécifier l'ensemble d'instructions utilisé pour un modèle de processeur particulier, par exemple :

    386 - les commandes non système du processeur i80386 sont utilisées ;

    386p - toutes les commandes du processeur i80386 sont utilisées, y compris celles du système.

Les lignes 3 à 5 contiennent les directives pour définir les variables A, B et S. Collectivement, les lignes 3-5 et 9-15 contiennent des informations pour le processeur - un programme qui comprend des instructions et des données. Ils sont directement mappés sur la mémoire de l'ordinateur.

Rendez-vous

Le code source est soit utilisé pour produire du code objet, soit exécuté par l'interpréteur. Les modifications ne sont jamais apportées au code objet, uniquement au code d'origine, suivies d'une reconversion en code objet.

Un autre objectif important du code source est la description d'un programme. En utilisant le texte du programme, vous pouvez restaurer la logique de son comportement. Les commentaires sont utilisés pour rendre le code source plus facile à comprendre. Il existe également des outils qui vous permettent de récupérer automatiquement la documentation à partir de votre code source - le soi-disant. générateurs de documentation.

De plus, le code source a de nombreuses autres utilisations. Il peut être utilisé comme un outil pédagogique; Les programmeurs novices peuvent trouver utile d'examiner le code source existant pour apprendre les techniques et méthodologies de programmation. Il est également utilisé comme outil de communication entre programmeurs expérimentés en raison de sa nature (idéalement) concise et sans ambiguïté. Le partage de code entre les développeurs est souvent cité comme un facteur contribuant à l'amélioration de l'expérience du programmeur.

Les programmeurs transfèrent souvent le code source d'un projet à un autre, ce qui est appelé réutilisation du code ( Réutilisabilité du logiciel).

Le code source est un composant essentiel pour le portage du logiciel vers d'autres plates-formes. Sans le code source d'un logiciel, le portage est soit trop difficile, soit impossible.

Organisation

Le code source d'une partie du logiciel (module, composant) peut être constitué d'un ou plusieurs fichiers. Le code du programme n'est pas nécessairement écrit dans un seul langage de programmation. Par exemple, souvent les programmes écrits en C, à des fins d'optimisation, contiennent des insertions de code en langage assembleur. Des situations sont également possibles lorsque certains composants ou parties d'un programme sont écrits dans différents langages, avec un assemblage ultérieur en un seul module exécutable à l'aide d'une technologie connue sous le nom de bibliothèques de liaison ( liaison de bibliothèque).

Les logiciels compliqués nécessitent des dizaines voire des centaines de fichiers sources pour être construits. Dans de tels cas, pour simplifier la génération, des fichiers de projet sont généralement utilisés, qui décrivent les dépendances entre les fichiers avec le code source et décrivent le processus de génération. Ces fichiers peuvent également contenir d'autres paramètres du compilateur et de l'environnement de développement. Différents environnements de conception peuvent utiliser différents fichiers de projet, et dans certains environnements, ces fichiers peuvent être dans un format texte adapté à l'édition directe par un programmeur utilisant des éditeurs de texte universels, dans d'autres environnements, des formats spéciaux sont pris en charge et les fichiers sont créés et modifiés à l'aide d'outils spéciaux programmes. Les fichiers de projet sont communément appelés code source. Dans la grande majorité des environnements de langage moderne, les fichiers de projet sont nécessairement utilisés, quelle que soit la complexité de l'autre code source inclus dans le projet. Souvent, le code source signifie également des fichiers de ressources contenant diverses données, par exemple des graphiques nécessaires à la création d'un programme.

Pour faciliter le travail avec le code source, pour un travail conjoint sur le code par une équipe de programmeurs, des systèmes de contrôle de version sont utilisés.

Qualité

Contrairement aux humains, il n'y a pas de code "bien écrit" ou "mal écrit" pour un ordinateur. Mais la façon dont le code est écrit peut avoir un effet profond sur le processus de maintenance. La qualité du code source peut être jugée par les paramètres suivants :

  • la lisibilité du code (y compris la présence ou l'absence de commentaires sur le code ;
  • facilité d'assistance, de test, de débogage et de correction de bogues, de modification et de portage ;
  • faible complexité;
  • faible utilisation des ressources - mémoire, processeur, espace disque ;
  • aucun commentaire affiché par le compilateur ;
  • pas de "poubelle" - variables inutilisées, blocs de code inaccessibles, commentaires obsolètes inutiles, etc.

Cela peut être lu par les humains. Dans un sens général, toute donnée d'entrée pour un traducteur. Le code source est traduit en code exécutable entièrement avant que le programme ne soit exécuté à l'aide du compilateur, ou peut être exécuté immédiatement à l'aide de l'interpréteur.

Rendez-vous

Le code source est soit utilisé pour produire du code objet, soit exécuté par l'interpréteur. Les modifications sont apportées uniquement à l'original, suivies d'une reconversion en objet.

Un autre objectif important du code source est la description d'un programme. En utilisant le texte du programme, vous pouvez restaurer la logique de son comportement. Les commentaires sont utilisés pour rendre le code source plus facile à comprendre. Il existe également des outils qui vous permettent de récupérer automatiquement la documentation à partir de votre code source - le soi-disant. générateurs de documentation.

De plus, le code source a de nombreuses autres utilisations. Il peut être utilisé comme un outil pédagogique; Les programmeurs novices peuvent trouver utile d'examiner le code source existant pour apprendre les techniques et méthodologies de programmation. Il est également utilisé comme outil de communication entre programmeurs expérimentés en raison de sa nature concise et sans ambiguïté. Le partage de code entre les développeurs est souvent cité comme un facteur contribuant à l'amélioration de l'expérience du programmeur.

Les programmeurs transfèrent souvent le code source (sous forme de modules, tel quel ou avec adaptation) d'un projet à un autre. C'est ce qu'on appelle la réutilisation du code.

Le code source est un composant essentiel pour le portage du logiciel vers d'autres plates-formes. Le portage est soit trop difficile, soit impossible sans le code source d'un logiciel.

Organisation

Le code source d'une partie du logiciel (module, composant) peut être constitué d'un ou plusieurs fichiers. Le code du programme n'est pas nécessairement écrit dans un seul langage de programmation. Par exemple, les programmes C contiennent souvent des insertions en langage assembleur pour des raisons d'optimisation. Il est également possible que certains composants ou parties d'un programme soient écrits dans différents langages, puis assemblés en un seul module exécutable à l'aide d'une technologie connue sous le nom de bibliothèques de liaison ( liaison de bibliothèque).

Un logiciel complexe nécessite des dizaines voire des centaines de fichiers sources pour être construits. Dans de tels cas, pour simplifier la génération, des fichiers de projet sont généralement utilisés, qui décrivent les dépendances entre les fichiers avec le code source et décrivent le processus de génération. Ces fichiers peuvent également contenir des options pour le compilateur et l'environnement de conception. Pour différents environnements de conception, différents fichiers de projet peuvent être utilisés, et dans certains environnements, ces fichiers peuvent être dans un format texte adapté à l'édition directe par un programmeur utilisant des éditeurs de texte universels, dans d'autres environnements, des formats spéciaux sont pris en charge et des fichiers sont créés et modifiés en utilisant des programmes instrumentaux spéciaux. Les fichiers de projet sont communément appelés code source. Souvent, le code source signifie également des fichiers de ressources contenant diverses données, par exemple des graphiques nécessaires pour créer un programme.

Les systèmes de contrôle de version sont utilisés pour faciliter le travail avec le code source et la collaboration sur le code avec une équipe de programmeurs.

Qualité

Contrairement aux humains, il n'y a pas de code "bien écrit" ou "mal écrit" pour un ordinateur. Mais la façon dont le code est écrit peut avoir un effet profond sur le processus de maintenance. La qualité du code source peut être jugée par les paramètres suivants :

  • lisibilité du code (y compris la présence de commentaires sur le code) ;
  • facilité d'assistance, de test, de débogage et de correction de bogues, de modification et de portage ;
  • utilisation économique des ressources : mémoire, processeur, espace disque ;
  • aucun commentaire affiché par le compilateur ;
  • pas de "poubelle" - variables inutilisées, blocs de code inaccessibles, commentaires obsolètes inutiles, etc.;
  • une gestion adéquate des erreurs ;
  • la possibilité d'internationaliser l'interface.

Code source non exécutable

Les licences de logiciel libre copyleft nécessitent la distribution du code source. Ces licences sont également souvent utilisées pour des travaux non logiciels, tels que la documentation, les images, les fichiers de données pour les jeux informatiques.

Dans de tels cas, le code source est considéré comme la forme préférée du travail pour l'édition. Elle peut également être appelée version "transparente" dans les licences autres que les logiciels. Cela peut être, par exemple :

  • pour un fichier compressé avec perte de données - version sans perte ;
  • pour le rendu d'une image vectorielle ou d'un modèle tridimensionnel - la version vectorielle et le modèle, respectivement ;
  • pour les images de texte - le même texte au format texte ;
  • pour la musique - un fichier au format interne de l'éditeur de musique ;
  • et enfin, le fichier lui-même, s'il remplit les conditions spécifiées, ou si une version plus pratique n'existait tout simplement pas.

voir également