Mehode pour apprendre à programmer sans ordinateur/calculette/autres

Répondre
Partager Rechercher
Hello tout le monde,

Dans un contexte bien particulier, une personne m'a demandé de lui apprendre à programmer. Cette personne n'a acces à aucun ordinateur, calculette ou bidule informatique pour pouvoir avoir une vision concrete de ce qu'il va apprendre, ce qui pose beaucoup de probleme car cela revient à faire de la theorie pure sans aucune mise en pratique possible.

Mon but est de lui inculquer les bases de la maniere de penser d'un developpeur, avec seulement un stylo et une feuille de papier. A savoir que cette personne n'a aucune connaissance dans ce domaine, et qu'il faut tout voir de A à Z.

Quand j'ai fait S-TI (nouvellement SSI), on avait fait des diagrammes & co pour acquerir une certaine logique, mais je la trouve pas adapter dans ce cas de figure. Et les autres methodes sont trop longues (en faite, faudrait que j'arrive à un "resultat" en 2 semaines), et demandent essentiellement un support informatique pour faciliter la comprehension.

Imo, la maniere la plus simple reste l'algorythmique avec ses petits carres et ses petits losanges, mais je n'ai plus de support de cours pour debutant la dessus. Si quelqu'un à cela sous la main, cela m'interesse
Je m'étais servi de ce cours il y a quelques années :
http://www.pise.info/algo/codage.htm

Je suis pas sur qu'il explique les dessins, c'est plus de la logique.
De toutes facons, les dessins tu les fait à ta sauce, tant que tu as une seule entrée, une seule sortie, et seulement deux choix par option c'est bon ( pour saisir la logique en tout cas).


Sinon, tu peux lui apprendre a faire des bases de données, c'est marrant aussi.
Apprends lui déjà AND OR NOR XOR NAND.

Ensuite les types de variables classiques (entier, réel, caractère, chaine, booléen)

Apprends lui ensuite la structure d'un programme:

Début du programme, déclarer des constantes, déclarer des variables, début du traitement, fin du traitement, fin du programme.

Avec un basique: afficher $chaine "hello world"

Ensuite les SI ALORS SINON FIN SI.

Peut être voir les SELON CAS.

Ensuite les boucles.

Ensuite les piles, files, listes ( qui conduiront à l'apprentissage des tableaux, puis des tableaux à deux entrées...)

Une fois qu'il connait ca, amuse toi à lui faire des exercices dans le style "prendre une chaine X et trier voyelles et consonnes, dans leur ordre d'apparition".

Ca lui permettra de voir une boucle, de voir un tableau déclaré en constant (les voyelles), de faire une liste (ou chaine), etc...
C'est que t'es un très mauvais professeur.

Ton support, y'a rien de plus simple.
Un tableau, avec d'un côté les variables, de l'autre des étapes clefs (genre chaque instruction).
Tu mets la valeur de chaque variable dans chaque ligne du tableau.

Ca permet de visualiser le contenu de chaque variable, comment travaille le programme, etc...
Citation :
Publié par Airmed / Ildefonse
Ca cest du cours classique, et sans aucun support de test, je trouve ca a chier.
A ce moment là, demande lui de te coder un OS qui rentrerait directement en concurrence avec Unix et Windows, ça sera beaucoup plus ludique, et ça sera beaucoup moins à chier, que de lui apprendre les bases.
J'ai été amené à faire quelques formations mais pour te répondre il me faudrait plus d'info.

Notamment as tu un type de programmation comme objectif ? (objet, séquentiel, ...)
De ce type de programmation va s'adapter la manière dont tu vas faire le cours.

Exemple concret (et assez standard en fait ) :

Faire comprendre à quelqu'un comment programmer en objet... ben d'abord on lui fait comprendre ce qu'est l'objet, ce qu'il y a derrière. Et pour nous faciliter le travail on s'appuie sur quelque chose de concret : par exemple une omelette

Donc pour faire une omelette de base il faut : des oeufs, du sel, quelques herbes de provence, ... (miam j'ai faim là)... bon bref : ben ça ce sont les attributs de notre objet. Après il y a la recette : prendre les oeufs, les cassez ... etc etc ... et bien là on a une méthode. Etc etc ... en gros je pense que tu vois le truc

Après et bien on affine la réflexion jusqu'au niveau voulu. Dans notre exemple on peut très bien mettre en place un notion d'héritage : exemple oeuf, ben on peut dire qu'il hérite des attributs d'une classe mère "aliment" ayant des propriétés communes à tout les aliments, etc... idem pour les notions de boucle (exemple restaurant qui fait des omelettes à la chaîne... ) etc etc...

Donc en gros : on prend un exemple de la vie de tout les jours, bien concret, ensuite on le décline plus ou moins suivant les notions que l'on veut faire passer.

Après si l'étape suivant est de faire apprendre un langage de programmation, on décline chaque notion par son équivalent du langage.

Pour le cas concret le mieux est de s'appuyer sur l'objectif de la personne : pourquoi a t'elle besoin de faire cet apprentissage, à quoi cela va t'elle lui servir, dans quelle circonstance. Après c'est comme tout, rien ne vaut la pratique, et même avec un simple stylo et un papier, le nombre de cas pratique à mettre en place est infini.
En Fac d'Info là où j'suis on travaille tous au Stylo/Papier en cours intégré et ça se passe pas plus mal. Pour apprendre les bases à quelqu'un t'as pas besoin d'un support de fou, faut surtout lui faire comprendre que vouloir lui faire appliquer. Et deux semaines pour former quelqu'un a autre chose que les bases sans qu'il mélange tout, je demande à voir.
Tu lui fournis des petits programmes simples (une boucle qui remplis un tableau avec des numeros de 1 a 10 par exemple) et tu lui fais dessiner le resultat etape par etape. Il fait la suite des instructions et remplis le tableau comme si c'etait lui le processeur. Tu peux varier les exercices a l'infini sur ce principe (enfin la limite etant ce qui est fastidieux, faut pas que ca lui prenne 2h pour dessiner le truc) en passant ensuite sur une manipulation de liste chainee, par exemple, ou un tri min/max, puis un tri a bulle. Tu n'as meme pas besoin de fournir le code dans un langage compilable, du "algocode" est aussi (voir plus) clair. Si ton ami a fait des maths n'hesites pas a carrement remplacer les while par [latex]$\forall$[/latex].
Citation :
Publié par Domtav
J'ai été amené à faire quelques formations mais pour te répondre il me faudrait plus d'info.
Tu vas beaucoup trop loin. Pour l'instant, c'est disons plutot les concepts de programmation.
Mettons que un objectif serait la conception d'un graphcet, mais à la sauce d'un programme standard, plutot que dans un objectif industriel. Donc toutes les notions objet & co, il faut oublier.

Citation :
Publié par Mothra
Tu lui fournis des petits programmes simples (une boucle qui remplis un tableau avec des numeros de 1 a 10 par exemple) et tu lui fais dessiner le resultat etape par etape.
Pour l'instant je travaille la dessus, le tableau en moins (un compteur de 0 à 10) en format algo.
Il a un niveau totallement nul en math et a du mal à reflechir (pour situer un peu le contexte). Qui plus est je suis pas prof à la base, donc y a des trucs auquel j'ai pensé que aujourd'hui comme l'explication a cote, etape par etape, de ce qu'il se passe.
Pour cela que je cherchais un support de cours deja fait.
Bah, les maths c'est pas obligatoire, faut surtout une bonne logique de programmation. Par exemple pour les boucles trouver les bonne variables toussa...
Oui enfin... qui en général dispose d'une bonne faculté de raisonnement dans l'abstrait, de bonnes capacités de logique et consort? Plutôt des littéraires ou des scientifiques à ton avis?

Manipuler des variables, des modèles et concepts abstraits, tout scientifique y passe.

- et un scientifique qui est une tanche en maths rencontrera plus d'un problème...Et c'est un euphémisme... -
c'est une idée, mais concretement qui ne se verifie que postbac. Avant, les maths c'est essentiellement du par coeur, des schemas standards et assez peu de raisonnement.

Dans mon cas de figure, le but c'est pas d'en faire bill gates, mais qu'il comprenne comment ca fonctionne et soit capable de faire un algo simple (le "jeu" ou faut trouver un nombre entre 0 et 1000 en 10 essais est mon objectif).
Citation :
Publié par Airmed / Ildefonse
c'est une idée, mais concretement qui ne se verifie que postbac. Avant, les maths c'est essentiellement du par coeur, des schemas standards et assez peu de raisonnement.

Dans mon cas de figure, le but c'est pas d'en faire bill gates, mais qu'il comprenne comment ca fonctionne et soit capable de faire un algo simple (le "jeu" ou faut trouver un nombre entre 0 et 1000 en 10 essais est mon objectif).
Avec un tableau trié je suppose?

Dans ce cas, la méthode dichotomique est celle qui t'assure de trouver en 10 coups maximum car 1000 <= 210.

Si ça c'est pas des math, ça y ressemble fort...

Oui enfin...ce n'est pas parce que les mathématiques ont collé un nom à la chose que...

Parce que la dichotomie, ce n'est rien moins que de la logique pure et dure. D'ailleurs, imagines le jeu sous la forme de lettres plutôt que de chiffres. Genre "Trouver une lettre en moins de 5 coups", avec le même principe d' "intervalles".

- lettre précédent L ?
- non
- lettre suivant S ?
- oui
- lettre précédent V ?
- non
- lettre suivant X ?
- non
- W
- Bingo.

Le jeu pour enfant à coup de "tu brûles", "ça refroidit", revient un peu au même au passage en posant des repères. Même si bien sûr l'enfant n'en a pas conscience.

Bien sûr, tout peut être traduit en maths, W étant la 23eme lettre de l'alphabet, et la position de ce que caché pouvant être traduit par des coordonnées...
Citation :
Publié par Necam
N'y voit aucun troll ou question ironique, mais il veut faire quoi d'un "tel" savoir ?
Disons que le contexte est tres particulier, je n'ai pas trop la reponse.
Eventuellement lui donner (un jour) un "petit" boulot en dev.

@Syrus :
comme le dit drys, on peut y voir une approche purement mathematique du probleme, ou simplement tester plusieurs "strategie". Cela n'enleve rien à la partie algo de conception de ce type de "jeu".

Citation :
Publié par Drys Kaine
Ah oui ok... c'pas le même trip.

( fais lui faire un pendu en bash pour le niveau suivant )
Le probleme du pendu, c'est que cela introduit d'autres notions tel que la recherche dans un tableau (ou chaine de chr, suivant comment on le concoit). Deja si j'arrive au jeu d'un chiffre entre 0 et 1000, je serais content de lui (et de moi )
Pour avoir suivi pendant 1 an des cours d'IUT Informatique, j'ai eu le droit a des cours sans PC : Algorithme et C++. Les cours de C++ etant surtout une extension des cours d'algo.

En gros tu lui fais recherché les fonctions a faire pour résoudre un probleme. Tu devrais en trouvé pas mal sur le net.

Bon courage quand meme
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés