“répéter” structure en Java
Je suis l'enseignement de la programmation pour les débutants (à partir de 12 à 15 ans) et l'un des choix que nous avons faits (parce que c'était naturel en Python) était d'enseigner la notion de "répétition d'une action" avant la notion de variables.
Nous warted en Python avec
for loop in range(10):
sans parler des variables de tableaux et en C++ avec
#define repeat(nb) for(int _loop = 0 ; _loop < (nb) ; _loop++)
L'idée est de cacher la complexité d'un classique de la boucle afin d'insister sur la "répétition" de la partie. Nous ne sommes pas en se cachant des élèves sur le fait que "répéter(10)" n'est pas une partie de C++,
c'est juste une manière de simplifier l'apprentissage.
En Pascal on ne peut pas faire beaucoup plus que
for loop := 1 to 10 do
mais c'est ok parce que sa n'est pas difficile à retenir.
Je cherchais quelque chose de semblable en Java et j'ai constaté que :
import java.util.List;
import java.util.AbstractList;
class Range {
public static List<Integer> size(final int end) {
return new AbstractList<Integer>() {
@Override
public Integer get(int index) {
return 0 + index;
}
@Override
public int size() {
return end;
}
};
};
}
public class Main {
public static void main(String[] argv) {
for (int loop : Range.size(10)) {
System.out.println("xx");
}
}
}
La
for (int loop : Range.size(10))
est encore plus facile à mémoriser que
for(int loop = 0 ; loop < 10 ; loop++)
mais il y a deux problèmes :
- deux variables sont nécessaires pour les boucles for imbriquées : je ne pense pas que nous pouvons faire beaucoup parler
- nous avons mises en garde parce que la variable
loop
n'est pas utilisé
Voyez-vous une meilleure solution que ce que nous avons ?
Encore une fois, nous ne voulons fournir quelques "outil" au début de la phase pour que les élèves de "répéter", actions, avant de savoir quoi que ce soit à propos de "variables". Nous ne sommes pas cacher que c'est n'est pas dans le langage et après quelques exercices (~80-100) nous demandons à la syntaxe.
Nous avons environ 20 exercices avant l'introduction de variables : certains au sujet de l'impression des textes, mais surtout nous fournir une bibliothèque avec des objets, vous pouvez manipuler (d'où les variables sont cachés dans l'état de l'objet). Vous pouvez penser à la "le logo de la tortue" par exemple. De cette façon, la notion de "boucle" qui peuvent être manipulés et "vu" avant l'introduction explicite des variables et vous pouvez avoir interressant d'exercices très rapide.
Un exemple, en Python, les endroits que vous voulez visiter tous les cas de 10x10 table une fois et une seule fois et ensuite revenir à votre point de départ (coin inférieur gauche) :
from robot import *
top()
for loop in range(4):
for loop in range(8):
top()
right()
for loop in range(8):
bottom()
right()
for loop in range(8):
top()
right()
for loop in range(9):
bottom()
for loop in range(9):
left()
Cet exercice n'est pas facile, mais la syntaxe est très simple et de permettre à l'étudiant de se concentrer sur le "algorithmique" et pas le "langage" de la partie.
Après quelques exercices, les étudiants obtiennent interresse et nous pouvons introduire plus de la syntaxe et de la plus difficile des concepts comme les variables.
J'ai édité ma question pour vous expliquer un peu plus à propos de nos exercices.
Les Variables de toujours se sentir suffisamment fondamentaux pour moi que je voudrais vraiment suggèrent d'introduire ceux avant boucles. On dirait que vous vous êtes essentiellement en essayant de tourner toutes les autres langues dans le Logo, mais ils ne sont pas.
À mon humble avis de Son mieux pour apprendre aux gens à utiliser la langue de la façon dont il est habituellement utilisé. Une boucle en Java si l'un des la plupart des constructions de base.
Si la langue n'est qu'un outil, alors pourquoi commencer avec Java et de ne pas coller à Pascal par exemple, où tu disais que tu n'avais pas à changer quoi que ce soit ?
OriginalL'auteur Loïc Février | 2012-01-14
Vous devez vous connecter pour publier un commentaire.
Avez-vous vraiment besoin d'utiliser Java pour les exercices? Si d'autres langues qui fonctionne pour vous, alors pourquoi ne pas les utiliser? Vous pouvez toujours passer à Java lorsque vous les étudiants connaissant les bases comme les variables.
Je suis d'accord que les variables peuvent être assez déroutant de débutants, surtout que leur valeur peut changer tout le temps, il n'est pas quelque chose que les gens sont utilisés à partir de l'algèbre, où les valeurs ne changent pas une fois "attribué".
Si vous souhaitez utiliser Java, vous pouvez utiliser la boucle while qui paraît convenir le mieux. Un sale truc, comment faire pour éviter l'utilisation de la variable code suivant - il utiliser StackTraceElement au lieu de la variable.
Il imprime
Ici est complète de la source. principale(Strinng[] args) la méthode est code avec des boucles, le repos est la prise en charge de code.
Mais je préfère utiliser un langage qui prend en charge ce naturellement.
OriginalL'auteur Arnost Valicek
Je serais toujours introduire des variables d'abord. Qu'allez-vous faire à l'intérieur de la boucle sans les connaissances sur les variables ?
Outre que ce serait peut-être plus facile d'utiliser une boucle while. À la tête d'une boucle while est beaucoup plus facile et ne nécessite pas de définitions de variables.
C'est très simple à comprendre:
OriginalL'auteur lhk
Java n'est pas vraiment adapté pour ce genre de tâche, car il ne permet pas de fonctions devant être transmis.
La seule façon que je peux penser de le faire sans variables serait avec une interface:
Et ensuite l'utiliser de cette façon:
Qui serait sans variables mais assez déroutant au début.
OriginalL'auteur tim
Ce n'est pas vraiment ce que vous recherchez, mais c'est mon opinion et comment je pourrais l'enseigner. (Attention, je ne suis pas un enseignant à tous :D)
Ne sont pas là deux cours différents pour cette: Algorithmes et à la Programmation? Dans la programmation, vous devriez vraiment commencer par leur enseigner les variables. Il n'est pas difficile du tout. Et je ne pense pas que 20 exercices sur les algorithmes sont va être intéressant pour eux. Je pense qu'ils seront plus attirés par la puissance de l'informatique quelque chose que ce soit écrit pour des boucles à l'intérieur les uns des autres. Écrire un programme simple qui calcule certaines sommations et de multiplications et d'autres le feront à introduire la notion de primitive variables. Ensuite, je voudrais introduire dans la boucle for. Démontrer par l'impression de 10 fois du texte en combinaison avec la variable utilisée dans la boucle for:
Puis l'écriture d'une application qui calcule la factorielle d'un nombre codé en dur sera intéressant, je pense. De cette façon, la plupart d'entre eux espère avoir l'idée de travailler avec des variables. Puis essayer d'expliquer étendues.
OriginalL'auteur Martijn Courteaux
si vous avez une limite définie, vous devez utiliser un alors que la structure
while(myval < mylimit){
//faire quelque chose
myval++;
}
mais lorsque la limite est inconnu, alors vous devriez utiliser pour ou pour chaque
for (int i =0; i< liste.size();i++)
{
}
de par les objets
pour chaque (String myString : myStringArray){
}
Saludos
OriginalL'auteur elopez