Programmation en C
Réponses
-
@AD Tu ne peux pas mettre du code dans un paragraphe "code" aussi simplement. Ça casse les includes (qui sont remplacés par <span> sur la ligne de l'include et, de plus, rajoute </span> à la fin du code).[En effet, je ne m'en étais pas rendu compte AD]
-
Je reprendrais mecredi car lundi et mardi trops chargésLorsque notre cher Nico, le professeur, intervient dans une question d'analyse, c'est une véritable joie pour les lecteurs..
-
Mais vraiment, je dis pas ça pour me moquer de toi, hein. Si tu comptes réellement ajouter des questions et donc des choses à coder en plus, tu vas te retrouver face au cas où ton code ne ressemblera plus à rien et ou tu ne pourras plus le faire évoluer -> le fameux code spaghetti. De plus, il est selon moi important d’introduire assez rapidement les structures en programmation. Ça évite plein de déboires par la suite.
-
Dissipons un malentendu. @gebrane , je ne te critique aucunement, tu dois accomplir la tâche qu'on t'as confiée et c'est manifestement un gros boulot. D'autant plus que tu es mathématicien et que c'est une tâche d'informaticien.
Ce que je ne comprends pas, c'est pourquoi on t'a confié cette tâche et surtout comment se fait-il que les gens qui t'ont confié cette tâche soient en charge de te confier cette tâche. C'est cela qui m'interpelle vraiment. -
sato stp fermons le sujet. Il y a des choses que tu ne sais pas et que tu ne devrais pas savoir.@dp je t'ai dit que je verrais les améliorations après mercredi
et pour ta critique si tu rentres une formule chimique par exemple XLL mon programme renvoie 00 pour dire que le programme utilise que les atomes du tableau periodique, afficher à la place une erreur serait ambiguë.Lorsque notre cher Nico, le professeur, intervient dans une question d'analyse, c'est une véritable joie pour les lecteurs.. -
Ah bon ? Mais n'est-ce pas ambiguë comme comportement, ça ?
Entrez une formule chimique valide sinon le programme retourne théorique: Op2H4 Masse molaire: 4.040000
Sachant que Op n'est pas un élément existant.Plus insidieux. Continuons sur cette erreur Op. Si on veut calculer la masse molaire de l'acide phosphorique H3PO3 mais qu'on se rate, ça nous renvoieEntrez une formule chimique valide sinon le programme retourne théorique: H3Op3 Masse molaire: 3.030000
etc. Ici ça se repère aisément, mais à présent, imagine avec des molécules plus longues. -
En cas d’erreur, le programme doit le dire, par exemple en affichant un message sur la sortie d’erreur.
Algebraic symbols are used when you do not know what you are talking about.
-- Schnoebelen, Philippe -
À ma façon j'ai allégé le programme en créant un fichier élément.c séparé.Il reste beaucoup à faire entre autre le message d'erreur que je dois adopter si la formule est non valide.Je progresse pas à pas comme une tortueLorsque notre cher Nico, le professeur, intervient dans une question d'analyse, c'est une véritable joie pour les lecteurs..
-
Voici un exemple d’utilisation simple d’une structure pour gérer les éléments chimiques
#define TOTAL_CHEMICAL_ELEMENTS 18 typedef struct { const char *symbol; const double mass; } periodic_element_t; periodic_element_t periodic_table[TOTAL_CHEMICAL_ELEMENTS] = { {.symbol = "H", .mass = 1.01}, {.symbol = "He", .mass = 4.00}, {.symbol = "Li", .mass = 6.94}, {.symbol = "Be", .mass = 9.01}, {.symbol = "B", .mass = 10.81}, {.symbol = "C", .mass = 12.01}, {.symbol = "N", .mass = 14.01}, {.symbol = "O", .mass = 16.00}, {.symbol = "F", .mass = 19.00}, {.symbol = "Ne", .mass = 20.18}, {.symbol = "Na", .mass = 22.99}, {.symbol = "Mg", .mass = 24.31}, {.symbol = "Al", .mass = 26.98}, {.symbol = "Si", .mass = 28.09}, {.symbol = "P", .mass = 30.97}, {.symbol = "S", .mass = 32.06}, {.symbol = "Cl", .mass = 35.45}, {.symbol = "Ar", .mass = 39.95} };
Mais alors, comment accéder à un élément ? Eh bien tu peux, par exemple, créer cette fonctionperiodic_element_t find_element(char *element) { for (size_t i = 0; i < TOTAL_CHEMICAL_ELEMENTS; i++) { if (strcmp(periodic_table[i].symbol, element) == 0) { return periodic_table[i]; } } fprintf(stderr, "ERROR: Unable to find the element '%s'...\n", element); exit(EXIT_FAILURE); }
qui peut être utilisée comme cecidouble get_mass(char *element) { return find_element(element).mass; }
Pour peu que tu aies une autre structure atom_ttypedef struct { char *symbol; long long multiplier; } atom_t;
tu peux même aller plus loin aussi bien pour find_elementperiodic_element_t find_element(atom_t *atom) { for (size_t i = 0; i < TOTAL_CHEMICAL_ELEMENTS; i++) { if (strcmp(periodic_table[i].symbol, atom->symbol) == 0) { return periodic_table[i]; } } fprintf(stderr, "ERROR: Unable to find the element '%s'...\n", atom->symbol); exit(EXIT_FAILURE); }
que get_massdouble get_mass(atom_t *atom) { return atom->multiplier * find_element(atom).mass; }
et changer ton hydre à trois mille têtes afin de commencer à écrire un code propre, composé de petites unités indépendantes et réutilisables. Bref, tu peux structure-r !Note : si on voulait disposer de fonctions toujours plus indépendantes, on ajouterait par exemple le tableau dans lequel doit être fait la recherche en paramètre de la fonction get_element. -
@gebrane : non tu n'es pas le O.S de l'informatique !!!! Déjà parce que tu n'es pas malhonnêtePlus sérieusement, j'ai quelques questions : pourquoi as-tu choisi d'enseigner l'informatique en t'imposant le C ? As-tu envisagé d'autres langages ? Quelles compétences véritablement informatiques cherches-tu à développer chez tes étudiants et pourquoi ces compétences là ? Qu'as tu délibérément décidé de ne pas aborder avec eux et pourquoi ?
-
@gebrane : non tu n'es pas le O.S de l'informatique !!!! Déjà parce que tu n'es pas malhonnête+1 c'est la raison pour laquelle j'essaie du mieux que je peux de t'aider ! Ce n'est en revanche pas facile, car tu ne donnes pas beaucoup d'information ni sur ton niveau, ni sur le niveau de tes étudiants ni même sur tes intentions avec cet enseignement d'un langage de programmation que tu ne maitrises clairement pas.Je t'avoue que ça m'aiderait pas mal pour t'aider si tu répondais aux questions de @troisqua.
-
@dp waw tu connais beaucoup de choses, on change nos places ?@troiscas je réponds à cette question pourquoi as-tu choisi d'enseigner l'informatique ; je n'ai pas envie d'attendre un poste sur mesure qui peut-être il ne viendra pas
en t'imposant le C parce que je suis une jeune recrue je ne refuse rien.
Plus de questions personnelles svp.Lorsque notre cher Nico, le professeur, intervient dans une question d'analyse, c'est une véritable joie pour les lecteurs.. -
Peux-tu au aussi nous dire en quelle année sont tes étudiants ? Ça m'aiderait à me faire une idée de leur niveau.
-
je préfère ne plus parler de moi, je peux dire une chose, le but n'est pas de calculer des masses molaires d'une formule, quelqu'un qui a de l'imagination peut trouver des applications
Lorsque notre cher Nico, le professeur, intervient dans une question d'analyse, c'est une véritable joie pour les lecteurs.. -
Ce n'est pas de toi dont je te demande de parler mais de tes étudiants surtout que je ne vois pas ce que ça peut faire d'indiquer leur niveau d'étude, hormis nous permettre de mieux t'aiguiller. En effet, je ne te proposerai pas les mêmes choses selon si tu t'occupes de L1 ou si tu t'occupes de L3.
-
@gebrane : je ne cherche pas à savoir pourquoi tu enseignes l'informatique mais pourquoi tu as choisi, ou pourquoi l'école où tu bosses a choisi, d'enseigner le C aux étudiants. En connaissant cette réponse, tu te facilites la vie pour savoir si telle ou telle activité est pertinente.Je ne cherche pas à te connaître à titre personnel mais simplement savoir quels sont les objectifs pédagogiques qui te sont fixés ou que tu te fixes.
-
Les discussions de ce fil ressemblent à une querelle byzantine aux n informaticiens et j'aimerai faire part de mon expérience professionnelle passée dont une petite partie était consacrée au développement informatique et parler de sa politique passée en France (politique n'est pas un gros mot si on n'a pas l'esprit sale)Le développement informatique est en théorie un métier qualifié et même un art (comparable à la médecine) qui demande de nombreuses connaissances et de bonnes pratiques.Dans les fait ce métier a été prolétarisé par le patronat qui n'y comprenait rien et avait peur de tout cadre ayant un tant peu de savoir. Le résultat est que beaucoup d'entreprises pour recruter se limitaient aux têtes bien pleines (de vide) qui croyaient que pour recruter il suffisait d'ânoner une liste de langages informatiques dans des annonces absconses rédigées par des DRH formés ...à la psychologie dévoyée par le monde de l'entreprise capitaliste (c'est pas un gros mot). Le résultat c'est que pour faire du code qualifié on recrutait des chimistes, des physiciens, des architectes ...tout sauf des informaticiens compétents : ceci revenait à recruter des menuisiers pour faire de la plomberie et a donné des catastrophes et je me demande si Macron, pur énarque hors sol fasciné par les start-up (dont beaucoup font du bruit et du vent mais pas grand chose), ne s'est pas un peu laissé aller à la corruption en refusant d'attribuer l'argent public au public.
-
Par extrapolation, Je suis donc un menuisier chargé de la plomberie. Je quitte definitivement ce fil. Je vous en fait cadeaux et merci aux deviateurs indiscrets . Allez parler dé la reforme des retraites si ca vous enchantent.Lorsque notre cher Nico, le professeur, intervient dans une question d'analyse, c'est une véritable joie pour les lecteurs..
-
Qu'on ne me fasse pas dire ce que je n'ai pas dit, coder en C est difficile parce que c'est un langage compilé qui demande beaucoup de doigté voici un exemple sur les tableaux et les matricesEn maths si une matrice carré "vit" dans $M_n(K)$ alors parler des éléments "hors limites" (de colonne d'indice $n+1$) cela n'a pas de sens.Un programme C a qui on adresse une valeur de tableau hors limite va le faire (en général va trouver une valeur quasi-aleatoire), il faut donc dans son code gérer des exceptions ce que sait faire le C++ mais pas le C qui est très efficace pour faire des applications rapides et dites bas niveau (par exemple le C est très efficace pour écrire des pilotes (drivers) de périphériques).Pour coder le calcul scientifique dans lequel on utilise beaucoup de tableaux, matrices etc...mes choix iraient plutôt vers des langages gérant les exceptions et orientés objets pour ses bonnes pratiques syntaxiques tels le C++ lequel nécessite de bonnes bases de C, ce qui éclaire le choix de gebrane.Il y a un autre aspect, c'est celui de la représentation des nombres, il faut qu'un prof d'informatique sache expliquer à ses élves qu'en informatique les nombres réels sont tronqués pour des raisons évidentes de finitude de mémoire, donc a proprement parler en informatique les nombres réels n'existent pas!
-
Bon courage, Gebrane !
-
Maintenant, si tu veux faire du C, il va falloir apprendre à s'en servir ainsi qu'apprendre à compiler soit-même ce dont on a besoin. mettons main.c. Une fois fait, si tu n'utilises pas cmake, meson ou des makefiles, utilise la commande suivante dans ton terminal:
$ gcc -c tinyexpr.c && gcc -c main.c && gcc tinyexpr.o main.o -o main
Si tu utilises des makefiles tu peux copier ça dans un fichier makefile que tu mets dans le même dossier que les trois autresQuand on se lance dans l’info on doit apprendre à compiler à la main, après on peut go IDE.---> I believe in Chuu-supremacy : https://www.youtube.com/watch?v=BVVfMFS3mgc <--- -
Alain24 a dit :Il y a un autre aspect, c'est celui de la représentation des nombres, il faut qu'un prof d'informatique sache expliquer à ses élves qu'en informatique les nombres réels sont tronqués pour des raisons évidentes de finitude de mémoire, donc a proprement parler en informatique les nombres réels n'existent pas!
Algebraic symbols are used when you do not know what you are talking about.
-- Schnoebelen, Philippe -
nicolas.patroisOui en C les entiers ont un plus grand élément, en Python ce n'est pas le cas en théorie où on peut représenter des chaînes aussi longues qu'on veut, dans la pratique du Python les chaines vont avoir des limites liées au matériel (hardware) ...mais pour les atteindre il faut y aller fort ![Inutile de reproduire le message précédent. AD]
-
En C aussi, il me semble qu'on devrait utiliser un type de donnée ad hoc ou au moins y penser dès la conception si on veut écrire un logiciel de calcul mathématique qui manie des nombres de mathématiciens. Je ne voudrais pas que ce soit encore mal interprété mais ça n'a aucun sens de faire du calcul sur des nombres de mathématiciens avec des integer ou float d'un langage bas niveau et de parler d'erreurs de calcul dues à la représentations des nombres comme on le lit souvent. Il n'y a pas d'erreur de ce point du vue puisque ce sont des concepts qui n'ont rien à voir.
-
En effet sur $\mathbb{R}$ l'addition est associative, l'addition des floats du C ne l'est pas. Un cours sur le C doit expliquer le mode de repésentation des floats et la façon dont sont construites les additions, multiplications lesquelles ne sont pas celles des nombres des mathématiciens....il en sort de nombreux malentendus et idées reçues sur l'informatique, lesquels ont dû évoluer depuis les années précédant ma retraite.
-
Vous vous donnez bien du mal à vous donner un genre dans une discussion qui concerne au mieux des étudiants de L3 d’une filière non mathématiques/informatique. Pourquoi ? Ne vaut-il pas mieux abandonner tout ceci (edit: dans le contexte de cette discussion, j'entends) et se concentrer du mieux que l’on peut à fournir un code de qualité, toute relative au vu de leur niveau et celui de @gebrane, le tout étant compréhensible par le profane, que ce dernier pourra ensuite donner et/ou expliquer à ses étudiants ? À nouveau ce n’est pas simple de se mettre à leur niveau dès que l’on a un peu de bouteille, d’autant que @gebrane ne lâche, sans aucune raison apparente, aucune info concernant ses étudiants.Bref, c’est bien beau d’être pédant mais si ce n’est que pour critiquer, quel intérêt ?
-
Commencez donc par apprendre que tout code source de C n'est pas portable dans la pratique un langage impératif n'est paradoxalement pas déterministe.
-
Bon. Je ne vais même pas chercher à rentrer dans ce jeu là avec vous. Bonne journée.
-
Il est question de savoir quels sont les objectifs pédagogiques visés par gebrane (mais il ne les dit pas depuis le début).Personne n'a fait de querelle de langage ici (si ce n'est pour rappeler à @parisse que le langage mis en place dans Xcas ne soutient pas la comparaison en terme de fonctionnalités, avec les grands langages, mais je pense qu'il le sait). Je ne comprends donc pas vos interventions.
-
Alain24 a dit :En effet sur $\mathbb{R}$ l'addition est associative, l'addition des floats du C ne l'est pas.
Algebraic symbols are used when you do not know what you are talking about.
-- Schnoebelen, Philippe -
@nicolas.patrois : +1 et ça ne tient pas au langage tout cours mais au fait d'utiliser le calcul des flottants fourni par le processeur lui même. Ça n'a donc pas sa place dans une argumentation pour "comparer" des langages. On compare des langages en terme de fonctionnalités offertes par le langage lui-même.
-
@troisqua cites moi un processeur qui ne fonctionne pas avec des signaux en escalier! Il existe une électronique analogique mais à ma connaissance l'industrie du calcul a abandonné depuis longtemps les calculateurs analogiques. Je me suis laissé dire que les russes ont développé jusque tard des calculateurs analogiques mais j'ignore s'ils le font toujours.
-
Pourquoi tu me poses cette question ? Elle n'a rien à voir avec la discussion.Je disais juste que si on parle des langages stricto-sensu alors il ne sert à rien de s'attarder sur la norme IEEE-754 qui se fiche éperdument des langages qui l'implémenteront. Donc discuter du fait que les flottants en C ne permettent pas de représenter les réels n'a rien à voir avec C en lui-même, puisque c'est le cas pour tous les langages implémentant IEEE754 (c'est à dire tous les langages système pour ne citer qu'eux). Bref, avec tout le respect que je te dois, je ne comprends pas l'intention de tes commentaires ni leur pertinence dans la conversation qui nous intéressait initialement (à savoir les visées pédagogiques de gebrane dans ses petits exos en C).
-
Depuis bien longtemps, le développement informatique aspire les diplômés de toutes les disciplines, parce que c'est un des rares secteurs où il y a de la demande, et où les salaires sont attractifs, pas besoin de ressortir le couplet contre notre Président à ce propos.
L'informatique est cependant en effet un véritable métier, qui demanderait une formation adéquate, mais celle-ci n'est pas si évidente à définir, car à côté des fondamentaux qui ne changent pas (théorie des automates, représentation des nombres, etc ... ...), le domaine connait un maelstrom d'évolutions, que le système éducatif peine à suivre.
En outre, "le développement informatique", dans la réalité, se borne le plus souvent à essayer de faire se parler entre eux des bouts de code préexistants ....
(la question qu'il faut plutôt se poser, c'est pourquoi on continue à former des chimistes (je prends cet exemple, il y en a bien d'autres), en sachant qu'ils ne feront rien d'autre que de l'informatique ...) -
Bonjour troisqua,
quels points d'entrées de référence pour le langage Ada ?
Je ne suis pas contre l'anglais mais le français est ma langue maternelle. Je ne suis pas contre les pdf qu'on trouve sur la toile, mais je préfère les livres.
J'aime bien découvrir des nouveaux (à mes yeux, même s'ils existent depuis longtemps) langages de programmation.
Vous êtes élogieux à son égard, cela m'intrigue.
Merci de votre attention. -
-
Deux remarques rapides
- Le choix du C pour des étudiants est un très bon choix pédagogique, car en ayant à gérer des points considérés comme des défauts du C, on comprend mieux le fonctionnement d'un ordinateur (par exemple, comprendre la notion de pointeur et l'arithmétique qui va avec, permet de comprendre comment la mémoire est gérée).
- Certes, il fut un temps où on formait des médecins à la programmation pour écrire des programmes pour les médecins, mais pour une bonne raison : il faut quelques semaines pour former un programmeur, au pire 2 ans pour avoir suffisamment d'expérience, alors qu'il faut 10 ans pour former un médecin ; pour caricaturer, je dirais qu'on avait le choix entre un programme mal écrit qui fait mal ce qu'il doit faire, et un programme très bien écrit qui fait très bien quelque chose qu'il n'est pas censé faire. On peut se demander pourquoi ne pas joindre ces deux compétences, et bien depuis une éternité, cela s'appelle la MOA et la MOE (maîtrise d'ouvrage et maîtrise d'œuvre)
Il ne faut pas respirer la compote, ça fait tousser.
J'affirme péremptoirement que toute affirmation péremptoire est fausse -
Je ne suis pas certain de voir l'aspect pédagogique à faire se galérer des étudiants de filières non info avec l'arithmétique de pointeurs ou encore la gestion de la mémoire à coup de malloc/realloc et autre free.
-
C'est simple, cela permet de comprendre comment est géré la mémoire, et il n'y a rien de compliqué là-dedans (si bien expliqué)Il ne faut pas respirer la compote, ça fait tousser.
J'affirme péremptoirement que toute affirmation péremptoire est fausse -
Je ne vois pas trop ce qu'un chimiste ou un physicien pourrait en avoir a fiche de ça, mais soit.
-
Vision très monolithique de l'être humain, mais soit.Il ne faut pas respirer la compote, ça fait tousser.
J'affirme péremptoirement que toute affirmation péremptoire est fausse -
Parce qu’on demande à un informaticien de comprendre la chimie organique ? On demande à un économiste de comprendre la théorie quantique ?Alors pourquoi l’informatique devrait être enseigné à tout le monde (au-delà de ce qu’on pourrait enseigner au lycée, il est tout de même important d’avoir un minimum de bases) y compris des gens qui n’en ont cure ? C'est selon moi cette vision d'enseigner ça à tout le monde qui fait que l'informatique et les informaticiens ne sont pas pris au sérieux dans ce pays.
-
Vu le salaire des débutants (44 000€ pour le premier job de mon fils), je n'ai pas l'impression qu'ils ne sont pas pris au sérieux.Il ne faut pas respirer la compote, ça fait tousser.
J'affirme péremptoirement que toute affirmation péremptoire est fausse -
On en reparlera dans cinq ans lorsqu’il se verra recommander de devenir chef de projet pour faire évoluer sa carrière.
-
Et être obligé d'abandonner la "technique" (comprendre : arrêter de réfléchir) pour "manager" des gens (comprendre : faire des feuilles Excel) afin "d'évoluer" (comprendre : ne plus être considéré comme un troufion et avoir une augmentation). :
-
être considéré comme un troufion
L'histoire de ma vie.
-
Merci pour ces précisions sur Ada dp.
-
Je reviens sur le programme C de calcul de masse molaire que j'ai regardé rapidement. Je suis d'accord avec dp sur le fait qu'utiliser un type structuré permettrait de le rendre plus lisible et maintenable. On peut utiliser une syntaxe nettement moins verbeuse pour entrer les données. Ce qui donnestruct atome {
const char * symbol;
double masse;
};puis on définit le tableau en laissant le compilateur calculer la tailleconst struct atome tab[]={
{"H",1},
{"He",4},
// ...
};
(en C++ on peut omettre le struct entre const et atome).La recherche de l'atome dans une table non triée est inefficiente. Il vaut beaucoup mieux trier le tableau par ordre alphabétique en utilisant une fonction de tri dans l'éditeur du code source, ceci afin de permettre une recherche dichotomique : avec un tableau périodique complet, on passe d'une cinquantaine de comparaisons en moyenne à 7 ou 8. Si on ne veut pas coder de recherche dichotomique, on peut au moins trier la liste par ordre décroissant de présence des éléments dans une formule chimique pour faire le moins d'itérations possibles. Ou avec la STL en C++ on peut utiliser le type map pour rechercher assez efficacement et sans effort un symbole dans la table.Il y a un problème avec la définition char symbol[2]={}, la taille du tableau de caractères est insuffisante pour stocker un symbole de 2 caractères pour ajouter le caractère 0 de fin de chaine. Sinon la comparaison avec strcmp échouera ou alors il faut utiliser strncmp.Remarque: le mot-clef const devant le tableau tab est important, il empêche toute modification du tableau une fois créé. Et si on fait de la programmation embarquée (par exemple sur calculatrices), il indique au compilateur de stocker les données dans la section read-only data de l'exécutable, qui peut se stocker en ROM, ce qui économisera de la RAM.@troisqua: tout à fait, le langage de Xcas n'a pas vocation à être comparé à un langage de programmation généraliste, c'est un langage de script donnant accès à beaucoup de commandes mathématiquement intéressantes, sans avoir à invoquer des formules du style from math import * pour pouvoir utiliser une simple fonction trigo. -
@parisse Pas certain que ce genre d’optimisations (aussi bien l’utilisation de const pour le tableau périodique que le fait de le trier ou pire encore évoquer la recherche dichotomique) soient réellement pertinent pour les étudiants de @gebrane, cependant c’est toujours bon de le rappeler !Comme je le disais plus haut, c’est le genre de choses que j’évoquerais en profondeur pour des étudiants de L3 mais que j’éclipserais aussi totalement pour des étudiants de L1. À @gebrane de nous donner un jour ou l’autre le niveau de ses étudiants pour qu’on sache ce qu'il est ou non pertinent d’évoquer - même si j'ai bien l'impression qu'il ne le fera jamais, pour je ne sais quelle raison.
-
J’ai vu la dichotomie en 1ère année à la fac. Avec des arbres binaires. Et on peut l’aborder au lycée en Seconde… Les listes chaînées etc. en 2e année mais on aurait pu les voir avant si on avait eu le temps.
Enfin, ce n’est que mon avis mais en L3 ça me semble bien tardif pour aborder des algorithmes et structures de données fondamentales. L’exemple du tri donné par parisse me semble très pertinent pour initier les étudiants, dès la L1, à la nécessité d’algorithmes efficaces et les convaincre dès le début que faire de l’informatique ce n’est pas juste écrire des if then else print, mais pas sur un tel programme qui utilise un petit tableau peu de fois.
Connectez-vous ou Inscrivez-vous pour répondre.
Bonjour!
Catégories
- 165.1K Toutes les catégories
- 58 Collège/Lycée
- 22.1K Algèbre
- 37.5K Analyse
- 6.3K Arithmétique
- 58 Catégories et structures
- 1.1K Combinatoire et Graphes
- 13 Sciences des données
- 5.1K Concours et Examens
- 20 CultureMath
- 51 Enseignement à distance
- 2.9K Fondements et Logique
- 10.7K Géométrie
- 83 Géométrie différentielle
- 1.1K Histoire des Mathématiques
- 79 Informatique théorique
- 3.9K LaTeX
- 39K Les-mathématiques
- 3.5K Livres, articles, revues, (...)
- 2.7K Logiciels pour les mathématiques
- 24 Mathématiques et finance
- 337 Mathématiques et Physique
- 5K Mathématiques et Société
- 3.3K Pédagogie, enseignement, orientation
- 10.1K Probabilités, théorie de la mesure
- 801 Shtam
- 4.2K Statistiques
- 3.8K Topologie
- 1.4K Vie du Forum et de ses membres