LA CLOCHE

Il y a ceux qui ont lu cette nouvelle avant vous.
Abonnez-vous pour recevoir les derniers articles.
Email
Nom
Nom de famille
Comment voulez-vous lire The Bell
Pas de spam

Un langage algorithmique éducatif est un moyen d'enregistrer des algorithmes sous une forme intermédiaire entre l'enregistrement d'un algorithme dans un langage naturel (humain) et un enregistrement dans un langage informatique (langage de programmation).

Les avantages du langage algorithmique éducatif incluent sa simplicité, ainsi que le fait que l'algorithme est écrit en russe en utilisant un certain nombre limité de mots, dont le sens et la méthode d'utilisation sont strictement définis. Ces mots sont appelés mots de service.

Afin de distinguer les mots de service des autres mots de la langue, ils sont soulignés lors de l'écriture.

Un enregistrement d'algorithme dans un langage algorithmique éducatif se compose d'un en-tête et d'un corps d'algorithme. Le corps de l'algorithme se trouve entre les mots-clés de bonne heure et con et est une séquence d'instructions de l'algorithme. Le titre comprend le nom de l'algorithme, reflétant son contenu, des listes de données d'entrée (arguments) et des résultats.

L'attribut d'en-tête d'algorithme est le mot-clé alg.

Ainsi, l'algorithme écrit dans le langage algorithmique éducatif a la forme suivante:

alg nom de l'algorithme

arg liste de données source

couper liste des résultats

séquence de commandes d'algorithme

Il est conseillé de commencer l'étude du langage algorithmique scolaire avec la commande d'affectation, c'est l'une des commandes principales.

C'est écrit comme ceci:

<переменная> := <выражение>

Le signe ": \u003d" lit "assign".

Dans le cas où la valeur à laquelle la valeur est attribuée est incluse dans le côté droit de la commande, ce qui suit se produit:

1) la valeur de l'expression écrite sur le côté droit de la commande d'affectation est calculée en utilisant les valeurs actuelles de toutes les valeurs incluses dans cette expression;

2) la nouvelle valeur actuelle calculée est affectée à la variable. Dans ce cas, la valeur précédente de la variable est détruite.

Par conséquent, la commande b: \u003d a + b signifie que la valeur de la variable a est ajoutée à la valeur actuelle précédente de la valeur b et le résultat obtenu devient la nouvelle valeur courante de la valeur b.

Cet exemple illustre les trois principales propriétés de l'affectation:

1) jusqu'à ce qu'une valeur soit attribuée à une variable, celle-ci reste indéfinie;

2) la valeur affectée à une variable y est stockée jusqu'à la prochaine affectation d'une nouvelle valeur à cette variable;

3) la nouvelle valeur attribuée à la variable remplace sa valeur précédente.

Maintenant, familiarisons-nous avec les structures de base, commençons par une opération telle que "suivre". Formé par une séquence d'actions se succédant:

action 1

action 2

. . . . . . . . .

action n

Ensuite, nous examinerons la structure de base du "branchement". Il fournit, en fonction du résultat de la vérification de la condition (oui ou non), le choix de l'une des variantes de fonctionnement de l'algorithme. Chacun des chemins mène à une sortie commune, donc l'algorithme continuera à s'exécuter quel que soit le chemin emprunté. La structure ramifiée se décline en quatre saveurs principales:



1. si-alors;

si un état

puis actions

2. si-alors-autrement;

si un état

puis action 1

autrement action 2

choix

àcondition 1: actions 1

àcondition 2: actions 2

. . . . . . . . . . . .

à condition N: actions N

{autrementactions N + 1}

Et enfin, la structure de base d'une boucle utilisant le langage algorithmique scolaire ressemblera à ceci.

Algorithme - une instruction précise et compréhensible à l'interprète pour effectuer une séquence d'actions visant à résoudre la tâche.

Le nom «algorithme» vient de la forme latine du nom du mathématicien d'Asie centrale al-Khwarizmi - Algorithmi. L'algorithme est l'un des concepts de base de l'informatique et des mathématiques.

Un exécuteur d'algorithme est un système abstrait ou réel (technique, biologique ou biotechnique) capable d'exécuter les actions prescrites par l'algorithme.

L'interprète se caractérise par:

actions élémentaires;

système de commande;

L'environnement (ou le décor) est «l'habitat» de l'interprète. Par exemple, pour un robot interprète issu d'un manuel scolaire, le mercredi est un champ cellulaire sans fin. Les murs et les cellules ombragées font également partie de l'environnement. Et leur emplacement et la position du robot lui-même déterminent l'état spécifique de l'environnement.

Chaque exécuteur ne peut exécuter des commandes qu'à partir d'une certaine liste strictement spécifiée - le système de commande de l'exécuteur. Pour chaque commande, les conditions d'applicabilité (dans quels états de l'environnement la commande peut être exécutée) doivent être spécifiées et les résultats de l'exécution de la commande doivent être décrits. Par exemple, la commande «monter» du robot peut être exécutée s'il n'y a pas de mur au-dessus du robot. Son résultat est le déplacement du Robot d'une cellule vers le haut.

Après avoir appelé la commande, l'exécuteur exécute l'action élémentaire correspondante.

Les échecs de l'exécuteur se produisent lorsqu'une commande est appelée avec un état non valide de l'environnement.

Habituellement, l'exécuteur ne sait rien du but de l'algorithme. Il exécute toutes les commandes qu'il reçoit sans poser les questions «pourquoi» ou «pourquoi».

En informatique, un ordinateur est l'exécuteur universel des algorithmes.

Les principales propriétés des algorithmes sont les suivantes:

Compréhensibilité pour l'interprète - c.-à-d. l'exécuteur de l'algorithme doit savoir comment l'exécuter.

Discrétion (discontinuité, séparation) - c.-à-d. l'algorithme doit représenter le processus de résolution du problème comme une exécution séquentielle d'étapes (étapes) simples (ou préalablement définies).

Définition - c.-à-d. chaque règle de l'algorithme doit être claire, sans ambiguïté et ne laisser aucune place à l'arbitraire. En raison de cette propriété, l'exécution de l'algorithme est de nature mécanique et ne nécessite aucune instruction ou information supplémentaire sur le problème à résoudre.

Performance (ou membre). Cette propriété consiste dans le fait que l'algorithme doit conduire à la solution du problème en un nombre fini d'étapes.

Caractère de masse. Cela signifie que l'algorithme de résolution du problème est développé sous une forme générale, c'est-à-dire il devrait être applicable à une certaine catégorie de problèmes qui ne diffèrent que par les données initiales. Dans ce cas, les données initiales peuvent être sélectionnées à partir d'une certaine zone, qui est appelée la zone d'applicabilité de l'algorithme.

En pratique, les formes suivantes de présentation des algorithmes sont les plus courantes:

verbal (enregistrements en langage naturel);

graphique (images de symboles graphiques);

pseudocodes (descriptions semi-formalisées d'algorithmes dans un langage algorithmique conditionnel, comprenant à la fois des éléments de langage de programmation et des phrases en langage naturel, notation mathématique généralement acceptée, etc.)

logiciel (textes dans les langages de programmation).

La manière verbale d'écrire des algorithmes est une description des étapes séquentielles du traitement des données. L'algorithme est défini sous forme libre en langage naturel.

Par exemple. Écrivez un algorithme pour trouver le plus grand diviseur commun (GCD) de deux nombres naturels.

L'algorithme peut être le suivant:

définir deux nombres;

si les nombres sont égaux, prenez l'un d'eux comme réponse et arrêtez, sinon continuez l'algorithme;

déterminer le plus grand des nombres;

remplacer le plus grand des nombres par la différence entre le plus grand et le plus petit des nombres;

répétez l'algorithme de l'étape 2.

L'algorithme décrit est applicable à tous les nombres naturels et devrait conduire à la solution du problème. Voyez par vous-même en utilisant cet algorithme pour déterminer le plus grand diviseur commun de 125 et 75.

La méthode verbale n'est pas répandue pour les raisons suivantes:

ces descriptions ne sont pas strictement formalisées;

souffrent de la verbosité des enregistrements;

permettre l'ambiguïté dans l'interprétation des réglementations individuelles.

La manière graphique de présenter les algorithmes est plus compacte et claire que celle verbale.

Dans une présentation graphique, l'algorithme est décrit comme une séquence de blocs fonctionnels interconnectés, dont chacun correspond à l'exécution d'une ou plusieurs actions.

Cette représentation graphique est appelée un organigramme ou un organigramme.

Dans le schéma bloc, chaque type d'action (saisie des données initiales, calcul des valeurs d'expression, conditions de contrôle, contrôle de la répétition des actions, achèvement du traitement, etc.) correspond à une figure géométrique représentée sous forme de symbole de bloc. Les symboles de bloc sont reliés par des lignes de transition qui déterminent l'ordre des actions.

Le tableau 1 répertorie les symboles les plus couramment utilisés.

Le bloc «processus» permet de désigner une action ou une séquence d'actions qui modifient la valeur, la forme de présentation ou le placement des données. Pour améliorer la clarté du diagramme, plusieurs blocs de traitement séparés peuvent être combinés en un seul bloc. La représentation des opérations individuelles est assez gratuite.

Le bloc "décision" est utilisé pour indiquer des transitions de contrôle conditionnelles. Chaque bloc «solution» doit indiquer la question, la condition ou la comparaison qu'il définit.

Le bloc "modification" permet d'organiser les structures cycliques. (Le mot modification signifie modification, transformation). Le paramètre de boucle est écrit à l'intérieur du bloc, pour lequel sa valeur initiale, sa condition aux limites et l'étape de changement de la valeur du paramètre sont spécifiées pour chaque répétition.

Le bloc «processus prédéfini» est utilisé pour spécifier les appels à des algorithmes auxiliaires qui existent de manière autonome sous la forme de certains modules indépendants, et pour les appels aux routines de bibliothèque.

Le pseudocode est un système de notation et de règles conçu pour enregistrer de manière cohérente les algorithmes.

Il occupe une place intermédiaire entre les langues naturelles et formelles.

D'une part, il est proche d'un langage naturel ordinaire, de sorte que les algorithmes peuvent y être écrits et lus comme du texte ordinaire. D'autre part, le pseudocode utilise des constructions formelles et des symboles mathématiques, ce qui rapproche la notation de l'algorithme de la notation mathématique généralement acceptée.

Le pseudocode n'accepte pas les règles syntaxiques strictes pour l'écriture des commandes inhérentes aux langages formels, ce qui facilite l'écriture d'un algorithme au stade de la conception et permet d'utiliser un ensemble plus large de commandes conçues pour un exécuteur abstrait. Cependant, le pseudocode contient généralement des constructions inhérentes aux langages formels, ce qui facilite le passage de l'écriture en pseudocode à l'écriture d'un algorithme dans un langage formel. En particulier, en pseudocode, tout comme dans les langages formels, il y a des mots de fonction dont le sens est déterminé une fois pour toutes. Ils sont mis en évidence en gras dans le texte imprimé et soulignés dans le texte manuscrit. Il n'y a pas de définition unique ou formelle du pseudocode, par conséquent, divers pseudo-codes sont possibles, différant par l'ensemble des mots de service et des constructions de base (de base).

Un exemple de pseudocode est un langage algorithmique scolaire en notation russe (école AY), décrit dans le manuel de A.G. Kushnirenko et al. "Fundamentals of Informatics and Computer Engineering", 1991. Dans ce qui suit, nous appellerons ce langage simplement "langage algorithmique".

Mots de service de base

Vue générale de l'algorithme:

alg nom d'algorithme (arguments et résultats)

les conditions d'applicabilité de l'algorithme sont données

vous avez besoin de l'objectif de l'algorithme

début de la description des valeurs intermédiaires

| séquence de commandes (corps de l'algorithme)

La partie de l'algorithme allant du mot alg au mot start s'appelle l'en-tête, et la partie entre les mots commençant et fin s'appelle le corps de l'algorithme.

Dans la phrase al, après le nom de l'algorithme, entre parenthèses, les caractéristiques (arg, res) et le type de la valeur (entier, chose, sym, lit ou log) de toutes les variables d'entrée (arguments) et de sortie (résultats) sont indiqués. Lors de la description de tableaux (tables), l'onglet de mot de service est utilisé, complété par des paires de limites pour chaque index des éléments du tableau.

Exemples de phrases alg:

alg Volume et surface d'un cylindre (arg item R, H, res item V, S)

alg Roots QvUr (arg chose a, b, c, rez chose x1, x2, rez lit t)

alg Exclude element (arg int N, arg rez thing tab A)

alg diagonale (arg cel N, arg cel tab A, res lit Otvet)

Des suggestions sont données et devraient être facultatives. Il est recommandé d'y écrire des instructions décrivant l'état de l'environnement de l'exécuteur de l'algorithme, par exemple:

remplacement d'alg (arg lit Str1, Str2, arg rez lit texte)

donné | les longueurs des sous-chaînes Str1 et Str2 sont les mêmes

besoin | partout dans la sous-chaîne de chaîne de texte Str1 est remplacé par Str2

alg Nombre de maxima (arg int N, arg tab réel A, res entier K)

donné | N\u003e 0

besoin | K - le nombre maximum d'éléments dans le tableau A

alg Resistance (arg chose R1, R2, arg int N, res chose R)

donné | N\u003e 5, R1\u003e 0, R2\u003e 0

besoin | R - résistance du circuit

Ici, dans les phrases, il est donné et nécessaire après le "|" les commentaires sont enregistrés. Les commentaires peuvent être placés à la fin de n'importe quelle ligne. Ils ne sont pas traités par le traducteur, mais ils rendent l'algorithme beaucoup plus facile à comprendre.

Les algorithmes peuvent être considérés comme des structures, constituées d'éléments de base séparés (c'est-à-dire de base).

Naturellement, avec une telle approche des algorithmes, l'étude des principes de base de leur conception devrait commencer par l'étude de ces éléments de base.

Pour les décrire, nous utiliserons le langage des schémas algorithmiques et le langage algorithmique scolaire.

La structure logique de tout algorithme peut être représentée par une combinaison de trois structures de base:

suivre,

ramification,

Les structures de base se caractérisent par la présence d'une entrée et d'une sortie.

Une partie de l'algorithme du mot alg au mot de bonne heure appelé le titre, et la partie entre les mots de bonne heure et con - le corps de l'algorithme.

Dans une phrase alg après le nom de l'algorithme, entre parenthèses, les caractéristiques (arg, res) et le type de valeurs (entier, chose, sim, allumé, log) pour toutes les variables d'entrée (arguments) et de sortie (résultats) sont indiqués.

Lors de la description de tableaux (tableaux), un mot spécial est utilisé languette, complété par des paires de limites pour chaque index des éléments du tableau.

Exemples de phrases alg:

alg Volume et surface d'un cylindre (arg item R, H, res item V, S)

alg Roots QvUr (arg chose a, b, c, rez chose x1, x2, rez lit t)

alg Exclude element (arg int N, arg rez thing tab A)

alg diagonale (arg cel N, arg cel tab A, res lit Otvet)

Phrases avec des mots donné et avoir besoin optionnel. Il est recommandé d'y écrire des instructions décrivant l'état de l'environnement de l'exécuteur de l'algorithme, par exemple:

Remplacement Alg (arg lit Str1, Str2, arg rez lit texte) donné | les longueurs des sous-chaînes Str1 et Str2 sont les mêmes. partout dans la sous-chaîne de chaîne de texte Str1 est remplacé par Str2

Alg Nombre de maxima (arg entier N, arg matière tab A, res entier K) donné | N\u003e 0 doit | K - le nombre maximum d'éléments dans le tableau A

Résistance Alg (arg chose R1, R2, arg int N, res chose R) donnée | N\u003e 5, R1\u003e 0, R2\u003e 0 doit | R - résistance du circuit

Ici dans les phrases donné et avoir besoin après le "|" les commentaires sont enregistrés. Les commentaires peuvent être placés à la fin de n'importe quelle ligne. Ils ne sont pas traités par le traducteur informatique, mais ils rendent l'algorithme beaucoup plus facile à comprendre.

Commandes du langage de programmation scolaire AYa

Opérateur d'assignation... Sert à évaluer les expressions et à affecter leurs valeurs à des variables. Vue générale de l'opérateur: A: \u003d B, où le signe ": \u003d" signifie une opération d'affectation, c'est-à-dire la commande pour remplacer la valeur précédente de la variable A sur le côté gauche par la valeur calculée de l'expression B sur le côté droit.


Par exemple, a: \u003d (b + c) * sin (Pi / 4);

i: \u003d i + 1 .

Pour entrée et sortie commandes d'utilisation des données

· contribution noms de variables

· production noms de variables, expressions, textes.

Pour ramification l'algorithme utilise les commandes si un et choix.

Organiser cycles - équipes pour et jusqu'à ce quedécrit ci-dessous.

Un exemple d'écriture d'un algorithme dans la langue de l'école AYa.

Alg Somme des carrés (arg int n, coupé intact S) donné | n\u003e 0 doit | S \u003d 1 * 1 + 2 * 2 + 3 * 3 + ... + n * n entier de début je contribution n; S : =0 ntspour i de 1 à n S : \u003d S + i * i kts sortie "S \u003d", Scon

LANGUE ALGORITHMIQUE - un système artificiel de moyens linguistiques, possédant des capacités expressives suffisantes pour lui permettre de spécifier toute prescription déterministe généralement comprise appartenant à une classe prédéterminée, dont la mise en œuvre conduit de données initiales variant dans certaines limites au résultat souhaité. Ce type de prescription s'appelle algorithmes , d'où le terme «langage algorithmique» lui-même. Il a été introduit en usage systématique en 1958 par G. Bottenbruch. Historiquement, le concept de langage algorithmique s'est formé dans les années 50. 20ième siècle dans le processus de formation de la programmation informatique en tant que discipline scientifique indépendante. Cependant, les origines théoriques de ce concept remontent aux œuvres des années 30. S.K.Kleene, E.L. Post, A.M. Turing et A. Church sur la clarification du concept mathématique général de l'algorithme. Actuellement, la théorie des langages algorithmiques, ainsi que les problèmes associés à leur développement et à leur utilisation, est l'une des branches les plus importantes de l'informatique.

Dans l'aspect logico-linguistique et épistémologique, les langages algorithmiques représentent l'un des modèles de l'impératif (humeur impérative), et agissent donc, d'une part, comme un moyen de fixation des connaissances opérationnelles, et d'autre part, comme un outil de machine, d'homme-machine ou même simplement de communication humaine. ... En peu de temps, les langages algorithmiques se sont transformés en un nouveau moyen cognitif, organiquement inclus dans l'activité humaine scientifique et pratique. Habituellement, ils sont soumis à l'exigence d '«universalité», qui consiste dans le fait qu'il devrait être possible de simuler avec leur aide des algorithmes parmi ceux qui apportent un raffinement du concept général d'algorithme (par exemple, les machines de Turing). La précision absolue de la syntaxe d'un langage algorithmique n'est pas nécessaire dans tous les cas. Il est obligatoire pour des considérations de fond. Mais dans certaines situations (par exemple, lorsque des textes écrits dans un langage algorithmique commencent à servir de moyen de communication avec un ordinateur), ce langage algorithmique doit être conçu sous la forme d'un langage formalisé avec une syntaxe bien définie et bien définie sémantique ses catégories grammaticales. La place centrale dans ces langages algorithmiques est occupée par les textes appelés programmes (en fait, ce sont eux qui expriment le concept d'algorithme). Le concept de programme est formulé en termes purement structurels de la syntaxe de ce langage, sans aucune référence aux catégories sémantiques. La description de la procédure d'exécution du programme est de même nature. Par conséquent, dans le rôle d'exécuteur d'algorithmes écrits dans des langages algorithmiques formalisés, non seulement une personne peut agir, mais aussi un dispositif automatique doté de capacités appropriées, par exemple un ordinateur. Les langages algorithmiques «théoriques» (comme le langage des machines de Turing ou les algorithmes de Markov normaux) sous-tendent la théorie générale des algorithmes.

Langages algorithmiques "pratiques" - les soi-disant. les langages de programmation pour ordinateurs (actuellement on en connaît plus d'un millier) sont utilisés dans la pratique de la résolution automatique de problèmes de nature très variée. Au début de la programmation, des langages algorithmiques «orientés machine» ont été utilisés (les langages dits «de bas niveau»), qui prenaient en compte la structure voire les caractéristiques de certains ordinateurs (jeu d'instructions, caractéristiques et structure de la mémoire, etc.). Puis ils ont été remplacés par des langages algorithmiques "orientés problèmes" (langages "de haut niveau"), qui ont libéré l'utilisateur du besoin de se concentrer sur un certain type de machine et ont ainsi donné à ses efforts une orientation mathématique beaucoup plus grande. Le développement ultérieur de l'idée d'un langage algorithmique était des langages de programmation de nature plus générale, pas nécessairement algorithmique. Comme les langages algorithmiques, ces langages visent en fin de compte également à obtenir des programmes machine, mais dans de nombreux cas leurs textes permettent une certaine liberté d'exécution et ne fournissent en règle générale que du matériel pour la synthèse des algorithmes recherchés, et non les algorithmes eux-mêmes. La pénétration toujours plus rapide des ordinateurs dans les sphères scientifique, culturelle et sociale conduit à une augmentation significative du rôle des langages algorithmiques dans la vie de la société, et cela se traduit notamment par le fait que les algorithmes et les programmes qui les implémentent (c'est-à-dire, in fine, les textes dans certains langages algorithmiques) acquièrent de plus en plus le caractère de ressources réelles du potentiel économique, scientifique et culturel de la société, ce qui pose à son tour un nombre important de problèmes méthodologiques et épistémologiques sérieux. En outre, l'utilisation toujours croissante (jusqu'à tous les jours) des langages algorithmiques conduit à l'établissement d'un style de pensée particulier, et la relation entre la pensée de ce type et celle mathématique traditionnelle est également un problème méthodologique important et peu développé.

Littérature:

1. Knut D.L'art de la programmation informatique, volumes 1–3. M., 1976;

2. Ershov A.P.Introduction à la programmation théorique: conversations sur la méthode. M., 1977;

3. Dijkstra E.Discipline de la programmation. M '1978.

Un ordinateur ne peut exécuter un programme que si les instructions qu'il contient sont représentées en code machine binaire, c'est-à-dire exprimé dans une langue dont l'alphabet se compose de uns et de zéros logiques. Pour les premiers ordinateurs, les programmes étaient compilés directement en codes machine, ce qui exigeait de hautes qualifications des programmeurs et beaucoup de travail, c'est pourquoi, déjà dans les années 40, le développement de langages de programmation a commencé, qui dans leur vocabulaire serait aussi proche que possible du langage naturel de l'homme. Ces langages de programmation sont appelés algorithmique.

Une étape intermédiaire vers le développement des langages algorithmiques était le langage Assembleur... Dans Assembler, les instructions ne sont pas représentées par des nombres binaires, mais comme des combinaisons de caractères (codes mnémotechniques), par lesquelles le sens de la commande peut être reproduit, ce qui élimine considérablement les difficultés et les inconvénients de la programmation en langage machine. Cependant, Assembly présente également des inconvénients: il s'agit d'un langage orienté machine et pour chaque ordinateur, son propre langage d'assemblage est créé. La programmation en Assembler nécessite qu'un programmeur ait une bonne connaissance de l'architecture (appareil) d'un ordinateur et est associée à des coûts de main-d'œuvre importants, en même temps, c'est avec l'aide d'Assembler que vous pouvez utiliser au mieux les ressources informatiques d'un programme (mémoire, vitesse), donc Assembler est encore largement distribué parmi les professionnels programmeurs.

Le premier langage algorithmique était Fortran, créée en 1957. par des spécialistes IBM sous la direction de John Beckus. Il existe aujourd'hui de nombreux langages algorithmiques: Pascal, C, Algol, PL1, Basic, Lisp, Prolog et bien d'autres.

Les langages algorithmiques et les assembleurs sont des langages de codage de caractères, i.e. aux langages qui ne fonctionnent pas avec des codes machine, mais avec des notations symboliques conventionnelles, donc les programmes écrits dans ces langages ne peuvent pas être exécutés directement sur un ordinateur. Pour qu'un tel programme fonctionne, son texte doit être converti en codes machine. Pour cela, il existe des programmes spéciaux de traduction (traducteurs). Il existe 2 types de traducteurs - compilateur et interprète. Compilateur diffuse le programme entier en une seule fois, et seulement après cela, son exécution est possible. Interprète - c'est un traducteur plus simple, il traduit séquentiellement les instructions du programme et l'exécute également en plusieurs parties.

21) La structure du programme en C / C ++.

Un programme C ++ se compose de les fonctions , descriptions et directives du préprocesseur ... L'une des fonctions doit avoir un nom principale ... L'exécution du programme commence par la première instruction de cette fonction. La définition de fonction la plus simple a le format suivant:


En règle générale, une fonction est utilisée pour calculer une valeur, son type est donc indiqué avant le nom de la fonction. Voici les informations les plus essentielles sur les fonctions:

  • si la fonction ne doit pas renvoyer de valeur, le type void est spécifié:
  • le corps de la fonction est un bloc et est donc entouré d'accolades;
  • les fonctions ne peuvent pas être imbriquées;
  • chaque instruction se termine par un point-virgule (sauf pour les instructions composées).

Un exemple de la structure d'un programme contenant les fonctions main, fl et f2:

Le programme peut être composé de plusieurs modules (fichiers source).

Quelques notes sur les E / S en C ++

C ++ n'a pas d'E / S intégrées - cela se fait à l'aide de fonctions, de types et d'objets contenus dans des bibliothèques standard. Deux méthodes sont utilisées: les fonctions héritées du langage C et les objets C ++.

Fonctionnalités d'E / S de base de type C:

int scanf (const char * format, ...) // entrée
int printf (const char * format, ...) // sortie

Ils effectuent une entrée et une sortie formatées d'un nombre arbitraire de valeurs en fonction de la chaîne de format. La chaîne de format contient des caractères qui sont copiés dans le flux (à l'écran) en sortie ou demandés au flux (à partir du clavier) en entrée, et des spécifications de conversion qui commencent par un signe% qui sont remplacées par des valeurs spécifiques en entrée et en sortie.

Un exemple de programme utilisant des fonctions d'E / S de style C:

#comprendre
int main () (
int i;
printf ("Veuillez entrer un entier \\ n");
scanf ("% d", & i);
printf ("Vous avez entré le nombre% d, merci!", i);
return 0;
}

La première ligne de ce programme est une directive de préprocesseur, selon laquelle un fichier d'en-tête est inséré dans le texte du programme contenant une description des fonctions d'entrée / sortie utilisées dans le programme (dans ce cas, les crochets sont un élément du langage). Toutes les directives de préprocesseur commencent par le signe #.

La troisième ligne est une description d'une variable entière nommée i.

La fonction printf sur la quatrième ligne imprime l'invite "Veuillez saisir un entier" et continue sur une nouvelle ligne selon la séquence d'échappement \\ n. La fonction scanf place un entier entré à partir du clavier dans la variable i (le signe & signifie l'opération d'obtention d'une adresse), et l'opérateur suivant affiche la chaîne spécifiée à l'écran, remplaçant la spécification de conversion
sur la valeur de ce nombre.

Et voici à quoi ressemble le même programme en utilisant la bibliothèque de classes C ++:

#comprendre
int main () (
int i;
cout<< "Введите целое число\\ n"; cin \u003e\u003e i;
cout<< "Вы ввели число " << i << ", спасибо!";
return 0;
}

Le fichier d'en-tête contient une description d'un ensemble de classes pour la gestion des E / S. Il définit les objets de flux standard cin pour l'entrée au clavier et cout pour la sortie à l'écran, ainsi que les opérations de flux.< < и чтения из потока >>.

22) L'alphabet et les identifiants en langage C / C ++.

ALPHABET
lettres latines majuscules et minuscules et trait de soulignement;
Chiffres arabes de 0 à 9;
caractères d'espacement: espace, tabulations, caractères de nouvelle ligne.
caractères spéciaux:

Les lexèmes de langue sont constitués de caractères alphabétiques:
identifiants;
mots clés (réservés);
signes d'opération;
constantes;
délimiteurs (crochets, point, virgule, espace).

IDENTIFIANTS
L'identifiant peut utiliser des lettres latines, des chiffres et des traits de soulignement;
Les lettres majuscules et minuscules sont différentes;
Le premier caractère d'un identifiant peut être une lettre ou un trait de soulignement, mais pas un nombre;
Les espaces dans les noms ne sont pas autorisés;
La longueur d'un identifiant n'est pas limitée par la norme, mais certains compilateurs et éditeurs de liens lui imposent des limitations;
L'identifiant ne doit pas être le même que les mots-clés;
Il n'est pas recommandé de commencer les identificateurs par un caractère de soulignement (ils peuvent coïncider avec les noms de fonctions ou de variables système);
Sur les identifiants utilisés pour définir les variables externes;
Il existe des limitations de l'éditeur de liens (l'utilisation de différents linkers ou versions d'éditeur de liens impose des exigences différentes sur les noms des variables externes).

Mots clés C ++

23) Types de données entiers en C / C ++.

Un type de données entier est conçu pour représenter des entiers ordinaires dans la mémoire de l'ordinateur. Le type entier principal et le plus courant est le type int... Ses variétés sont beaucoup moins utilisées: court (entier court) et longue (entier long). Aussi, le type carboniser (personnage). De plus, si nécessaire, vous pouvez utiliser le type long long (long-long!), qui, bien que non défini par la norme, est pris en charge par de nombreux compilateurs C ++. Par défaut, tous les types d'entiers sont iconique, c'est à dire. le bit le plus significatif de ces nombres détermine le signe du nombre: 0 est un nombre positif, 1 est un nombre négatif. En plus des nombres signés en C ++, vous pouvez utiliser non signé... Dans ce cas, tous les chiffres sont impliqués dans la formation d'un entier. Lors de la description de variables entières non signées, le mot est ajouté non signé (non signé).

Tableau récapitulatif des types de données entiers signés:

Type de données Taille, octets Gamme de valeurs
carboniser -128 ... 127
court -32768 ... 32767
int -2147483648 ... 2147483647
longue -2147483648 ... 2147483647
long long -9223372036854775808 ... 9223372036854775807

Tableau récapitulatif des types de données entiers non signés:

Type de données Taille, octets Gamme de valeurs
caractère non signé 0 ... 255
court non signé 0 ... 65535
unsigned int (vous pouvez simplement non signé) 0 ... 4294967295
non signé longtemps 0 ... 4294967295
non signé longtemps long 0 ... 18446744073709551615

Il ne vaut guère la peine de se souvenir des valeurs limites, surtout pour les entiers de 4 ou 8 octets, il suffit de savoir au moins dans quel ordre ces valeurs peuvent être, par exemple, tapez int - environ 2 · 10 9.

En pratique, il est recommandé d'utiliser le type entier de base partout, c'est-à-dire int... Le fait est que les données de type entier de base sont presque toujours traitées plus rapidement que les données d'autres types d'entiers. Types courts ( carboniser, court) conviennent pour stocker de grands tableaux de nombres afin d'économiser de la mémoire, à condition que les valeurs des éléments ne dépassent pas la limite pour ces types. Les types longs sont nécessaires dans une situation où il n'y a pas assez de type int.

24) Types de données réels en C / C ++.

Une caractéristique des nombres réels (réels) est qu'ils sont presque toujours stockés dans la mémoire de l'ordinateur à peu près, et lors de l'exécution d'opérations arithmétiques sur de telles données, une erreur de calcul s'accumule.

Il existe trois types de données réelles: flotte, double et long double... Le type principal est considéré double... Ainsi, toutes les fonctions mathématiques fonctionnent par défaut avec le type double... Le tableau ci-dessous présente les principales caractéristiques des types réels:

Un type long double actuellement est généralement le même que le type double et n'est généralement pas utilisé dans la pratique. Avec les anciens compilateurs 16 bits, des données comme long double ont une taille de 10 octets et sont précis à 19 chiffres décimaux.

Il est recommandé de n'utiliser que le type partout double... Il est toujours plus rapide de travailler avec, il y a moins de risques de perte de précision notable avec un grand nombre de calculs. Un type flotte ne peut être utile que pour stocker de grands tableaux, à condition que ce type soit suffisant pour résoudre le problème.

25) Type de données caractère en C / C ++.

Il n'y a aucun type de données dans la norme C ++ qui puisse être considéré comme vraiment symbolique. Pour représenter des informations symboliques, il existe deux types de données qui conviennent à cet effet, ce sont carboniser et wchar_t, bien que ces deux types soient par nature des types entiers. Par exemple, vous pouvez prendre le caractère «A» et le diviser par le nombre 2. Au fait, que se passe-t-il? Indice: caractère d'espace. Pour les types de caractères "normaux", tels que Pascal ou C #, les opérations arithmétiques sur les caractères sont interdites.

Un type carboniser utilisé pour représenter des caractères conformément au système de codage ASCII (American Standard Code for Information Interchange). C'est un code à sept bits, il suffit d'encoder 128 caractères différents avec des codes de 0 à 127. Les caractères avec des codes de 128 à 255 sont utilisés pour encoder les polices nationales, les caractères pseudo-graphiques, etc.

Un type wchar_t est conçu pour fonctionner avec un jeu de caractères pour lequel 1 octet ne suffit pas, par exemple Unicode. Taille du type wchar_t généralement 2 octets. Si vous devez utiliser des constantes de chaîne comme wchar_t, puis ils sont écrits avec le préfixe Lpar exemple L "Word".

26) L'opérateur d'affectation et l'opérateur vide en C / C ++

Opérateur d'assignation est l'opérateur le plus couramment utilisé. Son but est d'attribuer une nouvelle valeur à une variable. Il existe trois formes de cet opérateur en C ++.

1)Opérateur d'affectation simple écrit comme ceci:

variable \u003d expression;

Cet opérateur fonctionne comme suit: d'abord, l'expression écrite à droite du symbole d'opération est évaluée = (égal), alors le résultat est affecté à la variable à gauche du signe = ... Le type du résultat doit être le même que le type de la variable écrite à gauche, ou lui être réductible.

À gauche du panneau = il ne peut y avoir qu'une variable, à droite vous pouvez écrire à la fois une constante et une variable et, en général, une expression de toute complexité.

Exemples d'opérateurs

y \u003d x + 3 * r;

s \u003d sin (x);

2)Affectation multiple - dans un tel opérateur, séquentiellement de droite à gauche, plusieurs variables se voient attribuer la même valeur, par exemple:

a \u003d b \u003d c \u003d 1;

Ainsi, vous pouvez immédiatement déterminer, par exemple, que dans un triangle équilatéral, tous les côtés sont égaux au même nombre 1. L'opérateur ci-dessus équivaut à l'exécution séquentielle de trois opérateurs:

Naturellement, il est plus facile pour nous d'écrire un opérateur, pas trois. Le programme est plus court, le texte semble plus naturel et cette construction fonctionne un peu plus vite.

3)Affectation lors de l'exécution d'une opération en forme générale s'écrit comme suit:

variable op_sign \u003d expression;

et équivaut à écrire

variable \u003d variable expression op_sign;

Par exemple, l'opérateur:

s + \u003d 5; // 1ère option

fait la même chose que l'opérateur

s \u003d s + 5; // 2ème option

à savoir: prendre l'ancienne valeur de la variable s, ajoutez-y le nombre 5 et écrivez la valeur résultante dans la variable s.

Comme vous pouvez le voir, l'enregistrement de la 1ère variante est plus court que l'enregistrement de la 2ème variante, et il est exécuté plus rapidement, puisque dans la 1ère variante l'adresse de la variable s est calculé 1 fois et dans la 2ème variante - deux fois.

Opérateur vide

Une instruction vide est une instruction qui ne fait rien. Pourquoi avez-vous besoin d'un opérateur "inutile"?

Un opérateur vide est utilisé dans les cas où, selon la syntaxe du langage, il est nécessaire d'écrire un opérateur, mais selon la logique du programme, nous n'allons rien faire. Ainsi, une instruction vide peut être requise dans une instruction de branche lorsque rien ne doit être fait sur une branche, également pour définir une étiquette pour un saut dans le texte du programme, et parfois pour un corps de boucle vide.

Un opérateur vide est un seul caractère ; (point-virgule), par exemple:

c \u003d a + b; ;

Voici le premier personnage ; (point-virgule) complète l'instruction d'affectation et le deuxième caractère nous donne simplement une instruction vide. Dans cette situation, un opérateur vide n'est pas du tout nécessaire (mais ce n'est pas non plus une erreur de syntaxe!), Il n'est fourni qu'à titre de clarification. Des exemples plus "raisonnables" d'utilisation de l'opérateur vide seront fournis plus loin dans les rubriques associées.

27) Opérations arithmétiques en C / C ++.

Ce sont les opérations les plus couramment utilisées. Leur signification est proche de ce que l'on sait d'un cours de mathématiques. Alors, listons-les:

Les opérations d'addition et de soustraction ont une priorité plus faible que la multiplication, la division et le reste. Pour changer l'ordre de calcul, utilisez des parenthèses, par exemple pour multiplier par 2 la somme de deux nombres UNE et B tu peux écrire:

Plus loin. Comme vous pouvez le voir d'après les résultats obtenus, en C ++ un caractère / signifie deux opérations différentes. Si un ou les deux opérandes sont réels, alors la division ordinaire est effectuée, si les deux opérandes sont des entiers, alors la division entière est effectuée et le résultat sera de type entier. L'utilisation de cette opération nécessite une attention particulière, par exemple, si vous programmez le calcul d'une expression mathématique

littéralement, i.e. Alors:

1/3 * péché (2 * X)

puis le résultat quelle que soit la valeur X sera toujours nul, puisque l'expression 1/3 signifie division entière. Pour résoudre le problème, il suffit de rendre réel l'un des opérandes

1,0 / 3 * sin (2 * X)

L'opération de calcul du reste ( % ) ne s'applique qu'aux opérandes entiers.

Changement de signe... Opération unaire " - "Signifie un changement de signe. Comme vous pouvez le voir dans le tableau général de toutes les opérations, il a une priorité très élevée - supérieure, par exemple, à l'opération de multiplication. Par conséquent, dans l'expression

d'abord, le signe est changé pour UNEpuis multiplication -UNE sur le B.

Pour l'appairage, il y a aussi une opération unaire plus, c'est à dire. peut écrire

À quelles fins est-il utilisé? C'est dur à dire. Mais il existe une telle possibilité.

Les opérations d'auto-incrémentation et d'autodécrémentation sont plus intéressantes et surtout très courantes.

LA CLOCHE

Il y a ceux qui ont lu cette nouvelle avant vous.
Abonnez-vous pour recevoir les derniers articles.
Email
Nom
Nom de famille
Comment voulez-vous lire The Bell
Pas de spam