Question

Question originale

Je suis actuellement engagé dans l'apprentissage de la programmation à mon frère.C'est un débutant total, mais très intelligent.(Et il veut vraiment apprendre).J'ai remarqué que certaines de nos séances s'enlisaient dans des détails mineurs et je n'ai pas l'impression d'avoir été très organisée.(Mais les réponses à ce post ont beaucoup aidé.)

Que puis-je faire de mieux pour lui enseigner efficacement ?Existe-t-il un ordre logique que je peux utiliser pour parcourir concept par concept ?Y a-t-il des complexités que je devrais éviter jusqu'à plus tard ?

La langue avec laquelle nous travaillons est Python, mais les conseils dans n'importe quelle langue sont les bienvenus.


Comment aider

Si vous en avez de bons, veuillez ajouter ce qui suit dans votre réponse :

  • Exercices pour débutants et idées de projets
  • Ressources pour enseigner aux débutants
  • Screencasts / articles de blog / livres électroniques gratuits
  • Imprimez des livres adaptés aux débutants

Veuillez décrire la ressource avec un lien vers celui-ci pour que je puisse jeter un oeil.Je veux que tout le monde sache que j’ai définitivement utilisé certaines de ces idées.Vos soumissions seront regroupées dans cet article.


Ressources en ligne pour enseigner aux débutants :


Livres imprimés recommandés pour enseigner aux débutants

Pas de solution correcte

Autres conseils

J'ai dû travailler avec plusieurs programmeurs débutants (n'ayant jamais écrit une seule ligne de code), et je ferai un atelier parascolaire avec des élèves du secondaire cet automne.C'est ce qui se rapproche le plus de la documentation.C'est encore un travail en cours, mais j'espère que cela aidera.

1) FizzBuzz. Commencez par les programmes en ligne de commande.Vous pouvez écrire des jeux ou des outils amusants très rapidement et vous apprenez très rapidement toutes les fonctionnalités du langage sans avoir à apprendre au préalable les outils GUI.Ces premières applications devraient être suffisamment simples pour que vous n'ayez pas besoin d'utiliser de véritables outils de débogage pour les faire fonctionner.

Au moins, des choses comme FizzBuzz sont de bons projets.Vos premières applications ne devraient pas avoir à gérer les bases de données, le système de fichiers, la configuration, etc.Ce sont des concepts qui déroutent la plupart des gens, et lorsque vous apprenez simplement la syntaxe et les fonctionnalités de base du framework, vous n'avez vraiment pas besoin de plus de complexité.

Quelques projets :

  • Bonjour le monde!
  • Prenez l'année de ma naissance et calculez mon âge (juste (maintenant - alors) pas de corrections mensuelles). (mathématiques simples, entrée, sortie)
  • Demandez une direction (Haut, bas, gauche, droite), puis indiquez à l'utilisateur son sort (tomber dans un trou, trouver un gâteau, ect). (logique booléenne)
  • FizzBuzz, mais comptez une fois par seconde. (Boucles, minuteries et plus de logique)
  • En fonction de leur âge, certains aiment vraiment une application qui insulte les utilisateurs au hasard à intervalles réguliers. (Boucles, tableaux, minuteries et aléatoire si vous rendez l'intervalle aléatoire)

2) Projet simple Une fois qu’ils maîtrisent bien les fonctionnalités du langage, vous pouvez démarrer un projet (des jeux simples et amusants fonctionnent bien.).Vous devriez essayer de terminer le premier projet dans un délai de 6 à 12 heures.Ne perdez pas de temps à l'architecturer tôt.Laissez-les le concevoir même si ça craint.S'il s'effondre, parlez de ce qui s'est passé et pourquoi cela a échoué, puis choisissez un autre sujet et recommencez.

C'est ici que vous commencez à présenter les capacités de débogage de vos outils.Même si vous pouvez voir le problème en lisant le code, vous devez leur apprendre à utiliser les outils, puis leur montrer comment vous pouvez le voir.Cela sert le double objectif d’enseigner les outils de débogage et d’apprendre à identifier les erreurs sans outils.

Une fois ou si le projet devient fonctionnel, vous pouvez l'utiliser pour introduire des outils de refactoring.C'est bien si vous pouvez ensuite étendre le projet avec quelques fonctionnalités simples que vous n'aviez jamais prévues.Cela signifie généralement une refactorisation et un débogage important, car très peu de personnes écrivent du code, même à moitié décent, la première fois.

Quelques projets :

3) Projet réel Démarrer un vrai projet qui peut prendre du temps.Utilisez un contrôle de source approprié et veillez à avoir un calendrier.Exécutez ce projet comme un vrai projet, à tout le moins, c'est une bonne expérience de manipulation des outils.

Il faut évidemment adapter cela à chaque personne.La chose la plus importante que j'ai trouvée est de faire en sorte que même les premières applications simples s'appliquent à ce qui intéresse la personne.

Quelques projets :

  • Tétris
  • Moteur de blog basé sur un fichier texte
  • Des travaux robotiques plus avancés

Vous pouvez essayer d'utiliser Alice.Il s'agit d'un programme 3D conçu pour être utilisé dans les cours d'introduction à la programmation.

Les deux plus grands obstacles pour les nouveaux programmeurs sont souvent :

  • erreurs de syntaxe
  • motivation (écrire quelque chose de significatif et amusant plutôt que artificiel)

Alice utilise une interface glisser-déposer pour construire des programmes, évitant ainsi la possibilité d'erreurs de syntaxe.Alice vous permet de construire des mondes 3D et de contrôler par votre code des personnages et des animations 3D (simples), ce qui est généralement beaucoup plus intéressant que d'implémenter des listes chaînées.

Les programmeurs expérimentés peuvent considérer Alice comme un jouet et se moquer du glisser-déposer de lignes de code, mais recherche montre que cette approche fonctionne.

Clause de non-responsabilité:J'ai travaillé sur Alice.

Je recommande Logo (alias la tortue) pour comprendre les concepts de base.Il fournit un bon bac à sable avec un retour graphique immédiat et vous pouvez démontrer des boucles, des variables, des fonctions, des conditions, etc. Cette page fournit un excellent tutoriel.

Après Logo, passez à Python ou Ruby.Je recommande Python, car il est basé sur ABC, qui a été inventé dans le but d'enseigner la programmation.

Lorsque j'enseigne la programmation, je dois appuyer la suggestion d'EHaskins de projets simples, puis de projets complexes.La meilleure façon d’apprendre est de commencer avec un résultat précis et une étape mesurable.Il permet aux leçons de rester ciblées, permet à l'élève d'acquérir des compétences, puis de les développer, et lui donne quelque chose à montrer à ses amis.Ne sous-estimez pas le pouvoir d'avoir quelque chose à montrer pour son travail.

Théoriquement, vous pouvez vous en tenir à Python, car Python peut presque tout faire.C'est un bon véhicule pour enseigner la programmation orientée objet et (la plupart) des algorithmes.Vous pouvez exécuter Python en mode interactif comme une ligne de commande pour avoir une idée de son fonctionnement, ou exécuter des scripts entiers à la fois.Vous pouvez exécuter vos scripts interprétés à la volée, ou les compiler en binaires.Il existe des milliers de modules pour étendre les fonctionnalités.Vous pouvez créer une calculatrice graphique comme celle fournie avec Windows, ou vous pouvez créer un client IRC, ou autre chose.

XKCD décrit un peu mieux la puissance de Python :"You're flying! How?" "Python!"

Vous pouvez ensuite passer à C# ou Java, même s'ils n'offrent pas grand-chose que Python n'a pas déjà.L’avantage de ceux-ci est qu’ils utilisent la syntaxe de style C, que de nombreux langages (oserais-je dire la plupart ?) utilisent.Vous n'avez pas encore à vous soucier de la gestion de la mémoire, mais vous pouvez vous habituer à avoir un peu plus de liberté et moins de prise en main par l'interprète de langage.Python applique les espaces et l'indentation, ce qui est agréable la plupart du temps mais pas toujours.C# et Java vous permettent de gérer vos propres espaces tout en restant fortement typé.

A partir de là, la norme est C ou C++.La liberté dans ces langues est presque existentielle.Vous êtes désormais en charge de votre propre gestion de la mémoire.Il n'y a pas de collecte des déchets pour vous aider.C'est ici que vous enseignez les algorithmes vraiment avancés (comme le tri par fusion et le tri rapide).C’est ici que vous apprenez pourquoi « erreur de segmentation » est un gros mot.C'est ici que vous téléchargez le code source du noyau Linux et que vous contemplez les Abysses.Commencez par écrire un tampon circulaire et une pile pour la manipulation des chaînes.Ensuite, progressez.

Un bon cours de python est celui du MIT Une introduction douce à la programmation utilisant Python.Tout est gratuit en ligne et vous n'avez pas besoin d'être un étudiant du MIT pour le comprendre.

Modifier [Justin Standard]

Ce cours utilise ce livre en ligne gratuit : Comment penser comme un informaticien
Je le trouve vraiment très utile.

Paquet Python VPython -- Programmation 3D pour le mortel ordinaire (didacticiel vidéo).

Exemple de code :

from visual import *

floor = box (pos=(0,0,0), length=4, height=0.5, width=4, color=color.blue)
ball = sphere (pos=(0,4,0), radius=1, color=color.red)
ball.velocity = vector(0,-1,0)
dt = 0.01

while 1:
    rate (100)
    ball.pos = ball.pos + ball.velocity*dt
    if ball.y < ball.radius:
        ball.velocity.y = -ball.velocity.y
    else:
        ball.velocity.y = ball.velocity.y - 9.8*dt

Balle rebondissante VPython http://vpython.org/bounce.gif

Commencez par les graphiques Turtle en Python.

J'utiliserais les graphiques de tortue fournis en standard avec Python.C'est visuel, simple et vous pouvez utiliser cet environnement pour introduire de nombreux concepts de programmation tels que l'itération et les appels de procédure avant d'aller trop loin dans la syntaxe.Considérez la session interactive suivante en python :

>>> from turtle import *
>>> setup()
>>> title("turtle test")
>>> clear()
>>>
>>> #DRAW A SQUARE
>>> down()        #pen down
>>> forward(50)   #move forward 50 units
>>> right(90)     #turn right 90 degrees
>>> forward(50)
>>> right(90)
>>> forward(50)
>>> right(90)
>>> forward(50)
>>>
>>> #INTRODUCE ITERATION TO SIMPLIFY SQUARE CODE
>>> clear()
>>> for i in range(4):
        forward(50)
        right(90)
>>>
>>> #INTRODUCE PROCEDURES   
>>> def square(length):
        down()
        for i in range(4):
            forward(length)
            right(90)
>>>
>>> #HAVE STUDENTS PREDICT WHAT THIS WILL DRAW
>>> for i in range(50):
        up()
        left(90)
        forward(25)
        square(i)
>>>
>>> #NOW HAVE THE STUDENTS WRITE CODE TO DRAW
>>> #A SQUARE 'TUNNEL' (I.E. CONCENTRIC SQUARES
>>> #GETTING SMALLER AND SMALLER).
>>>
>>> #AFTER THAT, MAKE THE TUNNEL ROTATE BY HAVING
>>> #EACH SUCCESSIVE SQUARE TILTED

En essayant d'accomplir les deux dernières tâches, ils connaîtront de nombreuses tentatives infructueuses, mais les échecs seront visuellement intéressants et ils apprendront rapidement en essayant de comprendre pourquoi le dessin n'a pas obtenu ce à quoi ils s'attendaient.

L’essentiel est que la personne en question doit avoir un problème qu’elle souhaite résoudre.Si vous n'avez pas de programme à écrire (et quelque chose de sensé et bien défini, pas "Je veux écrire le prochain Quake !"), alors vous ne pouvez pas apprendre à programmer, car vous n'avez rien pour vous motiver. .Je veux dire, vous pourriez lire un livre et avoir une compréhension approximative de la syntaxe et de la sémantique d'un langage, mais jusqu'à ce que vous ayez un programme que vous voulez écrire vous ne saisirez jamais l'ortie.

Si cet élan existe, alors tout le reste n’est que des détails mineurs.

Je ne sais pas si quelqu'un en a déjà parlé ici, mais vous voudrez peut-être vérifier Zed Shawc'est Apprenez Python à la dure

J'espère que cela t'aides

http://tryruby.hobix.com/">Essayez Ruby (dans votre navigateur)

C'est un livre fantastique que mes petits frères apprenaient :

http://pine.fm/LearnToProgram/

Bien sûr, la chose la plus importante est de commencer un programme réel et utile IMMÉDIATEMENT après avoir terminé le livre.

S’il est intéressé, les détails mineurs ne sont-ils pas les bons côtés ?En utilisant Python, vous avez déjà supprimé l'interface graphique afin d'éliminer toute confusion.Pourquoi ne pas choisir un projet, un jeu ou quelque chose du genre, et le mettre en œuvre.Le jeu classique de devinettes de nombres hi-lo peut être simplement implémenté à partir de la ligne de commande en 20 à 30 lignes de code (selon la langue bien sûr) et vous donne des variables, des conditions, des boucles et des entrées utilisateur.

Je le laisserais simplement écrire des tonnes de code.Laissez-le conduire dans tout ce que vous faites et soyez simplement disponible pour répondre aux questions.

Croyez-le ou non, après quelques mois passés à écrire des tonnes de code merdique, il commencera à avoir l'idée et à écrire de meilleurs programmes.À ce stade, vous pouvez vous enliser dans les détails (mémoire, etc.) et également parler des principes généraux de conception.

J'ai entendu dire que ce qui différencie les grands artistes des médiocres, c'est que chaque fois qu'ils pratiquent, ils améliorent quelque chose, aussi petit soit-il.Laissez votre frère s'entraîner et il s'améliorera à chaque fois qu'il s'assiéra au clavier.

Modifier:[Justin Standard]

Esteban, ça me rappelle un récent codage d'un article d'horreur, et moi faire je pense que tu as raison.Mais je pense que cela vaut toujours la peine de trouver des méthodes pour guide sa pratique.Pas de doute, je veux qu’il écrive autant de code qu’il sait le faire.C'est une des raisons pour lesquelles je demande des exemples de projets.

Tout d’abord, commencez comme tout le monde :avec un Bonjour le monde programme.C'est simple et cela leur donne une idée de base de la présentation d'un programme.Essayez de vous rappeler l'époque où vous avez commencé à programmer et à quel point certains concepts étaient difficiles - commencez simplement.

Après Hello World, passez à la création de quelques variables de base, à l'arithmétique, puis à la logique booléenne et aux instructions if/else.Si vous possédez l'un de vos anciens manuels de programmation, consultez quelques-uns des premiers exemples et demandez-lui de les parcourir.N'essayez pas d'en introduire trop d'un coup, sinon cela serait écrasant et déroutant.

Une chose à laquelle vous devez être très attentif lorsque vous apprenez à programmer à votre frère est qu'il ne compte pas trop sur vous.Souvent, lorsque je me retrouve à aider les autres, ils commencent à me considérer comme un livre de réponses à toutes leurs questions et au lieu d'expérimenter pour trouver une réponse, ils me la posent simplement.Souvent le meilleur professeur est l'expérimentation et chaque fois que votre frère a une question comme "Que se passera-t-il si j'ajoute 2 à une chaîne?" Tu devrais lui dire d'essayer et de voir par lui-même.J'ai également remarqué que lorsque je ne parviens pas à transmettre un concept à quelqu'un, il est utile de voir un exemple de code dans lequel nous pouvons examiner chaque segment individuellement et l'expliquer pièce par pièce.En passant, les nouveaux venus en programmation ont souvent des difficultés avec l'idée de la programmation orientée objet. Ils diront qu'ils la comprennent lorsque vous leur enseignez, mais n'en auront pas une idée claire avant de l'avoir réellement mise en œuvre.

J'avais l'habitude d'enseigner la programmation et votre frère a un avantage principal sur la plupart de mes étudiants qu'il veut apprendre :)

Si vous décidez d'opter pour C un ami a un site qui contient le genre de programmes dont les utilisateurs des générations plus âgées se souviennent comme des saisies de base.Les plus complexes d'entre eux utilisent des ncurses, ce qui annule quelque peu leur utilisation comme outil pédagogique, mais certains d'entre eux sont de toutes petites choses et vous pouvez apprendre beaucoup de choses sans qu'on vous l'apprenne.

Personnellement, je pense que Python et Ruby feraient d'excellents premiers langages.

MODIFIER:liste des devoirs de programmation pour débutants apparu du jour au lendemain pourrait être exactement ce que vous recherchez.

Cela dépend vraiment du style d'apprentissage de votre frère.De nombreuses personnes apprennent plus rapidement en mettant la main à la pâte et en s'y mettant simplement, cristallisant les concepts et la vue d'ensemble au fur et à mesure qu'ils progressent et développent leurs connaissances.

Moi, je préfère commencer par une vue d’ensemble et approfondir les choses.La première chose que je voulais savoir, c'était comment tout cela s'articulait, puis tout ce charabia orienté objet, puis les classes et les instances, etc.J'aime connaître les concepts sous-jacents et un peu de théorie avant d'apprendre la syntaxe.J'avais un petit avantage car j'écrivais quelques jeux en BASIC il y a 20 ans mais plus grand-chose depuis.

Il est peut-être utile d'observer un processus de production en commençant par un énoncé de mission global, puis un plan et/ou un organigramme, puis d'élaborer un pseudo-code (en s'appuyant sur la syntaxe que vous utiliserez finalement) avant d'écrire réellement le code.

La règle d'or ici est de déterminer le style d'apprentissage de votre élève.

Si votre frère a accès à iTunes, il peut télécharger les conférences vidéo d'un cours d'introduction à l'informatique donné par Richard Buckland à l'Université de Nouvelle-Galles du Sud.C'est un instructeur engageant et couvre les principes fondamentaux de l'informatique et du langage C.Au moins, dites à votre frère de lire les vidéos en arrière-plan et certains concepts pourraient s'imprégner par osmose.:)

COMP1917 Informatique supérieure - 2008 Session 1 http://deimos3.apple.com/WebObjects/Core.woa/Browse/unsw.edu.au.1504975442.01504975444

Si le lien ne fonctionne pas, voici un chemin :

Accueil -> iTunes U --> Ingénierie --> COMP1917 Higher Computing - 2008 Session 1

il y a un wikibook plutôt bon pour apprendre Python.

Je ne sais pas comment fonctionnent les wikibooks pour d'autres langues, mais j'ai personnellement appris Python à partir du wikibook tel qu'il était en février 2007.

ps - si vous ne connaissez pas livres wiki, il s'agit essentiellement de la version Wikipédia de la création de livres.c'est un peu difficile à décrire, mais si vous consultez quelques-uns des livres, vous verrez comment cela fonctionne

Je pense que Python est une excellente idée.Je lui donnerais quelques tâches de base à réaliser par lui-même et lui dirais que toutes les impasses qu'il rencontre peuvent probablement être résolues par un voyage sur Google.Pour moi, au moins, résoudre un problème par moi-même le faisait toujours mieux persister que si quelqu'un me disait la solution.

Quelques projets possibles (sans ordre particulier) :

  • Simulateur de tirage de pièces.Laissez l’utilisateur saisir le nombre souhaité d’essais pour le tirage au sort.Exécutez-le et affichez les résultats ainsi que le pourcentage pour pile ou face.

  • Créez un convertisseur de température avec un menu qui prend en compte les entrées de l'utilisateur pour choisir le type de conversion que l'utilisateur souhaite effectuer.Après avoir choisi la conversion et l'avoir effectuée, elle devrait revenir au menu principal.

    Voici un exemple de convertisseur étendu avec la même idée : http://pastebin.org/6541

  • Créez un programme qui prend une entrée numérique et affiche la note en lettres à laquelle elle se traduirait.Il finira par évaluer l'entrée par rapport aux instructions if et elif pour trouver où elle se situe.

  • Créez un quiz simple comprenant plusieurs questions à choix multiples ou remplissez les questions vides.À la fin, il affichera comment l'utilisateur a fait.Il peut choisir toutes les questions qu'il souhaite.

  • Prenez un certain nombre (vraisemblablement important) de centimes et convertissez-le en dénominations plus grosses.Par exemple, 149 centimes = 1 dollar, 1 quart, 2 centimes et 4 centimes.

  • Créez un gestionnaire de liste simple.Être capable d'ajouter/supprimer des listes et d'ajouter/supprimer des entrées dans ces listes.Voici un exemple de gestionnaire de liste de Noël : http://pastebin.org/6543

  • Créez un programme qui construira puis testera si les nombres saisis forment un carré magique (avec un tableau 2D).Voici un exemple de code, mais il devrait vraiment imprimer le carré à chaque étape afin de montrer où en est l'utilisateur en termes de construction du carré : http://pastebin.org/6544

Je suggérerais également de faire quelques trucs avec xTurtle ou un autre module graphique pour mélanger les choses et l'empêcher de devenir ennuyeux.Bien sûr, il s’agit bien de programmation pratique et non de scripts pour lesquels beaucoup de gens utiliseraient réellement Python, mais les exemples que j’ai donnés sont directement tirés de l’époque où j’apprenais via Python et cela a très bien fonctionné pour moi.Bonne chance!

Amusez-vous simplement !

Étonnamment, Scala pourrait être le plus simple si vous essayez Kojo

Si ton frère aime les puzzles, je recommanderais Défi Python.Je ne l'utiliserais pas comme outil pédagogique formel dans un tutoriel individuel, mais c'est quelque chose qu'il peut faire lorsque vous n'êtes pas ensemble pour se mettre au défi et s'amuser.

Après avoir parcouru quelques livres électroniques gratuits, j'ai trouvé que le meilleur livre pour apprendre à programmer était Head First Programming publié par O'Reily Press.Il utilise Python comme langage et vous propose des programmes sur lesquels travailler dès le début.Ils sont tous plus intéressants que « Hello World ».Cela vaut bien l'argent que j'ai dépensé dessus, et comme il est sorti depuis un moment, vous pourrez peut-être trouver une copie d'occasion moins chère sur Ebay ou Amazon.

Si vous souhaitez enseigner les bases de la programmation, sans être spécifique au langage, il existe une application appelée Gratter qui a été créé au MIT.Il est conçu pour aider les gens à développer des compétences en programmation.Au fur et à mesure que les utilisateurs créent des projets Scratch, ils apprennent à créer des conditions, des boucles, etc.Il existe également une communauté de projets scratch, à partir desquels les projets peuvent être téléchargés - de cette façon, vous pouvez explorer les programmes d'autres personnes et voir comment ils ont été construits.

Je pense qu'une fois qu'il a les bases (variables, boucles, etc.), vous devriez essayer de l'aider à trouver quelque chose de spécifique qui l'intéresse et l'aider à apprendre les éléments nécessaires pour y parvenir.Je sais que je suis beaucoup plus enclin et motivé à faire quelque chose si cela m'intéresse.Assurez-vous également de le laisser lutter contre certains des problèmes les plus difficiles, rien n'est plus satisfaisant que le moment où vous les résolvez par vous-même.

J'ai appris à résoudre des problèmes de manière indépendante de la langue, à l'aide d'organigrammes et de PDL (Langage de conception de programme).Après quelques semaines, j'ai appris à convertir le PDL que j'avais écrit en langage.Je suis heureux d'avoir appris de cette façon car j'ai passé la majorité de mes années à programmer, à résoudre des problèmes sans être lié à un langage.Le langage que j'utilise a toujours été un détail d'implémentation et ne fait pas partie de la conception.

Devoir résoudre le problème en le décomposant en étapes de base est une compétence clé.Je pense que c'est l'une des choses qui différencient ceux qui savent programmer de ceux qui ne le peuvent pas.

En ce qui concerne la façon dont vous abordez l'ordre des concepts d'une langue, je pense que le moyen le plus simple est de décider d'avoir un projet en tête et d'aborder les concepts selon leurs besoins.Cela vous permet de les appliquer selon vos besoins sur quelque chose qui vous intéresse.Lorsqu’on apprend une langue, il est bon d’avoir en tête plusieurs projets simples et quelques projets de complexité progressive.Choisir ceux-ci vous aidera à définir les concepts nécessaires et leur ordre.

Je recommanderais également de regarder quelques screencasts - ils sont généralement créés dans le contexte d'une technologie spécifique et non d'un langage, mais si du code Python est affiché, cela fera l'affaire :).Le fait est qu'ils sont créés par de bons programmeurs et que regarder à quel point les bons programmes des programmeurs sont une bonne chose.Vous et votre frère pourriez également participer à des programmes entre pairs, ce qui pourrait être une idée encore meilleure.N'oubliez pas d'expliquer POURQUOI vous faites quelque chose de cette façon et pas de cette façon.Je pense que la meilleure façon d'apprendre la programmation est de partir de bons exemples et d'essayer de ne même pas voir les mauvais.

Robert Read a écrit un guide utile, Comment être programmeur, qui couvre un large domaine de problèmes de programmation qu'un débutant trouverait utile.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top