Langue cc. Fonction Scanf C : description. Type de données défini ou non défini

Apprendre les bases et les subtilités du langage de programmation C++. Un manuel avec des tâches pratiques et des tests. Voulez-vous apprendre à programmer? Alors vous êtes au bon endroit : voici une formation gratuite en programmation. Que vous soyez expérimenté ou non, ces leçons de programmation vous aideront à commencer à créer, compiler et déboguer des programmes C++ dans divers environnements de développement : Visual Studio, Code::Blocks, Xcode ou Eclipse.

Beaucoup d'exemples et d'explications détaillées. Parfait aussi bien pour les débutants (les nuls) que pour les plus avancés. Tout est expliqué de A à Z jusque dans les moindres détails. Ces leçons (200+) vous donneront une bonne base pour comprendre la programmation non seulement en C++, mais également dans d'autres langages de programmation. Et c'est absolument gratuit !

Sont également abordés la création étape par étape d'un jeu en C++, la bibliothèque graphique SFML et plus de 50 tâches pour tester vos compétences et connaissances en C++. Un bonus supplémentaire est.

Pour republier +20 au karma et ma gratitude !

Chapitre n°0. Introduction. Début des travaux

Chapitre n°1. Bases du C++

Chapitre n°2. Variables et types de données de base en C++

Chapitre n°3. Opérateurs en C++

Chapitre n°4. Portée et autres types de variables en C++

Chapitre n ° 5. L'ordre dans lequel le code est exécuté dans un programme. Boucles et branches en C++

Les ordinateurs sont peut-être les outils les plus polyvalents dont l’humanité dispose. Ils sont capables d'effectuer des calculs incroyables, ils vous permettent de stocker une énorme quantité d'informations, des parties complètement différentes de la planète, et en même temps de les échanger facilement, quel que soit leur emplacement. Les ordinateurs facilitent de nombreuses tâches quotidiennes et permettent d’automatiser de nombreux processus de routine qui seraient très fastidieux et ennuyeux pour un humain. Il y a tellement de choses que les ordinateurs peuvent faire, mais néanmoins, contrairement aux humains, les ordinateurs ne possèdent pas d’intelligence. Pour automatiser même le processus le plus simple, vous devez indiquer clairement et sans ambiguïté à l'ordinateur ce qu'il doit faire exactement. Malheureusement, notre langage et le langage informatique sont complètement différents. Ainsi, entre la machine et l’homme, il existe une sérieuse barrière linguistique qui doit être surmontée d’une manière ou d’une autre, sinon l’ordinateur ne nous comprendra pas. Et tant que les ordinateurs ne nous comprendront pas, ils ne feront rien tout seuls. Un grand nombre de langages de programmation ont été inventés comme moyen de communication entre une personne et un ordinateur. À l'aide de langages de programmation, nous créons des programmes et l'ordinateur travaille directement avec les programmes. Les programmes eux-mêmes sont des ensembles d'instructions qu'un ordinateur peut comprendre et exécuter.

Types de programmes

Afin de communiquer efficacement avec l’ordinateur, comme nous le souhaitons, il existe un large éventail de langages de programmation.

Selon le type de projet, de nombreux facteurs doivent être pris en compte lors du choix d'un langage de programmation. Voici une liste des facteurs les plus notables :

Compilation, interprétation et compilation JIT

Le processus de compilation traduit le code écrit dans un langage de programmation vers le langage natif de la machine cible. Le programme qui effectue ce processus s’appelle un compilateur. La compilation peut rendre le code exécuté assez rapidement, surtout si le compilateur est efficace en matière d'optimisation. Mais le fait est que le code résultant ne peut pas fonctionner sur différents systèmes d'exploitation et que le processus de compilation prend un certain temps, et plus il y a de code, plus le processus de compilation est long. Il convient de noter que lors de toute modification du code du programme, il est nécessaire de le compiler et de l'exécuter ensuite seulement.

Les langages de programmation interprétés sont lus par un programme appelé interprète et exécutés par le même programme. Les langages de programmation interprétés peuvent fonctionner sur différents systèmes d'exploitation, tout comme un interprète, et n'ont même pas de longs temps de compilation. Mais les programmes écrits à l’aide de langages interprétés ont tendance à s’exécuter beaucoup plus lentement que les programmes compilés équivalents.

Et enfin, la compilation dite à la volée (ou compilation JIT). Ces langages sont rapidement compilés au moment du lancement du programme. En règle générale, les programmes écrits dans les langages JIT ne sont pas optimisés, ce qui accélère le processus de compilation et rétablit l'équilibre entre performances et compatibilité multiplateforme.

Niveaux de programmation élevés ou faibles

Les langages de bas niveau fonctionnent pour la plupart directement avec le matériel et sont donc les mieux adaptés à l'écriture de pilotes de périphériques. Les pilotes sont des programmes qui contrôlent le matériel et y ont un accès direct. Cependant, un programme écrit dans un langage de bas niveau est généralement difficile à porter sur d’autres plateformes. Et donc, pour chaque système d’exploitation, le même appareil est livré avec des pilotes différents. Les langages de programmation de bas niveau se compilent presque toujours.

Dans les langages de haut niveau, l’accent est entièrement mis sur le concept de langage. Autrement dit, un tel langage de programmation doit être facile à comprendre, par exemple pour représenter des données sous forme de tableaux, de chaînes, d'objets, etc. Un langage de haut niveau est généralement plus facile à comprendre qu'un langage de bas niveau. Et, en règle générale, développer un programme dans un langage de haut niveau est beaucoup plus facile et plus rapide que dans un langage de bas niveau. Comme vous pouvez le constater, différents niveaux de programmation sont destinés à des tâches complètement différentes, et vous ne devez pas comparer les fonctionnalités des langages à différents niveaux, cela n'a aucun sens.

Systèmes de types de données en langage de programmation

Pour chaque langage de programmation, il existe une spécification qui définit diverses règles que les langages de programmation doivent suivre. Certaines langues n'ont pas de types de données, cela ne s'applique donc pas à elles. Cependant, la plupart des langages (y compris C++) ont des types de données, ces informations vous seront donc utiles.

Système de type de données fort ou faible

Un système de saisie faible n'impose aucune restriction ; le programmeur doit le surveiller. Quand je parle de « système de données faible », je veux dire qu’un langage doté d’un tel système de données ne réglemente pas strictement les conversions de types de données disponibles. Par exemple, si vous transmettez une chaîne ou un symbole au lieu d'un nombre à la fonction de multiplication, les langages de programmation non strictement typés exécuteront un tel code, bien que le résultat de la multiplication perde tout sens, puisqu'une chaîne ne peut pas être multipliée par un nombre. De plus, le résultat de cette multiplication dénuée de sens sera imprévisible. Si le langage de programmation est strictement typé, alors au stade de la compilation, le traducteur signalera une erreur et arrêtera le processus de construction du projet. Par exemple,

// exemple de programme en C++ #include en utilisant l'espace de noms std ; int main())( char string = "exemple"; int number = 5; cout<< string * number << endl; // умножаем строку на число }

En conséquence, le compilateur signalera une erreur :

erreur : opérandes non valides des types 'char' et 'int' en binaire 'operator*'

Nous essaierons de faire la même chose dans un langage de programmation non fortement typé - php. Veuillez noter que même lors de la déclaration de variables, vous n'avez pas besoin de spécifier le type de données.

Le résultat de l'exécution de ce code sera nul. Aucune erreur ne se produira, même s'il semble que vous ne puissiez pas multiplier une chaîne par un nombre. Mais en PHP, tout est possible. Le compilateur du langage PHP ne signalera pas d'erreur, le script fonctionnera et produira même le résultat, et si notre programme se compose de 1000 lignes de code, alors il nous sera difficile de trouver cette erreur. Il s'agit d'un exemple frappant d'un langage de programmation avec un « système de type de données faible », c'est-à-dire que la prévention de telles opérations absurdes repose entièrement sur les épaules du programmeur.

Type de données défini ou non défini

Cela s'applique aux langages compilés et interprétés. De nombreux langages nécessitent une définition explicite du type de variables, il n'y a donc aucune incertitude, le compilateur et l'interprète savent clairement quoi faire. Certains langages de programmation ne nécessitent pas de définition explicite du type de variables. Le type de données est déterminé automatiquement en fonction du contenu de la variable.

Type de données statique ou dynamique

Si le langage est typé statiquement, le compilateur/interpréteur effectue une vérification de type une fois avant le processus de compilation/interprétation. Si le type de données est dynamique, les types de données sont vérifiés au moment de l'exécution.

Système de type de données sûr ou non sécurisé

Certaines situations peuvent conduire à des résultats inattendus ou à des erreurs. Un langage sûr introduira autant de restrictions que possible pour garantir que de telles situations ne se produisent pas. Alors qu'un langage dangereux fait peser toute la responsabilité sur le programmeur.

Ces facteurs peuvent caractériser un ou plusieurs langages de programmation.

Paradigmes de programmation pris en charge

Les paradigmes de programmation sont des méthodologies ou des méthodes de programmation prises en charge par un langage de programmation. Voici une liste des principaux paradigmes :

Paradigme déclaratif

Un langage de programmation déclaratif mettra davantage l’accent sur l’objectif plutôt que sur les moyens d’atteindre cet objectif. Il suffit d'indiquer ce qui doit être réalisé, mais il n'est pas nécessaire d'indiquer quels moyens utiliser. Ce paradigme évite les effets secondaires indésirables pouvant survenir lors de l’écriture de votre propre code.

Paradigme fonctionnel

La programmation fonctionnelle est un sous-ensemble de la programmation déclarative qui tente de résoudre des problèmes en termes d'équations et de fonctions mathématiques. La programmation fonctionnelle traite les variables et les objets comme des données qui ne sont pas partagées, contrairement aux langages impératifs.

Paradigme généralisé

La programmation générique se concentre sur l'écriture d'algorithmes en termes de types de données à définir. Autrement dit, le même algorithme peut fonctionner avec différents types de données. Cette approche peut être un outil très puissant, mais seulement si elle est bien mise en œuvre.

Paradigme impératif

Les langages impératifs permettent aux programmeurs de donner à l'ordinateur une liste ordonnée d'instructions nécessaires pour accomplir une tâche. Les langages de programmation impératifs s'opposent aux langages de programmation déclaratifs.

Paradigme structurel

Les langages de programmation structurels visent à fournir une certaine forme de code : une structure hiérarchique. Lorsque la structure du code est clairement visible, l’ordre dans lequel les instructions sont exécutées devient intuitivement clair. De tels langages découragent généralement le « saut » d'une partie du code à une autre, par exemple l'opérateur goto que nous connaissons tous, qui est défini dans les langages C et C++.

Paradigme procédural

Le langage de programmation procédural fait référence aux langages de programmation structurés qui prennent en charge le concept de procédure ou de sous-programme.

Paradigme orienté objet

La programmation orientée objet (parfois abrégée POO) est un sous-ensemble de la programmation structurée qui exprime les programmes en termes d'« objets ». Ce paradigme permet de réutiliser le code, et cette approche est assez simple à comprendre.

Standardisation

Les langues ont-elles une norme officielle ? La normalisation est très importante pour garantir une compréhension sans conflit du programme par différents compilateurs/interprètes. Certaines langues sont normalisées par l'American National Standards Institute (ANSI), d'autres sont normalisées par l'Organisation internationale de normalisation (ISO). Tous les langages de programmation doivent être standardisés, sinon il n'y aura pas d'accord sur ce qui est correct et incorrect dans la syntaxe.

Caractérisons le langage de programmation C++

Maintenant que nous avons examiné les principales caractéristiques des langages de programmation, déterminons à quels facteurs le langage de programmation C++ satisfait.

C++ est un langage de programmation normalisé ISO.

Pendant un certain temps, le C++ n'avait pas de norme officielle, mais depuis 1998, le C++ a été normalisé par un comité ISO.

Langage compilé C++.

C++ se compile directement en code machine, ce qui en fait l'un des langages les plus rapides au monde.

Le C++ est un langage fortement typé.

Le C++ suppose que le programmeur sait ce qu'il fait et autorise un nombre incroyable de possibilités, limitées uniquement par l'imagination.

C++ prend en charge les types de données statiques et dynamiques.

Ainsi, la vérification du type de données peut être effectuée au moment de la compilation ou au moment de l'exécution. Et cela prouve une fois de plus la flexibilité du C++.

C++ prend en charge de nombreux paradigmes.

C++ prend en charge les paradigmes de programmation procédurale, générique et orientée objet, ainsi que de nombreux autres paradigmes.

C++ est un langage de programmation portable.

En tant que l'un des langages les plus utilisés au monde et en tant que langage ouvert, le C++ dispose d'un large éventail de compilateurs qui s'exécutent sur diverses plates-formes. Le code de la bibliothèque standard C++ s'exécutera sur de nombreuses plates-formes.

C++ est entièrement compatible avec le langage C

En C++, vous pouvez utiliser les bibliothèques C et elles fonctionneront correctement.

1. Introduction

La programmation nécessite de nouveaux modèles algorithmiques universels, et le matériel implémente les algorithmes non seulement sous une forme différente, mais également sur la base d'un modèle algorithmique différent - les automates. Emprunter la technologie au développement matériel est l’idée clé derrière la programmation des automates. Cependant, la synthèse d'appareils numériques est différente de la programmation. Mais lors de l'emprunt d'un modèle, d'une part, il n'est pas conseillé de le modifier de manière significative et, d'autre part, on ne peut ignorer la théorie et la pratique déjà existantes de la programmation.

Nous examinerons ensuite la technologie SWITCH pour la conception de programmes d'automates, dans laquelle vous rencontrez constamment des processus similaires. D’une part, cela a tellement modifié le modèle de machine à états finis qu’il l’a fait sortir du cadre de la théorie des automates. Et, d’un autre côté, cela introduit dans la programmation des concepts difficiles à percevoir pour les programmeurs et, parfois, tout simplement superflus, car il existe des analogues plus familiers de la théorie des programmes et de la pratique de la programmation.

Comme base pour discuter des problèmes de programmation automatique, nous prendrons la récente conférence de Shalyto A.A. et ses articles « programmation » vers la définition du paradigme de programmation automatique.

C++ (lire c-plus-plus) est un langage de programmation généraliste compilé et typé statiquement dans lequel vous pouvez créer des programmes de n'importe quel niveau de complexité.
Depuis plus de 20 ans, ce langage fait partie des trois langages de programmation les plus populaires et les plus demandés. (Vous pouvez le vérifier en visitant le site Web TIOBE).
Le langage est né au début des années 1980, lorsque Björn Stroustrup, employé des Bell Labs, a proposé un certain nombre d'améliorations au langage C pour ses propres besoins.

Bjarne Stroustrup – créateur du langage C++

Stroustrup a décidé d'étendre le langage C avec les capacités du langage Simula. C, étant le langage de base du système UNIX sur lequel fonctionnaient les ordinateurs Bell, est rapide, riche en fonctionnalités et portable. Stroustrup a ajouté la possibilité de travailler avec des classes et des objets. En conséquence, les problèmes pratiques de modélisation se sont révélés faciles à résoudre tant en termes de temps de développement (grâce à l'utilisation de classes de type Simula) qu'en termes de temps de calcul (grâce à la vitesse du C).
Voici comment le développeur du langage lui-même en parle :



En 1998, le premier standard de langage, connu sous le nom de C++98, a été publié par un comité de normalisation. Le C++ continue d'évoluer pour répondre aux demandes actuelles. L'un des groupes développant le langage C++ et soumettant des propositions pour l'améliorer au Comité des normes C++ est Booster, qui s'occupe, entre autres, d'améliorer les capacités du langage en y ajoutant des fonctionnalités de métaprogrammation. La dernière norme a été publiée en 2017 et s'appelle C++17. La prochaine norme ne tardera pas à arriver et devrait apparaître en 2020.
Personne ne possède les droits sur le langage C++ ; il est gratuit. En mars 2016, un groupe de travail WP21 C++ a été créé en Russie. Le groupe était organisé pour collecter des propositions pour le standard C++, les envoyer à un comité et les défendre lors des assemblées générales de l'Organisation internationale de normalisation.
C++ est un langage multi-paradigmes (du mot paradigme – un style d'écriture de programmes informatiques), comprenant un large éventail de styles et de technologies de programmation différents. Il est souvent classé comme langage orienté objet, mais ce n’est pas le cas à proprement parler. Au cours du processus de travail, le développeur bénéficie d'une liberté absolue dans le choix des outils afin que le problème résolu à l'aide d'une approche particulière soit résolu aussi efficacement que possible. En d’autres termes, C++ n’oblige pas le programmeur à adhérer à un seul style de développement de programme (par exemple, orienté objet).
C++ dispose d'une riche bibliothèque standard qui comprend des conteneurs et des algorithmes courants, des E/S, des expressions régulières, la prise en charge du multithreading et d'autres fonctionnalités. Le C++ a influencé de nombreux langages de programmation, notamment : Java, C#, D. Le C++ appartenant à une famille de langages basés sur la syntaxe du langage C, vous pouvez facilement maîtriser d'autres langages de programmation de cette famille : JavaScript, PHP , Perl, Objective-C et bien d'autres . etc., y compris la langue mère elle-même - C. ()
Au cours de son existence, le langage C++ a acquis des mythes tenaces qui sont facilement réfutés (voir ici : Partie 1 et Partie 2)

Historique du langage et publication des standards

1983

Le créateur du langage est Björn Stroustrup, un employé des Bell Labs, a présenté une première version du langage C++ (« C avec classes »)

1985

Première version commerciale du C++, le langage prend son nom moderne

1986

Sortie de la première édition de The C++ Programming Language - un livre dédié au C++ écrit par Björn Stroustrup

1998

La norme internationale pour le langage C++ a été ratifiée : ISO/IEC 14882:1998 « Standard pour le langage de programmation C++ »

2003
2005

Le rapport technique de la bibliothèque 1 (TR1) a été publié. Bien qu'il ne fasse pas officiellement partie de la norme, le rapport décrit les extensions de la bibliothèque standard qui devraient être incluses dans la prochaine version du langage C++.

2011

Publication d'une nouvelle norme – C++11 ou ISO/IEC 14882:2011 ; la nouvelle norme comprenait des ajouts au noyau du langage et une extension de la bibliothèque standard, y compris la plupart des TR1

2014

Sortie de la norme C++14 (« International Standard ISO/IEC 14882:2014(E) Programming Language C++ ») ; C++14 peut être considéré comme une petite extension par rapport à C++11, contenant principalement des corrections de bugs et des améliorations mineures.

2017

La sortie d'un nouveau standard – C++1z (C++17). Cette norme a introduit de nombreux changements et ajouts. Par exemple, STD comprenait des bibliothèques du standard C11, un système de fichiers basé sur boost::filesystem et la plupart de la bibliothèque expérimentale TS I.

2020

C++20 est le nom non officiel de la norme ISO/IEC pour le langage de programmation C++, qui devrait suivre C++17. Projet de norme N4800.

Philosophie C++

Dans son livre The Design and Evolution of C++ (2007), Björn Stroustrup décrit les principes qu'il a suivis lors de la conception du C++ (en abrégé) :

  • Obtenez un langage généraliste avec des types de données statiques, l'efficacité et la portabilité du langage C.
  • Prend en charge directement et complètement une variété de styles de programmation.
  • Donnez au programmeur la liberté de choix, même si cela lui donne la possibilité de faire un mauvais choix.
  • Maintenez autant que possible la compatibilité avec C, rendant ainsi possible une transition facile depuis la programmation C.
  • Évitez les divergences entre C et C++ : toute construction valide dans les deux langages doit signifier la même chose dans chacun d'eux et conduire au même comportement du programme.
  • Évitez les fonctionnalités qui dépendent de la plate-forme ou qui ne sont pas universelles.
  • "Ne payez pas pour ce que vous n'utilisez pas" - aucune fonctionnalité linguistique ne devrait entraîner une diminution des performances des programmes qui ne l'utilisent pas.
  • Ne nécessite pas un environnement de programmation trop compliqué.

C et C++

La syntaxe du C++ est héritée du langage C. Bien que, formellement, l'un des principes du C++ reste le maintien de la compatibilité avec le langage C, dans les faits, les groupes de normalisation de ces langages n'interagissent pas et les modifications qu'ils apportent ne le sont pas. seulement ils ne sont pas corrélés, mais se contredisent souvent fondamentalement sur le plan idéologique. Ainsi, les éléments que les nouvelles normes C ajoutent au noyau se trouvent dans les éléments standard C++ de la bibliothèque standard et ne sont pas du tout dans le noyau, par exemple les tableaux dynamiques, les tableaux à limites fixes, les fonctions de traitement parallèle. Selon Stroustrup, combiner le développement de ces deux langues serait très bénéfique, mais il est peu probable que cela soit possible pour des raisons politiques. La compatibilité pratique entre C et C++ va donc progressivement se perdre.
Dans cet exemple, selon le compilateur utilisé, « C++ » ou « C » sera affiché :

Programme 9.1

#inclure int main() ( printf("%s\n", (sizeof("a") == sizeof(char)) ? "C++" : "C"); return 0; )

Cela est dû au fait que les constantes de caractères en C sont de type int et qu'en C++ elles sont de type char , mais les tailles de ces types sont différentes.

Modèles de cycle de vie des applications

Cycle de vie un logiciel est une période de temps qui commence à partir du moment où une décision est prise sur la nécessité de créer un produit logiciel et se termine au moment où il est complètement retiré du service. Ce cycle est le processus de création et de développement de logiciels. Il existe plusieurs modèles de cycle de vie.
Modèle en cascade Le cycle de vie (modèle anglais en cascade) a été proposé en 1970 par Winston Royce. Il prévoit la mise en œuvre séquentielle de toutes les étapes du projet dans un ordre strictement fixé. Le passage à l'étape suivante signifie l'achèvement complet des travaux de l'étape précédente. Les exigences déterminées au stade de la formation des exigences sont strictement documentées sous forme de spécifications techniques et sont enregistrées pour l'ensemble du développement du projet. Chaque étape aboutit à la publication d'un ensemble complet de documentation suffisant pour permettre la poursuite du développement par une autre équipe de développement.
Étapes du projet selon le modèle en cascade :

  1. Formation des exigences ;
  2. Conception;
  3. Mise en œuvre;
  4. Essai;
  5. Mise en œuvre;
  6. Opération et maintenance.

Dans le modèle en cascade, le passage d'une phase du projet à une autre suppose que le résultat de la phase précédente soit tout à fait correct. Dans les grands projets, cela est presque impossible à réaliser. Ce modèle ne convient donc que pour développer un petit projet. (W. Royce lui-même n'a pas adhéré à ce modèle et a utilisé un modèle itératif).
Modèle itératif
Une alternative au modèle en cascade est le modèle de développement itératif et incrémental (IID), reçu de T. Gilb dans les années 70. nom du modèle évolutif. Le modèle IID implique de diviser le cycle de vie du projet en une séquence d'itérations, dont chacune ressemble à un « mini-projet », incluant tous les processus de développement appliqués à la création de fonctionnalités plus petites par rapport au projet dans son ensemble. Le but de chaque itération est d'obtenir une version fonctionnelle du système logiciel, incluant les fonctionnalités définies par le contenu intégré de toutes les itérations précédentes et actuelles. Le résultat de l'itération finale contient toutes les fonctionnalités requises du produit. Ainsi, à la fin de chaque itération, le produit reçoit un incrément - un incrément - de ses capacités, qui évoluent donc de manière évolutive.


Diverses variantes de l'approche itérative sont mises en œuvre dans la plupart des méthodologies de développement modernes :

Processus de développement - Processus rationnel unifié (RUP)

Processus rationnel unifié (RUP)(processus rationnel unifié) est une méthodologie de développement logiciel maintenue par Rational Software (IBM). La méthodologie fournit des recommandations pour toutes les étapes de développement : de la modélisation commerciale aux tests et à la mise en service du programme fini. Le langage de modélisation unifié (UML) est utilisé comme langage de modélisation.
Le cycle de vie complet du développement d'un produit se compose de quatre phases, chacune comprenant une ou plusieurs itérations.

  • Étape initiale (Début)
  • Déterminer la portée du projet et la quantité de ressources nécessaires. Les exigences de base, les limitations et les fonctionnalités clés du produit sont déterminées. Les risques sont évalués. Plan d'action. À la fin de la phase initiale, l'atteinte du jalon de l'objectif du cycle de vie est évaluée, ce qui présuppose un accord entre les parties prenantes pour poursuivre le projet.

  • Clarification
  • Documenter les exigences. Conception, mise en œuvre et tests d'architecture exécutable. Clarification des conditions et des coûts. Réduire les principaux risques. La réussite de la phase de développement signifie atteindre le jalon de l'architecture du cycle de vie.

  • Construction
  • Dans la phase « Build », la plupart des fonctionnalités du produit sont implémentées : la conception de l’application est terminée, le code source est écrit. La phase de construction se termine avec la première version externe du système et le jalon de capacité opérationnelle initiale.

  • Introduction
  • Dans la phase « Implémentation », la version finale du produit est créée et transférée du développeur au client. Cela comprend un programme de tests bêta, une formation des utilisateurs et la détermination de la qualité du produit. Dans le cas où la qualité ne répond pas aux attentes des utilisateurs ou aux critères définis lors de la phase de démarrage, la phase de mise en œuvre est répétée à nouveau. Atteindre tous les objectifs signifie atteindre l’étape de sortie du produit et terminer le cycle de développement complet.



"Informatique. Ingénierie système et logiciel. Processus du cycle de vie du logiciel". Cette norme a été adoptée par l'Agence fédérale de réglementation technique et de métrologie de la Fédération de Russie et est similaire à la norme internationale ISO/IEC 12207:2008. Cette norme établit une structure générale des processus du cycle de vie des logiciels qui peuvent être suivis dans l'industrie du logiciel. La norme ne propose pas de modèle de cycle de vie spécifique. Ses dispositions sont communes à tous les modèles de cycle de vie, méthodes et technologies de création de logiciels. Il décrit la structure des processus du cycle de vie sans préciser comment mettre en œuvre ou réaliser les activités et les tâches incluses dans ces processus.

Présentation de la leçon
Sujets des messages
  • Fondation du logiciel libre (FSF)
  • Licences de logiciels libres
  • Logiciels Libres et Open Source
  • Histoire du développement des langages de programmation
  • L'histoire du langage C et C++.
  • Histoire
  • Critique du C++
  • Histoire d'UNIX
  • Modèle de cycle de vie logiciel en spirale
  • UML (langage de modélisation unifié)
  • Cadre de solutions Microsoft
  • IDE pour la programmation C/C++ sous Windows
  • Compilateurs C/C++
  • Création d'une application console sous Windows
Des questions
  1. Pourquoi le modèle en cascade de développement logiciel n'est-il pas utilisé dans les grands projets ?
  2. Quelle est la différence entre les modèles de développement en cascade et itératifs ?
  3. Lister les étapes de développement logiciel dans la méthodologie Rational Unified Process (RUP)

Ces tutoriels s'adressent à tout le monde, que vous soyez nouveau en programmation ou que vous ayez une vaste expérience en programmation dans d'autres langages ! Ce matériel s'adresse à ceux qui souhaitent apprendre les langages C/C++ depuis leurs bases jusqu'aux structures les plus complexes.

C++ est un langage de programmation, la connaissance de ce langage de programmation vous permettra de contrôler votre ordinateur au plus haut niveau. Idéalement, vous pourrez faire faire à l’ordinateur ce que vous voulez. Notre site vous aidera à maîtriser le langage de programmation C++.

Installation/EDI

La toute première chose à faire avant de commencer à apprendre le C++ est de vous assurer que vous disposez d'un IDE - un environnement de développement intégré (le programme dans lequel vous programmerez). Si vous n'avez pas d'IDE, alors c'est parti. Une fois que vous avez décidé du choix de l'IDE, installez-le et entraînez-vous à créer des projets simples.

Introduction au C++

Le langage C++ est un ensemble de commandes qui indiquent à l'ordinateur quoi faire. Cet ensemble de commandes est généralement appelé code source ou simplement code. Les commandes sont soit des « fonctions », soit des « mots-clés ». Les mots-clés (mots réservés C/C++) sont les éléments de base du langage. Les fonctions sont des éléments de base complexes car elles sont écrites en termes de fonctions plus simples – vous le verrez dans notre tout premier programme, présenté ci-dessous. Cette structure de fonctions ressemble au contenu d'un livre. Le contenu peut afficher les chapitres du livre, chaque chapitre du livre peut avoir son propre contenu composé de paragraphes, chaque paragraphe peut avoir ses propres sous-paragraphes. Bien que C++ fournisse de nombreuses fonctions courantes et mots réservés que vous pouvez utiliser, il est toujours nécessaire d'écrire vos propres fonctions.

À quelle partie du programme commence-t-il ? Chaque programme en C++ a une fonction, elle est appelée fonction principale ou fonction principale, l'exécution du programme commence par cette fonction. À partir de la fonction principale, vous pouvez également appeler n'importe quelle autre fonction, qu'elle soit celle que nous avons écrite ou, comme mentionné précédemment, celle fournie par le compilateur.

Alors, comment accéder à ces fonctionnalités standard ? Pour accéder aux fonctions standard fournies avec le compilateur, vous devez inclure le fichier d'en-tête à l'aide de la directive du préprocesseur - #include . Pourquoi est-ce efficace ? Regardons un exemple de programme de travail :

#inclure << "Моя первая программа на С++\n"; cin.get(); }

Examinons en détail les éléments du programme. #include est une directive "préprocesseur" qui indique au compilateur de placer le code du fichier d'en-tête iostream dans notre programme avant de créer l'exécutable. En connectant un fichier d'en-tête à un programme, vous avez accès à de nombreuses fonctions différentes que vous pouvez utiliser dans votre programme. Par exemple, l'opérateur cout nécessite iostream . Ligne utilisant l'espace de noms std ; indique au compilateur d'utiliser un groupe de fonctions qui font partie de la bibliothèque standard std. Cette ligne permet également au programme d'utiliser des opérateurs tels que cout . Le point-virgule fait partie de la syntaxe C++. Cela indique au compilateur que c'est la fin de la commande. Vous verrez dans un instant que les points-virgules sont utilisés pour terminer la plupart des commandes en C++.

La prochaine ligne importante du programme est int main(). Cette ligne indique au compilateur qu'il existe une fonction appelée main et que la fonction renvoie un entier. Les accolades ( et ) signalent le début (et la fin) d'une fonction. Les accolades sont également utilisées dans d'autres blocs de code, mais elles indiquent toujours une chose : respectivement le début et la fin du bloc.

En C++, l'objet cout est utilisé pour afficher du texte (prononcé « C out »). Il utilise des symboles<< , известные как «оператор сдвига», чтобы указать, что отправляется к выводу на экран. Результатом вызова функции cout << является отображение текста на экране. Последовательность \n фактически рассматривается как единый символ, который обозначает новую строку (мы поговорим об этом позже более подробно). Символ \n перемещает курсор на экране на следующую строку. Опять же, обратите внимание на точку с запятой, её добавляют в конец, после каждого оператора С++.

La commande suivante est cin.get() . Il s'agit d'un autre appel de fonction qui lit les données du flux de données d'entrée et attend que la touche ENTRÉE soit enfoncée. Cette commande empêche la fenêtre de la console de se fermer jusqu'à ce que la touche ENTRÉE soit enfoncée. Cela vous donne le temps de voir le résultat du programme.

En arrivant à la fin de la fonction principale (accolade fermante), notre programme renverra la valeur 0 au système d'exploitation. Cette valeur de retour est importante car en l'analysant, le système d'exploitation peut juger si notre programme s'est terminé avec succès ou non. Une valeur de retour de 0 signifie le succès et est renvoyée automatiquement (mais uniquement pour le type de données int ; d'autres fonctions nécessitent que vous renvoyiez manuellement la valeur), mais si nous voulions renvoyer autre chose, comme 1, nous devrions le faire manuellement.

#inclure en utilisant l'espace de noms std ; int main() ( cout<<"Моя первая программа на С++\n"; cin.get(); return 1; }

Pour consolider le matériel, tapez le code du programme dans votre IDE et exécutez-le. Une fois le programme exécuté et que vous avez vu le résultat, expérimentez un peu avec l'instruction cout. Cela vous aidera à vous habituer à la langue.

N'hésitez pas à commenter vos programmes !

Ajoutez des commentaires à votre code pour le rendre plus clair non seulement pour vous mais aussi pour les autres. Le compilateur ignore les commentaires lors de l'exécution du code, vous permettant d'utiliser n'importe quel nombre de commentaires pour décrire le code réel. Pour créer un commentaire, utilisez ou // , qui indique au compilateur que le reste de la ligne est un commentaire, ou /* puis */ . Lorsque vous apprenez à programmer, il est utile de pouvoir commenter des parties du code pour voir comment le résultat du programme change. Vous pouvez lire en détail la technique de commentaire.

Que faire de tous ces types de variables ?

Il peut parfois être déroutant d’avoir plusieurs types de variables lorsque certains types de variables semblent redondants. Il est très important d’utiliser le bon type de variable, car certaines variables nécessitent plus de mémoire que d’autres. De plus, en raison de la façon dont ils sont stockés en mémoire, les nombres à virgule flottante, les types de données float et double sont « imprécis » et ne doivent pas être utilisés lorsqu'une valeur entière précise doit être stockée.

Déclaration de variables en C++

Pour déclarer une variable, utilisez le type de syntaxe<имя>; . Voici quelques exemples de déclarations de variables :

Numéro int ; caractère char; float num_float;

Il est permis de déclarer plusieurs variables du même type sur une même ligne ; pour ce faire, chacune d'elles doit être séparée par une virgule.

Int x, y, z, d ;

Si vous avez regardé attentivement, vous avez peut-être vu qu'une déclaration de variable est toujours suivie d'un point-virgule. Vous pouvez en apprendre davantage sur la convention « sur la dénomination des variables ».

Erreurs courantes lors de la déclaration de variables en C++

Si vous essayez d'utiliser une variable qui n'est pas déclarée, votre programme ne sera pas compilé et vous recevrez un message d'erreur. En C++, tous les mots-clés du langage, toutes les fonctions et toutes les variables sont sensibles à la casse.

Utiliser des variables

Alors maintenant, vous savez comment déclarer une variable. Voici un exemple de programme illustrant l'utilisation d'une variable :

#inclure en utilisant l'espace de noms std ; int main() ( nombre int; cout<< "Введите число: "; cin >>numéro ; cin.ignore(); cout<< "Вы ввели: "<< number <<"\n"; cin.get(); }

Jetons un coup d'œil à ce programme et examinons son code, ligne par ligne. Le mot-clé int indique que le nombre est un entier. La fonction cin >> lit la valeur dans number , l'utilisateur doit appuyer sur Entrée après le nombre saisi. cin.ignore() est une fonction qui lit un caractère et l'ignore. Nous avons organisé notre saisie dans le programme ; après avoir saisi un nombre, nous appuyons sur la touche ENTRÉE, un symbole qui est également transmis au flux d'entrée. Nous n’en avons pas besoin, alors nous le rejetons. Gardez à l'esprit que la variable a été déclarée comme type entier, si l'utilisateur tente de saisir un nombre décimal, elle sera tronquée (c'est-à-dire que la partie décimale du nombre sera ignorée). Essayez de saisir un nombre décimal ou une séquence de caractères. Lorsque vous exécuterez l'exemple de programme, la réponse dépendra de la valeur saisie.

Notez que lors de l'impression à partir d'une variable, les guillemets ne sont pas utilisés. L'absence de guillemets indique au compilateur qu'il existe une variable, et donc que le programme doit vérifier la valeur de la variable afin de remplacer le nom de la variable par sa valeur à l'exécution. Plusieurs instructions shift sur la même ligne sont parfaitement acceptables et la sortie sera effectuée dans le même ordre. Vous devez séparer les chaînes littérales (chaînes entre guillemets) et les variables, en donnant à chacune son propre opérateur de décalage.<< . Попытка поставить две переменные вместе с одним оператором сдвига << выдаст сообщение об ошибке . Не забудьте поставить точку с запятой. Если вы забыли про точку с запятой, компилятор выдаст вам сообщение об ошибке при попытке скомпилировать программу.

Modification et comparaison des valeurs

Bien entendu, quel que soit le type de données que vous utilisez, les variables ne sont pas très intéressantes sans la possibilité de modifier leur valeur. Ce qui suit montre certains opérateurs utilisés conjointement avec des variables :

  • * multiplications,
  • - soustraction,
  • + ajout,
  • / division,
  • = affectation,
  • == égalité,
  • >plus
  • < меньше.
  • != inégal
  • >= supérieur ou égal à
  • <= меньше или равно

Les opérateurs qui exécutent des fonctions mathématiques doivent être utilisés à droite du signe d'affectation afin d'attribuer le résultat à la variable de gauche.

Voici quelques exemples:

A = 4 * 6 ; // utilise le commentaire de ligne et le point-virgule, a est égal à 24 a = a + 5 ; // égal à la somme de la valeur d'origine et cinq a == 5 // n'attribue pas cinq, vérifie s'il est égal à 5 ​​ou non

Vous utiliserez souvent == dans des constructions telles que des instructions conditionnelles et des boucles.

UN< 5 // Проверка, a менее пяти? a >5 // Vérifiez, est-ce que a est supérieur à cinq ? a == 5 // Vérification, est-ce que a est égal à cinq ? a != 5 // Vérifiez, n'est-il pas égal à cinq ? a >= 5 // Vérifier si a est supérieur ou égal à cinq ? un<= 5 // Проверка, a меньше или равно пяти?

Ces exemples ne montrent pas très clairement l'utilisation de signes de comparaison, mais lorsque nous commencerons à étudier les opérateurs de sélection, vous comprendrez pourquoi cela est nécessaire.