OpenLLM-France/wikimedia huggingface dataset:
# Programmation C-C++/Les exceptions/Hiérarchie des exceptions

Cours de C/C++ :
| Les exceptions ||
| | Lancement et récupération d'une exception |
| | Remontée des exceptions |
| | Liste des exceptions autorisées pour une fonction |
| | Hiérarchie des exceptions |
| | Exceptions dans les constructeurs |
| Livre original de C. Casteyde ||
Le mécanisme des exceptions du C++ se base sur le typage des objets, puisque le lancement d'une exception nécessite la construction d'un objet qui la caractérise, et le bloc catch destination de cette exception sera sélectionné en fonction du type de cet objet. Bien entendu, les objets utilisés pour lancer les exceptions peuvent contenir des informations concernant la nature des erreurs qui se produisent, mais il est également possible de classifier ces erreurs par catégories en se basant sur leurs types.
En effet, les objets exceptions peuvent être des instances de classes disposant de relations d'héritage. Comme les objets des classes dérivées peuvent être considérés comme des instances de leurs classes de base, les gestionnaires d'exception peuvent récupérer les exceptions de ces classes dérivées en récupérant un objet du type d'une de leurs classes de base. Ainsi, il est possible de classifier les différents cas d'erreurs en définissant une hiérarchie de classe d'exceptions, et d'écrire des traitements génériques en n'utilisant que les objets d'un certain niveau dans cette hiérarchie.
Le mécanisme des exceptions se montre donc plus puissant que toutes les autres méthodes de traitement d'erreurs à ce niveau, puisque la sélection du gestionnaire d'erreur est automatiquement réalisée par le langage. Cela peut être très pratique pour peu que l'on ait défini correctement sa hiérarchie de classes d'exceptions.

## Exemple 9-4. Classification des exceptions

La bibliothèque standard C++ définit elle-même un certain nombre d'exceptions standards, qui sont utilisées pour signaler les erreurs qui se produisent à l'exécution des programmes. Quelques-unes de ces exceptions ont déjà été présentées avec les fonctionnalités qui sont susceptibles de les lancer. Vous trouverez une liste complète des exceptions de la bibliothèque standard du C++ dans la Section 13.2.
localiser
# Programmation C-C++/Les exceptions/Lancement et récupération d'une exception

Cours de C/C++ :
| Les exceptions ||
| | Lancement et récupération d'une exception |
| | Remontée des exceptions |
| | Liste des exceptions autorisées pour une fonction |
| | Hiérarchie des exceptions |
| | Exceptions dans les constructeurs |
| Livre original de C. Casteyde ||
En C++, lorsqu'il faut lancer une exception, on doit créer un objet dont la classe caractérise cette exception, et utiliser le mot clé throw. Sa syntaxe est la suivante :
où objet est l'objet correspondant à l'exception. Cet objet peut être de n'importe quel type, et pourra ainsi caractériser pleinement l'exception.
L'exception doit alors être traitée par le gestionnaire d'exception correspondant. On ne peut attraper que les exceptions qui sont apparues dans une zone de code limitée (cette zone est dite protégée contre les erreurs d'exécution), pas sur tout un programme. On doit donc placer le code susceptible de lancer une exception d'un bloc d'instructions particulier. Ce bloc est introduit avec le mot clé try :
Les gestionnaires d'exceptions doivent suivre le bloc try. Ils sont introduits avec le mot clé catch :
Notez que les objets de classe de stockage automatique définis dans le bloc try sont automatiquement détruits lorsqu'une exception fait sortir le contrôle du programme de leur portée. C'est également le cas de l'objet construit pour lancer l'exception. Le compilateur effectue donc une copie de cet objet pour le transférer au premier bloc catch capable de le recevoir. Cela implique qu'il y ait un constructeur de copie pour les classes d'exceptions non triviales.
De même, les blocs catch peuvent recevoir leurs paramètres par valeur ou par référence, comme le montre la syntaxe indiquée ci-dessus. En général, il est préférable d'utiliser une référence, afin d'éviter une nouvelle copie de l'objet de l'exception pour le bloc catch. Toutefois, on prendra garde au fait que dans ce cas, les modifications effectuées sur le paramètre seront effectuées dans la copie de travail du compilateur et seront donc également visibles dans les blocs catch des fonctions appelantes ou de portée supérieure, si l'exception est relancée après traitement.
Il peut y avoir plusieurs gestionnaires d'exceptions. Chacun traitera les exceptions qui ont été générées dans le bloc try et dont l'objet est de la classe indiquée par son paramètre. Il n'est pas nécessaire de donner un nom à l'objet (temp) dans l'expression catch. Cependant, cela permet de le récupérer, ce qui peut être nécessaire si l'on doit récupérer des informations sur la nature de l'erreur.
Enfin, il est possible de définir un gestionnaire d'exception universel, qui récupérera toutes les exceptions possibles, quels que soient leurs types. Ce gestionnaire d'exception doit prendre comme paramètre trois points de suspension entre parenthèses dans sa clause catch. Bien entendu, dans ce cas, il est impossible de spécifier une variable qui contient l'exception, puisque son type est indéfini.

## Exemple 9-1. Utilisation des exceptions

Selon ce qu'entre l'utilisateur, une exception du type erreur, int ou other est générée.
# Programmation C-C++/Les espaces de nommage/Directive using

Cours de C/C++ :
| C++ : Les espaces de nommage ||
| | Définition des espaces de nommage |
| | Déclaration using |
| | Directive using |
| Livre original de C. Casteyde ||
La directive using permet d'utiliser, sans spécification d'espace de nommage, non pas un identificateur comme dans le cas de la déclaration using, mais tous les identificateurs de cet espace de nommage.
La syntaxe de la directive using est la suivante :
où nom est le nom de l'espace de nommage dont les identificateurs doivent être utilisés sans qualification complète.

### Exemple 11-13. Directive using

Après une directive using, il est toujours possible d'utiliser les noms complets des identificateurs de l'espace de nommage, mais ce n'est plus nécessaire. Les directives using sont valides à partir de la ligne où elles sont déclarées jusqu'à la fin du bloc de portée courante. Si un espace de nommage est étendu après une directive using, les identificateurs définis dans l'extension de l'espace de nommage peuvent être utilisés exactement comme les identificateurs définis avant la directive using (c'est-à-dire sans qualification complète de leurs noms).

### Exemple 11-14. Extension de namespace après une directive using

Il se peut que lors de l'introduction des identificateurs d'un espace de nommage par une directive using, des conflits de noms apparaissent. Dans ce cas, aucune erreur n'est signalée lors de la directive using. En revanche, une erreur se produit si un des identificateurs pour lesquels il y a conflit est utilisé.
# Un programme de l'equation:: ax2+bx+c

Il faudrait la ranger dans un wikilivre où elle aurait sa place.

## Voir aussi

* Programmation C
# Ubuntu/Sommaire

* Installation
* Configuration
* Sauvegarde
* Arrière-plan dynamique
* Mises à jour
* Émulation
** Wine
* Multimédia
* Web
** Messagerie
*** Mailman
* Raccourcis clavier
# Un portrait des astres/Portraits d'étoiles/Alpha Canis Majoris

Alpha Canis Majoris (α Canis Majoris/α CMa) — Communément appelée Sirius, il s′agit de l′étoile principale de la constellation du Grand Chien ainsi que de l′étoile la plus brillante du ciel nocturne.

## Histoire
### Étymologie et traditions
### Découverte et mesure de sa vitesse radiale

Jusqu′en 1718, les étoiles étaient considérées comme étant des points « fixes » dans le ciel. La comparaison des mesures astrométriques contemporaines de l'astronome et ingénieur britannique Edmond Halley – célèbre pour avoir déterminé la périodicité de la comète qui porte aujourd'hui son nom – avec les mesures de l'Almageste de Ptolémée publié au IIème siècle lui a permis de découvrir que les étoiles les plus brillantes du ciel nocturne (Aldebaran, Arcturus et Sirius)… ne sont plus à la même position ! En l'espace de 1 800 ans, Sirius se serait ainsi déplacée de 30 secondes d'arc vers le sud, soit l'équivalent du diamètre de la Lune.

### Vers un système binaire
## Approfondir
### Sur les projets Wikimédia

* (fr) Article Sirius ;
* (en) Article Sirius ;
* (fr) Article Grand Chien ;
* (fr) Article Edmond Halley ;

### Lien externe

* (anglais) Alpha Canis Majoris sur la base de données Simbad du Centre de données astronomiques de Strasbourg.
# Un système dispersif, le prisme

Il faudrait la ranger dans un wikilivre où elle aurait sa place.

## Dispersion

* La lumière blanche est composée de plusieurs couleurs c'est une lumière polychromatique.
* Un prisme permet de décomposer une lumière polychromatique, on dit que le prisme disperse la lumière.

## Laser

* La lumière rouge du laser est uniquement déviée elle ne peut pas être décomposée. Une lumière qui ne peut pas être décomposée est appelée radiation monochromatique.

## Radiation et longueur d'onde

* En regardant la décomposition de la lumière blanche, une couleur présente plusieurs nuances et chaque nuance doit pouvoir être repérée.
* Une radiation monochromatique caractérisée par sa longueur d'onde notée lambda ʎ. Remarque : Une longueur d'onde est une longueur donc l'unité légale est le mètre. On utilise plus souvent le nanomètre (nm).
* Une lumière polychromatique est constituée d'un ensemble de radiations monochromatiques associées à une plage de longueur d'onde. Exemple : La lumière blanche =association de toutes les radiations monochromatiques visibles.
# Un portrait des astres

Merci de suivre les recommandations et de ranger ce livre. Bon courage aux auteurs !
Veuillez laisser ce bandeau posé pendant un mois après son dépôt.
Mythes et légendes côtoient depuis plusieurs siècles des découvertes scientifiques de plus en plus importantes et précises. Un travail acharné mais toujours méthodique qui porte ses fruits. Nos connaissances en astronomie progressent au fur et à mesure des études et des travaux de recherche, réfutés et confirmés, qui dressent une carte insoupçonnée des astres qui nous entourent.
Un portrait des astres est un projet de Wikilivre : recueil de l′histoire de la découverte et des spécificités des étoiles, exoplanètes et objets célestes qui nous entourent et qui ont alimenté ou alimentent encore légendes, mythologies et récits de science fiction.

## Sommaire
### I. Portraits d'étoiles

* Alpha Canis Majoris (Sirius)

### Annexes

* Bibliographie

## Auteurs

Ce livre se veut collaboratif et porté par la passion ou la simple curiosité pour l′astronomie de chaque lecteur. Chacun est cordialement invité et libre, en respectant les règles de Wikilivres, d′y contribuer : corriger l′orthographe, compléter un chapitre ou en créer un nouveau.
* Florian CUNY (Poslovitch)
# Programmation Logo/Listes

* Programmation | Logo
* Introduction
* Manipulation de la tortue
* Procédures et fonctions
* Itérations
* Conditions
* Calculs
* Variables
* Listes
* Divers
* Exemple
* Logiciels
* Conclusion
MOTS et LISTES

## Les Mots

Un mot LOGO peut comporter zéro élément (c'est le mot vide : " ), ou un seul élément (exemple : "a ), ou plusieurs éléments (exemple : "anticonstitutionnellement ). On considère un mot de plusieurs éléments comme la concaténation de mots d'un élément.
Fonctions portant sur les mots :
| Code | Renvoie | Exemple de code | Ce que ça affiche |
| COMPTE :mot | Le nombre d'éléments de :mot | ECRIS COMPTE "abc | 3 |
| MOT :mot1 :mot2 | Un mot qui est la concaténation de :mot1 et :mot2 | ECRIS MOT "Lo "go | Logo |
| PREMIER :mot | Le premier élément de :mot | ECRIS PREMIER "abc | a |
| DERNIER :mot | Le dernier élément de :mot | ECRIS DERNIER "abc | c |
| SAUFPREMIER :mot | :mot sans son premier élément | ECRIS SAUFPREMIER "abc | bc |
| SAUFDERNIER :mot | :mot sans son dernier élément | ECRIS SAUFDERNIER "abc | ab |

## Les Listes

Une liste peut comporter zéro élément, ou un seul élément, ou plusieurs éléments. Un élément d'une liste peut être un mot OU UNE LISTE.
Exemples de listes :
à zéro élément (liste vide) : à un élément : [abc] ou : [ [1 2 3] ] ou même : [[Jean Dupont [place du marché] [46200 Souillac]]] à plusieurs éléments : [x y z] ou : [Jean Dupont [place du marché] [46200 Souillac]]
Fonctions portant sur les listes :
Les fonctions COMPTE, PREMIER, DERNIER, SAUFPREMIER et SAUFDERNIER opèrent de la même manière sur une liste que sur un mot. Trois autres fonctions opèrent seulement sur des listes :
LISTE :élément1 :élément2 renvoie une liste composée des DEUX éléments, :élément1 et :élément2
Exemple :
ECRIS LISTE "Logo [un langage ultra puissant] Le programme affichera [Logo [un langage ultra puissant]]
METSPREMIER :élément :liste renvoie la liste :liste augmentée de :élément en première position
Exemple : ECRIS METSPREMIER [Le langage Logo] [va plus loin que les petits dessins] Le programme affichera [[Le langage Logo] va plus loin que les petits dessins]
METSDERNIER :élément :liste renvoie la liste :liste augmentée de :élément en dernière position
Exemple : ECRIS METSDERNIER 8 [1 1 2 3 5] Le programme affichera [1 1 2 3 5 8]
# Programmation Logo/Itérations

* Programmation | Logo
* Introduction
* Manipulation de la tortue
* Procédures et fonctions
* Itérations
* Conditions
* Calculs
* Variables
* Listes
* Divers
* Exemple
* Logiciels
* Conclusion

## REPETE

Logo permet d'effectuer de manière simple des itérations, grâce à l'instruction REPETE :
REPETE n [INSTRUCTIONS], avec n un nombre entier, va répéter n fois le bloc d'instructions entre crochet.
Exemple :
REPETE 4 [AVANCE 50 GAUCHE 90] va tracer un carré ayant 50 de côté.
Il est possible d'imbriquer des itérations.

## LOOP

L'instruction LOOP permet de connaître, à l'intérieur d'une boucle, combien de fois le contenu de la boucle a déjà été répété.

## TANTQUE

L'instruction TANTQUE expression [instructions] permet de répeter le bloc instructions tant que la condition contenue dans expression est vérifiée.
# Programmation Logo/Logiciels

* Programmation | Logo
* Introduction
* Manipulation de la tortue
* Procédures et fonctions
* Itérations
* Conditions
* Calculs
* Variables
* Listes
* Divers
* Exemple
* Logiciels
* Conclusion
Il y a de nombreux logiciels de Logo disponibles sur le web.

## Langages
### ELICA

ELICA est tourné vers le rendu 3D, il permet de très belles réalisations.

### NetLogo

NetLogo est orienté programmation d'agents. Il a un très large base d'exemples disponibles.

### StarLogo

StarLogo est très simple, et très orienté vers le visuel.

## Logoplus

Logoplus pour Windows, gratuit, syntaxe francophone, avec possibilités musicales et robotiques USB.
Die Deutsche Version DLogo
# Programmation OMT

Il s'agit dans la programmation OMT de regrouper, suivant trois axes, l'analyse fonctionnelle, l'analyse de classes et l'analyse dynamique (comportement du système).
Cette page fait partie du livre Programmation
# Programmation Mathematica

Conçu par une équipe animée par Stephen Wolfram, Mathematica est plus qu'un langage de programmation puisqu'il inclut, outre un langage multiparadigme, un système de calcul formel et une bibliothèque de fonctions numériques et graphiques. Néanmoins, son langage multiparadigme basé sur une syntaxe fonctionnelle et un mécanisme d'évaluation transformationnel (à base de règles) justifie de le présenter ici en tant que langage de programmation.
# Programmation Objective C/Introduction

Cette page est considérée comme une ébauche à compléter . Si vous possédez quelques connaissances sur le sujet, vous pouvez les partager en éditant dès à présent cette page (en cliquant sur le lien « »).
Ressources suggérées : Aucune (vous pouvez indiquer les ressources que vous suggérez qui pourraient aider d'autres personnes à compléter cette page dans le paramètre « ressources » du modèle engendrant ce cadre)
Objective C est un langage de programmation orienté objet. Comme C++, Objective C est une extension du langage C, toutefois certaines fonctionnalités du C++ telles que les références ne sont pas supportées. Cependant, Objective C offre certaines possibilités dont ne dispose pas le C++ comme le typage dynamique. Il existe toutefois des moyens de combiner les avantages de C++ et d'Objective C.
Le premier système d'exploitation à utiliser Objective C fut NeXTStep, de la société NeXT, fondée par Steve Jobs.
Objective C est principalement utilisé sur matériel Apple (Macintosh, iPhone, iWatch, Apple TV), notamment pour les API Cocoa de Mac OS X.
# Programmation Logo/Introduction

* Programmation | Logo
* Introduction
* Manipulation de la tortue
* Procédures et fonctions
* Itérations
* Conditions
* Calculs
* Variables
* Listes
* Divers
* Exemple
* Logiciels
* Conclusion
Il s'agit d'un langage très simple destiné à l'enseignement de la programmation. Des ordres simples sont donnés à une « tortue » qui dessine à l'écran.
Exemple :
Cela dessine un carré.
# Programmation Logo/Manipulation de la tortue

* Programmation | Logo
* Introduction
* Manipulation de la tortue
* Procédures et fonctions
* Itérations
* Conditions
* Calculs
* Variables
* Listes
* Divers
* Exemple
* Logiciels
* Conclusion
Logo permet de faire des dessins en donnant des ordres à un instrument appellé tortue.
Les principales instructions de la tortue sont :
* AVANCE
* DROITE
* GAUCHE
* RECULE
* FIXEXY
* FIXECAP
* MONTRETORTUE
* CACHETORTUE
* LEVECRAYON
* BAISSECRAYON
* COULEUR
Ces ordres permettent de dessiner librement :

### AVANCE

AVANCE n, avec n un entier, va faire avancer la tortue de n pas dans la direction dans laquelle elle est dirigée.

### DROITE

DROITE n, avec n un entier, va modifier la direction de la tortue de n degrés vers la droite (c'est à dire dans le sens horaire).

### GAUCHE

GAUCHE n, avec n un entier, va modifier la direction de la tortue de n degrés vers la gauche (c'est à dire dans le sens trigonométrique).

### RECULE

RECULE , avec n un entier, va faire reculer la tortue de n pas, c'est à dire la faire avancer dans la direction formant un angle complémentaire avec la direction dans laquelle elle est dirigée.

### FIXEXY

FIXEXY [x y], avec x et y des entiers, permet de fixer la position de la souris, x et y les coordonnés de la nouvelle position.

### FIXECAP

FIXECAP n, avec n un entier permet de fixer la direction dans laquelle la tortue doit etre dirigée, n étant l'angle (l'angle 0 étant l'angle vertical montant).

### MONTRETORTUE

MONTRETORTUE permet de visualiser la tortue.

### CACHETORTUE

CACHETORTUE permet de dissimuler la tortue.

### LEVECRAYON

LEVECRAYON permet de ne plus tracer de figure, ce qui veut dire les prochains déplacements ne seront plus accompagné d'un tracé (mode par défaut).

### BAISSECRAYON

BAISSECRAYON permet de recommencer le tracé, ce qui veut dire que les prochains déplacements seront à nouveau accompagnés d'un tracé.

### COULEUR

COULEUR n, avec n un nombre entier, permet de séléctionner la couleur des prochains tracés :
* 0 : noir
* 1 : rouge
* 2 : vert
* 3 : jaune
* 4 : bleu
* 5 : violet
* 6 : bleu clair
* 7 : blanc
Si n est supérieur à 7, la couleur sera égale à n modulo 8. Par exemple, 8 donne noir.
# Programmation Logo/Variables

* Programmation | Logo
* Introduction
* Manipulation de la tortue
* Procédures et fonctions
* Itérations
* Conditions
* Calculs
* Variables
* Listes
* Divers
* Exemple
* Logiciels
* Conclusion
Logo permet un mécanisme simple concernant les variables.

## Instruction DONNE

L'instruction DONNE permet d'affecter une valeur à un nom.
Exemple :
DONNE "nombre 36 ECRIS :nombre
Ce programme affichera la valeur de la variable, soit 36. Toutefois, il est possible d'affecter les valeurs en cascade.
Exemple :
DONNE "nombre1 36 DONNE "nombre2 :nombre1 ECRIS :nombre2
Ce programme affichera également le nombre 36.

## Instruction LOCALE

L'instruction LOCALE permet de créer une variable dont la portée se limite à la procédure courante.
# Programmation Logo/Procédures et fonctions

* Programmation | Logo
* Introduction
* Manipulation de la tortue
* Procédures et fonctions
* Itérations
* Conditions
* Calculs
* Variables
* Listes
* Divers
* Exemple
* Logiciels
* Conclusion
En Logo, une procédure est un ensemble nommé d'instructions qui peut être appelé :
L'appel se fera simplement en invoquant le nom de la procédure.

## Paramètres

De plus, il est possible de passer des paramètres à la procédure :
Exemple :
Cet exemple trace un triangle equilatéral.

## Instruction STOP

L'instruction STOP permet de quitter une procédure sans l'exécuter totalement.

## Instruction RENDS

L'instruction RENDS permet de faire d'une procédure une fonction, en définissant une valeur de retour.
Exemple :
Ce programme va afficher le double du nombre passé en paramètre, soit 4.
# Ressources pédagogiques relatives au droit d'auteur/Sommaire

* À propos de ce livre
* Module 1: Qu'est-ce-qu'une œuvre
* Module 2: Le droit d'auteur
* Module 3: Attribuer une œuvre
* Ressources
# Robotique/Robot Operating System
## Introduction

À l'origine en 2007, Robot Operating System (ROS) a été créé par Willow Garage pour son robot PR2 (Personnal Robot 2) sous forme d'ensemble de logiciels informatiques libres (sous licence BSD).
Depuis 2013, son développement est mené par la fondation américaine « Open Robotics Inc ».
La société Sud-Coréenne Robotis à développé son robot TurtleBot 3 « TurtleBot 3 » en utilisant la version 2 de ROS et un RaspBerry Pi 4 ou un NVidia Jetson Nano.
* Ce wikilivre est en cours de rédaction, n'hésitez pas à participer !

## Table des matières

* ROS (ou ROS version 1)
* ROS 2 (ou ROS version 2)

## Contribuer

Pour contribuer, rendez-vous sur la page de discussion ou prenez contact avec un des contributeurs du livre (Liste des contributeurs dans l'onglet "Voir l'historique").
# Robocode

Robocode est un jeu vidéo éducatif libre créé et distribué gratuitement par IBM. Il est destiné à l'apprentissage du langage de programmation Java. Les joueurs programment un logiciel contrôlant les réactions d'un ou plusieurs chars miniatures.
Ce livre a pour but de faire découvrir le langage de programmation Java par l'intermédiaire de ce jeu de bataille. Des notions de programmation et d'anglais sont nécessaires pour une pleine compréhension.

## Au préalable

Pour pleinement profiter de Robocode vous devez préalablement avoir préparé votre environnement de programmation. Cela se déroule en quelques étapes :
* Mettre à jour l'environnement Java :
* Télécharger puis installer Robocode :

## Démarrer une bataille

Lancez le logiciel, nous allons maintenant créer puis observer notre première bataille avec des exemples de robots. Sur la fenêtre principale Robocode. Allez dans le menu déroulant Battle>New, une fenêtre New Battle apparaît, choisissez le package sample puis surlignez deux (ou plus) robots tel que Ramfire et MyFirstRobot à droite, cliquez sur Add -> répétez l'opération autant de fois que vous souhaitez de robots sur le champ de bataille (BattleField).
Cliquez ensuite sur Start Battle et observez le comportement des robots, les déplacements, les tirs, etc. Au bout de la dixième manche, un tableau de statistiques s'affiche.
On observe que le robot a un canon rotatif, le châssis peut évoluer dans toutes les directions. Le balayage radar est circulaire, pour l'observer cochez Visible Scan Arcs dans Option>Preferences.

## Créer son premier robot

Lancez l'éditeur de robot depuis le menu déroulant Robot>Editor puis créez un nouveau robot vide (File>New>Robot). Entrez son nom (Wikibot) et les initiales (wb). Une nouvelle fenêtre apparaît avec le code source de votre robot :
Le programme sera expliqué ultérieurement, dans un premier temps Wikibot doit être compilé puis exécuté pour observation.

## Compiler son premier robot

Dans la fenêtre Robot Editor cliquez Compiler>Compile, répondez affirmativement à toutes les boîtes de dialogues jusqu'à la fenêtre Compiled successfully.
Le premier adversaire de Wikibot sera à sa hauteur puisqu'il s'agira de lui même.