Comment faire une boucle sans fin dans une idole. Exécution d'algorithmes cycliques basés sur le système "idole". Commandes de robot simples

Considérez le problème :

L'entrée du programme est un nombre naturel ne dépassant pas 2 * 10 9. Déterminer la somme des chiffres de ce nombre.

À première vue, la tâche est très simple : il faut mettre en évidence séquentiellement les nombres du nombre et les ajouter à la somme. En même temps, il est évident que le nombre de chiffres dans le nombre peut changer, donc la valeur finale du paramètre de boucle pour s'avère indéfinie et il y a des difficultés avec son application.

Dans les algorithmes de bouclage, dans lesquels le nombre de répétitions d'un certain ensemble de commandes ne peut être obtenu qu'au moment où il commence, des boucles conditionnelles sont utilisées.

Au revoir cycle

Une telle construction dans le langage de programmation Kumir est vélo au revoir... Ce cycle, souvent appelé boucle de précondition, Il a format suivant enregistrements :

  • nc jusqu'à présent état
  • corps_cycle

La condition écrite après le so far est une expression booléenne.

La boucle est exécutée comme suit :

  1. La valeur est calculée Expression booléenne.
  2. Si le résultat du calcul est non, alors l'exécution du cycle se termine et l'Idole passe à la première commande après le cycle bye. Si le résultat du calcul est oui, le corps de la boucle est exécuté, après quoi la valeur de l'expression avec la nouvelle valeur est à nouveau calculée.

Important! Dans le corps de la boucle, pour l'instant, il doit y avoir un changement dans une valeur associée à la condition afin d'assurer la fin de la boucle, sinon, la boucle peut se terminer pour toujours.

Utilisons maintenant une boucle while pour résoudre notre problème.

  • nombre d'entrée
  • nc tant que num> 0
  • somme : = somme + mod (num, 10)
  • num : = div (nombre, 10)
  • montant de retrait

Ainsi, au cours de chaque exécution du corps de la boucle, le dernier chiffre du nombre est ajouté à la valeur de la somme, puis le nombre est réduit de 10 fois. Évidemment, num finira par devenir 0, après quoi la boucle se terminera.

Le cycle « jusque-là »

Dans Kumir, il existe une autre version d'une boucle avec une condition, appelée boucle jusqu'alors, qui a le format suivant :

  • corps_cycle
  • kts à l'état

Si dans la boucle alors que la condition est vérifiée avant le corps de la boucle, alors dans la boucle jusque-là - après. Par conséquent, ce cycle est souvent appelé boucle avec postcondition... Le corps d'une telle boucle sera toujours exécuté au moins une fois.

Jusque-là, le cycle fonctionne comme suit :

  1. Le corps de la boucle est exécuté
  2. La valeur de l'expression logique est évaluée. Si le résultat du calcul est non, alors le corps de la boucle recommence à s'exécuter, et ainsi de suite. Si le résultat du calcul est oui, alors la boucle se termine et l'Idol procède à l'exécution de la commande suivante après le boucler.

Tâche. Le programme reçoit une séquence d'entiers se terminant par zéro. Trouvez le nombre de nombres négatifs dans la séquence. Il est garanti que la séquence contient au moins un entier différent de zéro.

(Un extrait du code du programme)

  • nombre d'entrée
  • si nombre 0
  • alors k : = k + 1
  • nœuds à num = 0
  • rose

Cours 4. Expressions arithmétiques

Expressions arithmétiques et règles pour les écrire. Algorithmes de rétroaction. Au revoir commande. Conditions dans langage algorithmique... Si et commandes de choix. Les équipes de contrôle. Présentation "visuelle" des commandes. Digression : les règles et la forme d'écriture des expressions arithmétiques en fortran du XXIe siècle.

Numéro de journal

Cours 1. Les principaux objectifs du cours. Méthodologie pour construire un cours. Approche problématique. La théorie s'apprend par la pratique. Le système Kumir est un support efficace des concepts traditionnels des langages de programmation procédurale et des méthodes de débogage traditionnelles. Exemples d'utilisation de "Kumir" dans des cours pré-professionnels.

Cours 2. Connaissance pratique du système Kumir : Robot performer. Le concept d'algorithme. Contrôler le robot performer à l'aide de la télécommande. Algorithmes linéaires. Enregistrement de l'algorithme. Retraite : Karel-Robot à cours initial programmation à l'Université de Stanford.

Cours 3. Méthodes d'enregistrement "visuel" de l'algorithme. Commande programmée par robot. Cycle " m une fois". Utilisation d'algorithmes auxiliaires. Écriture d'algorithmes en langage algorithmique.

Travail d'examen numéro 1.

Cours 4. Expressions arithmétiques et règles pour les écrire. Algorithmes de rétroaction. Au revoir commande. Conditions dans un langage algorithmique. Si et commandes de choix. Les équipes de contrôle. Présentation "visuelle" des commandes. Digression : les règles et la forme d'écriture des expressions arithmétiques en fortran du XXIe siècle.

Cours 5. Grandeurs en langage algorithmique. Commandes d'entrée/sortie d'informations. Commande d'affectation. Algorithmes auxiliaires. Algorithmes avec résultats et algorithmes-fonctions. Cycle « pour ». Valeurs tabulaires... Valeurs logiques, symboliques et littérales.

Travail d'essai numéro 2.

Cours 6. Méthodes d'algorithmique. Relations de récurrence. Méthode d'itération. Cycle invariant. Récursivité.

Conférence 7. Fondamentaux physiques ordinateurs modernes. Le microprocesseur est le cœur de l'ordinateur moderne. Comment créer un ordinateur.

Conférence 8. Interprètes virtuels et réels dans le système "Kumir". Artiste Dessinateur. Lego Robot est un interprète de "Kumir" contrôlé par logiciel. Hypertexte dans le système Kumir. Préparation des devoirs pour les étudiants et leur vérification automatique.

Travail final.

Pendant que l'étudiant « assemble » le programme dans « PiktoMir », il n'a pratiquement pas à maîtriser un nouveau « monde informatique » inhabituel. Bien sûr, l'enfant doit apprendre à utiliser la souris pour obtenir le résultat souhaité de l'ordinateur, mais l'interface dans son ensemble est basée sur des concepts et des actions familiers à l'enfant, est « transparente » et ne nécessite pas de concentration de l'enfant. trop sur le processus même d'interaction avec l'ordinateur. À ce moment, l'étudiant concentre presque 100% de ses efforts (ou, pour mieux dire, « la durée d'attention ») sur l'algorithme de résolution du problème. Mais dès qu'il y a un passage d'une programmation graphique à une programmation textuelle plus traditionnelle, l'élève commence à faire face à un « monde différent », dont les lois diffèrent de celles habituelles déjà étudiées à l'école. Il s'agit principalement d'écrire des expressions arithmétiques, l'élève a passé des dizaines d'heures à maîtriser les compétences de leur manipulation dans les cours de mathématiques à l'école et a atteint un certain automatisme.

Dans les premières tâches de contrôle du Robot, l'ordinateur démontre ses capacités en tant que machine de contrôle, et non en tant que machine informatique. Mais alors un cycle apparaît N fois, et lors de la résolution de certains problèmes, l'élève peut avoir besoin de prendre comme N un nombre qui apparaît à la suite d'un calcul, par exemple, le nombre de cellules dans un champ de taille 9 ? 14. Il s'avère qu'il n'est pas du tout nécessaire de calculer le nombre total de cellules d'un tel champ par vous-même (dans votre esprit, sur papier ou avec une calculatrice) et de « saisir » le résultat dans le programme. Il s'avère que l'ordinateur lui-même sera capable de faire tous les calculs nécessaires dès que nous lui dirons (écrivez-le dans le programme) ce qui doit être calculé exactement. C'est-à-dire, grosso modo, pour résoudre un problème sur un ordinateur, vous n'avez pas tant besoin de savoir "combien seront deux fois deux", mais de pouvoir dire à l'ordinateur que vous devez prendre le résultat de l'exécution de l'opération " deux fois deux » ou l'opération « 9 fois par 14 ».

Il n'y a aucun problème avec l'addition et la soustraction. En enregistrement cycle 3 + 3 fois rien de nouveau pour l'étudiant. Dans exactement la même forme dans les cours de mathématiques, les élèves écrivent et, espérons-le, calculent diverses sommes et différences sans utiliser de calculatrice. Mais pour des expressions arithmétiques plus complexes, les règles d'écriture en mathématiques scolaires et dans les langages algorithmiques traditionnels commencent à différer quelque peu.

Le fait est que lorsque nous travaillons sur papier et sur un tableau noir, nous « dessinons » des formules mathématiques — racines, fractions, degrés et indices — et c'est très pratique. Et dans les langages de programmation traditionnels, une expression arithmétique ne peut pas être dessinée, mais doit être « codée » en appuyant sur les boutons d'un clavier d'ordinateur. De ce fait, une tradition de notation simplifiée, dite « linéaire » des formules s'est développée en programmation, à laquelle un étudiant en ce début de XXIe siècle doit s'habituer et s'adapter. (Probablement, d'ici le milieu du siècle, cela ne sera plus nécessaire, voir le programme en bas à droite.) Ainsi, lors de la saisie des formules requises (expressions arithmétiques) dans le programme, nous devrons utiliser le clavier de l'ordinateur et encoder (crypter) ces formules d'une certaine manière. Comme pour tout problème d'encodage ou de cryptage d'informations, ce simple problème technique peut s'avérer attirant pour certains écoliers (fatigués de contrôler le Robot). Lors de la résolution de ce problème, il s'avère qu'il y a un symbole de point sur le clavier, mais il n'y a pas de symbole de multiplication "?", Et le point ne sert pas du tout de symbole de multiplication. Il s'avère également qu'il n'est pas habituel d'écrire des formules arithmétiques de la forme 8 (2 + 3) avec le signe de multiplication manquant. Un ordinateur (plus précisément un compilateur d'un langage de programmation) pourrait comprendre de telles formules, mais refuse traditionnellement de le faire et demande d'entrer un astérisque dans la formule - un signe de multiplication : 8 * (2 + 3). Mais l'ordinateur, en règle générale, perçoit deux astérisques consécutifs comme un signe d'exponentiation.

Ensemble, tous ces petits détails forment l'obstacle que l'étudiant doit surmonter. C'est généralement simple.

En règle générale, les enfants ne font pas d'erreurs, à l'exception d'une très répandue: les fractions de la forme

et s'écrivent 3 + 5/2 et 3 * 5/2 sans crochets, au lieu de la notation correcte (3 + 5)/2 et (3 * 5)/2.

Règles d'écriture des expressions arithmétiques en fortran du XXIe siècle

Au cours des siècles passés, les mathématiciens ont pratiqué le langage des formules mathématiques, qui s'est avéré être un moyen efficace d'exprimer des concepts mathématiques et des méthodes de manipulation d'objets mathématiques. Lorsque les ordinateurs sont apparus au milieu du siècle dernier, les premiers éditeurs de texte informatiques et les premiers langages de programmation, ils se sont avérés incapables de travailler avec le langage des formules mathématiques élaboré en mathématiques. Au fil du temps, la situation des formules mathématiques dans les documents texte s'est améliorée. Les mathématiciens et les programmeurs ont inventé et standardisé des moyens d'entrer des formules mathématiques dans des documents texte, mais les programmeurs dans leurs programmes ont continué à utiliser la forme "linéaire" inexpressive d'écriture de formules sous la forme d'une chaîne de caractères saisie à partir d'un clavier standard.

Au 21e siècle, la situation a commencé à changer. Sur ordre de l'armée américaine, les spécialistes de SUN ont développé le langage Fortress, qui était à l'origine destiné à utiliser la notation mathématique généralement acceptée dans les textes des programmes. Sur le actuellement seuls les premiers pas ont été faits dans cette direction, mais dans la langue de la Forteresse il est déjà possible d'utiliser : Les lettres grecques :

exposants/indices et fractions :

formules avec des signes de multiplication omis :

formules dans lesquelles les arguments des fonctions élémentaires ne sont pas mis entre parenthèses :

définir des signes d'opération

Et ce n'est que le début, dans quelques décennies les textes des programmes utilisés par les scientifiques et les ingénieurs seront Aspect extérieur sont similaires aux manuels de mathématiques élémentaires et supérieures.

Algorithmes de rétroaction. Commande au revoir

Jusqu'à présent, nous avons travaillé avec le Robot dans le style des graphismes de la Tortue dans le LOGO, c'est-à-dire commandé sans aucun retour. Par conséquent, ce que nous avons fait (d'un point de vue méthodologique) pourrait être fait avec le même succès, par exemple, dans le même LOGO. Les algorithmes d'assistance (avec ou sans arguments) peuvent être appris à l'aide du Robot ou de la Tortue.

Au début, lors de la compilation des programmes pour le Robot (ou pour le Vertun), en règle générale, nous avions à l'avance des informations complètes sur la situation du Robot. Mais le Robot (et Vertun), d'un point de vue méthodologique, est bien plus riche que la Tortue, puisqu'il a des commandes de retour. Et, en utilisant ces commandes, un Homme peut rapidement obtenir des informations sur la situation autour d'un Robot à distance de lui, et un ordinateur peut rapidement recevoir des informations lors de l'exécution d'un programme. Par exemple, en exécutant la commande "libre à gauche", peu importe de qui elle vient, le Robot communique une partie d'informations sur la situation dans laquelle il se trouve en ce moment. Une autre information peut être obtenue en demandant au Robot si la cellule où il se trouve est peinte.

Lors de l'utilisation de la télécommande illustrée ci-dessus, la personne lit les réponses du Robot sur le tableau sous forme de texte. Une télécommande moins chère pourrait imiter la réponse du robot en allumant une ampoule (DEL). Lorsque le Robot est contrôlé par un ordinateur, la réponse du Robot est convertie en niveaux de signaux électriques. Mais l'essence du processus est la même : lorsque la commande de retour est exécutée, l'information va non seulement au Robot, mais est également transmise en sens inverse, du Robot à l'ordinateur ou à l'Homme. D'où le terme de rétroaction. Théoriquement, il était possible de faire avec une seule commande de question de chaque paire de type : Droite libre - Droite murale. Cependant, cela compliquerait l'écriture de l'algorithme, car cela nécessiterait l'introduction de la négation, qui à un stade précoce de la formation est méthodologiquement injustifiée, compliquant les règles d'écriture et d'exécution des programmes. Au lieu de la notation naturelle « au-dessus du mur », il faudrait écrire quelque chose comme « au-dessus n'est pas libre », ce qui suggère une sorte de dualité, et s'il y avait quelque chose en dehors du mur ?

Qu'est-ce que l'ameublement Robot

L'environnement du Robot est un champ rectangulaire entouré d'une clôture et divisé en cellules, et est décrit par les valeurs suivantes : 1) la taille du champ - le nombre de lignes (de 1 à 10) et le nombre de colonnes (de 1 à 16); 2) pour chaque alvéole : la présence de parois autour de l'alvéole ; signe d'ombrage; la quantité de rayonnement (mesurée en unités arbitraires, peut prendre n'importe quelle valeur réelle de 0 à 100); température (mesurée en degrés Celsius, peut prendre n'importe quelle valeur réelle de –273 à +233). Noter. La température la plus basse possible est (approximativement) le zéro absolu (0 degré Kelvin). La température supérieure est la température à laquelle les livres sont brûlés (451 degrés Fahrenheit). Cette température est connue de tous les lecteurs de la célèbre histoire de Ray Bradbury "Fahrenheit 451".

Le système de commande du Robot lui permet de déterminer les valeurs de toutes ces caractéristiques de cellule. De plus, la cage peut contenir des marques visibles par l'observateur, mais inaccessibles aux « sens » du Robot : des symboles dans les coins supérieur gauche et inférieur gauche de la cage, un point dans le coin inférieur droit de la cage. Le Robot lui-même (plus précisément son emplacement sur le terrain) fait partie intégrante de l'environnement. Il n'y a pas de commandes dans le système de commande du Robot qui vous permettent de demander les coordonnées du Robot sur le terrain.

Le Robot dispose de trois groupes de commandes de retour. Le premier groupe permet d'analyser la présence ou l'absence de murs par le haut, le bas, la droite et la gauche. Le deuxième groupe se compose de deux commandes-questions diamétralement opposées « la cage est-elle peinte ? » et « la cage est-elle propre ? »

Si les commandes des deux premiers groupes renvoient « oui » ou « non » comme réponse, alors les commandes du dernier groupe renvoient un nombre réel comme réponse. A l'aide de ces commandes, vous pouvez savoir quelle est la température et quel est le rayonnement dans la cage dans laquelle se trouve le Robot. Grâce aux équipes du troisième groupe, le monde du Robot devient sensiblement plus riche. Grâce à ces équipes, nous pouvons définir et résoudre un plus large éventail de tâches pour contrôler le Robot et collecter des informations sur le terrain du Robot. De plus, les tâches de température et de rayonnement dans le domaine des robots peuvent remplacer certaines des tâches traditionnelles de traitement des matrices. « Équiper » un Robot d'un « thermomètre » et d'un « compteur Geiger » est une bonne approche méthodologique pour étudier des problèmes habituellement formulés pour les réseaux. Des tâches traditionnelles de traitement de tableaux telles que « élément minimum », « indice de l'élément maximum », « somme des éléments », « moyenne arithmétique », etc. le temps reçoit une interprétation très naturelle...

Une rangée horizontale de cinq cellules avec un rayonnement donné dans chaque cellule (10, 10, 30, 20 et 40) est un analogue exact d'un tableau linéaire de nombres réels de cinq éléments. Et presque tous les problèmes de tableur linéaire peuvent être reformulés comme un problème de robot. Dans une telle formulation, il sera plus clair pourquoi un tel problème s'est posé et pourquoi il doit être résolu. Imaginons que sur le terrain du Robot à droite il y a un mur vers lequel les gens devront aller - peut-être, les sauveteurs. Vous devez d'abord déterminer à quel point le passage le long du couloir est dangereux pour la santé, quel est le niveau de rayonnement. Si les gens se déplacent à une vitesse à peu près constante, alors la dose de rayonnement qu'ils reçoivent sera proportionnelle à la somme des niveaux de rayonnement dans toutes les cellules du passage vers le mur. Dès lors, l'analyse du degré de dangerosité de ce passage pour la vie des sauveteurs peut être reformulée comme le problème du calcul du rayonnement total dans les cellules de passage. C'est le problème de trouver la somme des éléments du tableau, formulée en termes de contrôle de Robot. De même, vous pouvez reformuler presque toutes les tâches de traitement des tables (tableaux).

L'exercice... Reformuler les tâches "Elément de tableau minimum" et "Index d'élément de tableau minimum" en termes de contrôle du Robot.

Voyons donc laquelle des formulations suivantes du problème est la plus attrayante pour l'étudiant : 1) trouver les indices de l'élément minimum d'un tableau rectangulaire ; 2) dans le rectangle du champ Robot, trouvez une cellule avec un rayonnement minimal et déplacez le Robot vers cette cellule (pour se reposer).

La première formulation est purement mathématique. Qui a besoin de ces indices et pourquoi est bien au-delà de la portée de la tâche. La seconde est plus compréhensible et significative. Bien que les écoliers n'aient probablement pas été confrontés aux rayonnements auparavant, il est clair pour eux qu'un niveau élevé de rayonnement est « mauvais », que la cellule requise pour la tâche est la plus sûre et si le robot doit trouver un endroit pour se reposer , alors il est préférable de choisir la cellule la plus sûre - une cellule avec un rayonnement minimal.

Comme vous pouvez le voir, l'algorithme Sum of Elements utilise une boucle « bye » que nous n'avons pas encore introduite. Ici, nous avons juste un peu d'avance sur nous-mêmes. La boucle "bye" doit être introduite lors de la discussion d'un problème (approche problématique), par exemple, comme dans le manuel :

« Il y a un mur quelque part sous le robot sur le terrain. Il est nécessaire de déplacer le robot verticalement jusqu'au mur, c'est-à-dire placez le Robot dans la cage directement au-dessus du mur sur la même verticale que la position initiale du Robot ». Vous pouvez d'abord essayer de résoudre ce problème manuellement. L'enseignant peut même dessiner un champ Robot sur une feuille et, pour le moment, ne montrant pas la feuille aux écoliers, suivre leurs commandes. Bientôt, les écoliers comprendront qu'ils doivent se demander tout le temps : « Est-ce que c'est gratuit d'en bas ? (ou « sous le mur ? ») et commandez « bas » jusqu'à ce que le robot soit libre.

Habituellement, après 10 minutes d'un tel jeu, chaque élève de la classe a une idée détaillée de la façon de commander le Robot afin de résoudre le problème. Cette compréhension est le but méthodologique d'un tel « jeu ».

La technique méthodologique d'une telle introduction d'une nouvelle conception du langage de programmation G.V. Lebedev a décrit dans ses conférences comme suit :

« Lorsque les étudiants découvrent en détail comment résoudre le problème ci-dessus en contrôlant le Robot « manuellement », une opposition clé pour notre méthode méthodologique se produit entre ce travail« manuellement » et le schéma de commande programmé.

"Merveilleux! - dit le professeur. - Tout le monde a compris comment contrôler le Robot. Mais nous n'avons pas affaire à la commande manuelle du Robot, mais à l'informatique. Par conséquent, notre tâche est d'écrire un algorithme pour un ordinateur, une fois exécuté, l'ordinateur commandera le robot afin que le problème soit résolu. Notez que la distance entre le Robot et le mur est inconnue, mais l'ordinateur, exécutant l'algorithme (et ne connaissant pas la distance), doit déplacer le Robot vers le mur. Essayez d'écrire un algorithme comme celui-ci. Après tout, vous comprenez comment vous devez contrôler le Robot, quelles commandes l'ordinateur doit envoyer au Robot. Alors écrivez-le sous la forme d'un algorithme informatique ». J'attire à nouveau votre attention sur cette approche problématique. Après tout, pratiquement dans cet endroit, nous demandons aux écoliers de proposer une construction du cycle "au revoir". Autrement dit, contrairement à la séquence standard (d'abord la forme de la notation, puis sa sémantique (le sens), puis la solution des problèmes), nous posons d'abord le problème, puis nous analysons comment le résoudre, c'est-à-dire nous comprenons le sens (sémantique) de la future construction, puis nous demandons aux élèves de proposer une forme d'enregistrement ».

La boucle while est significativement une construction très complexe. Et le processus de maîtrise est préférable de le rendre visuel. Le tutoriel explique ce cycle en différentes façons, y compris à l'aide d'un schéma fonctionnel. Une explication visuelle du travail du cycle « bye » est tout aussi importante que le mode d'exécution pas à pas dans « Kumir », car les images graphiques et les observations dans le processus de sa propre activité sont mieux assimilées par la conscience de l'élève que discours et formules mathématiques émanant de l'enseignant.

Effectue une ÉTAPE du programme et passe en mode PAUSE. Lorsqu'il est démarré dans l'état EDIT et ANALYSE, il saute les lignes « use » et s'arrête avant l'exécution de la première ligne de l'intro du programme principal (le cas échéant) ou avant l'exécution de la ligne avec le mot « alg » de l'algorithme principal. L'exécution de la commande pour appeler la procédure d'algorithme est traitée comme une étape. Affiche les résultats des calculs et des contrôles de condition dans les champs.

Elle est exécutée de la même manière que la commande « STEP ». La différence réside dans l'exécution de la commande d'appel de la procédure-algorithme ou de calcul de la valeur de la fonction-algorithme (si elles sont présentées dans la fenêtre de travail). Dans ces cas, l'étape suivante consiste à exécuter la ligne d'en-tête algorithme auxiliaire... À l'avenir, la commande « step » ou « STEP » conduira à l'exécution de l'étape suivante au sein de l'algorithme auxiliaire en cours d'exécution.

Essayons d'exécuter l'algorithme « Walk to the end ». Nous allons exécuter le programme étape par étape en cliquant sur l'icône STEP. Nous nous intéressons à l'exécution du cycle "bye". Tout d'abord, la condition « avance libre » est vérifiée. La réponse est « oui », ce qui signifie que le corps de la boucle doit être exécuté. Et le Robot descend d'une cellule. Lorsque le corps de la boucle est terminé, nous revenons en arrière et vérifions à nouveau la condition. Et ainsi de suite, jusqu'au prochain ( L'exercice: Quel est le score?) à l'étape, le robot heurtera le mur et vérifier la condition donnera le résultat « non ». Et puis nous terminerons l'exécution du cycle et commencerons à exécuter les commandes écrites dans le programme après kts.

Veuillez noter que les résultats de la vérification des conditions sont affichés sur les champs, de sorte qu'après chaque vérification de la condition, l'étudiant comprenne immédiatement si le corps du cycle sera à nouveau exécuté ou si l'exécution du cycle sera terminée.

Que se passe-t-il si l'environnement du robot est différent et qu'il se trouve déjà au-dessus du mur avant la fin du cycle ? Essayons d'exécuter l'algorithme avec de telles conditions initiales. Un peu de peur

mais que faire si le robot tombe en panne ? Rien de tel. Le robot n'a pas cassé, le cycle s'est terminé, car la condition « libre par le bas » au premier contrôle n'est pas remplie et, par conséquent, le corps du cycle n'est pas exécuté même une fois. C'est l'une des caractéristiques importantes du cycle d'exemption.

Une autre caractéristique importante de l'exécution de la boucle "bye" est la possibilité de boucler - l'exécution sans fin du corps de la boucle. Disons que nous l'avons mélangé et qu'au lieu de la commande "down", nous avons écrit la commande "paint" à l'intérieur de la boucle. S'il est libre sous le Robot, alors le Robot ne se déplacera nulle part, mais restera immobile et peindra indéfiniment sur la cellule dans laquelle il se trouve. Si vous exécutez un tel programme, alors vous pouvez découvrir le bouclage par le nombre d'étapes effectuées par le programme, qui augmentera rapidement sous nos yeux, alors que le Robot est immobile.

La troisième et dernière caractéristique de la boucle "bye" est que la condition de poursuite de la boucle pendant l'exécution du corps de la boucle n'est pas vérifiée. Modifions à nouveau légèrement l'algorithme en ajoutant une autre commande "down" au corps de la boucle. Laissez le robot terminer la tâche plus rapidement. En règle générale, les étudiants ne voient pas l'erreur d'un tel programme, supposant à tort que la condition de la boucle est vérifiée par magie à chaque instant de l'exécution du corps de la boucle. Ce n'est bien sûr pas le cas. L'exemple donné démontre la survenue erreur d'exécution, même si la condition de boucle était (au passé) la valeur "yes". Mais avant la deuxième étape « vers le bas », personne n'a vérifié la condition. Pour cette raison, il y a eu un refus dans le programme.

Conditions dans un langage algorithmique. Commandes If et Select

En règle générale, après avoir maîtrisé le cycle « bye », les commandes « if » et « choice » sont maîtrisées sans trop de difficultés. Comme d'habitude, l'introduction d'une nouvelle commande doit être lancée à partir de la tâche en cours. Donné : Un robot est quelque part sur le terrain et à droite il est libre. C'est nécessaire: déplacez le robot vers le bas en peignant les cellules du champ en cours de route, qui ont un mur à droite.

L'algorithme est obtenu en retravaillant simplement la solution du problème précédent, il suffit d'ajouter la commande "if".

La question méthodologique de savoir pourquoi la construction « if » apparaît dans le cours après la construction « bye » peut être trouvée dans « 12 lectures » de G.V. Lebedeva : « Bien sûr, il est facile d'introduire et d'expliquer la commande « si » en utilisant un exemple d'étape « prudente » : « si le fond est libre, alors tout est en bas ». Le problème, à notre avis, c'est que si vous commencez par cela (et surtout si vous entrez la commande « if » avant les cycles), alors les écoliers n'ont pas de contexte extérieur (quoique non formalisé) dans leur tête, au sein duquel l'écriture d'une telle équipe serait significative pour résoudre certaines tâches significatives. Après avoir analysé au moins un exemple avec une boucle et avec un « if » à l'intérieur, un tel contexte externe apparaît. Ensuite, il est déjà possible d'étudier la commande "si" sans cycles - les étudiants imagineront la situation dans laquelle le besoin d'une telle commande se fait sentir. Mais quand ce premier exemple (avec la boucle et le "if") est traité, la commande "if" n'a rien à apprendre. D'autres exemples illustratifs ne sont tout simplement pas nécessaires - vous devez résoudre des problèmes. Par conséquent, nous pensons que pour la première fois, la commande « if » devrait apparaître à l'intérieur de la boucle. » La complexité de la commande « if » ne peut résider que dans l'enregistrement de la condition. Vous pouvez proposer un problème pour les écoliers - notez formellement la condition "Le robot se tient dans le coin":

(mur gauche et mur du haut)

ou(mur du haut et mur de droite)

ou(mur de droite et paroi inférieure)

ou(mur du bas et mur de gauche)

Commande de choix

La commande "select" est la première commande "inutile" dans le langage algorithmique. Il est impossible de formuler un problème qui ne peut être résolu sans cette commande. La commande « sélectionner » ne simplifie l'enregistrement que dans une situation où les options sont nombreuses. Mais même dans cette situation, l'algorithme peut être écrit, se limitant à n'utiliser que la commande « if ».

Présentation "visuelle" des commandes

Le cycle "au revoir" peut être expliqué non seulement aux écoliers utilisant "Kumir" avec le Robot, mais aussi aux enfants d'âge préscolaire, en utilisant le frère cadet de "Kumir" - "PiktoMir". De la conférence précédente, nous connaissons Vertun, qui peut marcher sur un terrain similaire à celui d'un Robot. Vertun est un interprète intéressant, il a des commandes de retour : Vertun peut vérifier si la cage sur laquelle il se tient est peinte et s'il y a un mur devant lui. Vertun, comme le Robot, dispose d'un double jeu de commandes de retour. Mais il y a de bonnes raisons à cela dans PiktoMir. Si dans "Kumir" on pouvait obtenir l'équivalent de la commande "libre à droite" de la commande Robot "sur le mur de droite" en ajoutant la négation "pas" à l'intérieur de la commande, alors dans le style visuel de programmation dans "PictoMir" le la particule n'existe pas. Cela signifie que vous ne pouvez pas faire avec deux équipes et que vous avez besoin des quatre.

Les pictogrammes représentés sur la figure désignent ces couples de commandes (de gauche à droite) : « cellule remplie » (champ gris) ; « Mur devant » (mur de briques); "La cage est propre" ( couleur verte des champs); « Avant libre » (le mur est détruit).

Commande de choix

Si condition 1 : série 1

Avec condition 2 : série 2

Si condition n : série n

Sinon la série n+1

Le mot-clé sinon, ainsi que la série de commandes correspondante, peuvent être manquants :

Si condition 1 : série 1

Avec condition 2 : série 2

Si condition n : série n

« Kumir » vérifie d'abord la condition 1. Si elle est remplie, « Kumir » exécute les commandes de la série 1, puis passe à exécution de commandesécrit après le mot tout. Sinon, « Kumir » fait de même avec la condition 2 et les commandes de la série 2, etc.

Les commandes écrites après le mot "autrement" sont exécutées lorsqu'aucune des conditions n'est remplie.

Dans une commande, pas plus d'une série de commandes est toujours sélectionnée, même si plusieurs conditions sont vraies. L'exécution de la commande select se termine une fois que la première condition (dans l'ordre) avec la valeur yes est trouvée (et que la série de commandes correspondante a été exécutée).

Il existe trois commandes de contrôle d'exécution dans le langage Kumir :

approuvé, donné, il est nécessaire.

Format d'appel :

approuvé<ЛОГ ВЫРАЖЕНИЕ>

donné<ЛОГ ВЫРАЖЕНИЕ>

nécessaire<ЛОГ ВЫРАЖЕНИЕ>

Les trois commandes sont exécutées comme ceci. La condition est vérifiée. Si la condition n'est pas remplie, alors "Kumir" arrête l'exécution de l'algorithme et signale qu'un échec s'est produit. Si la condition est remplie, l'exécution de l'algorithme se poursuit normalement comme s'il n'y avait aucune commande de contrôle. La commande donnée vérifie la condition au début de l'exécution de l'algorithme, la commande est nécessaire - à la fin de l'exécution de l'algorithme, et avec la commande d'approbation, vous pouvez vérifier la condition pendant l'exécution de l'algorithme.

Comment ces conditions peuvent-elles être utilisées dans PiktoMir ? Des conditions peuvent être placées au début des algorithmes auxiliaires dans des cellules spéciales. Les bleus contiennent un répéteur (pour organiser la boucle N fois), et les roses - la condition d'exécution de l'algorithme f1 – f5. Comme déjà mentionné dans le cours 3, la boucle N fois permet à l'étudiant d'économiser des cellules lors de l'élaboration de l'algorithme.

Mais si une tâche simple consiste, par exemple, à déplacer Vertun vers la droite jusqu'au mur, alors le programme peut très bien ressembler à ceci :

En effet, si vous « jetez un coup d'œil » à la situation de Vertun, vous pouvez facilement calculer qu'il y a 4 marches jusqu'au mur. C'est une autre affaire si la situation n'est pas visible pour nous et nous ne pouvons en prendre connaissance que grâce aux retours de Vertun. Semblable à la situation avec le Robot, l'élève devra demander à Vertun avant de s'avancer s'il y a un mur devant lui. Dans le langage algorithmique scolaire, lorsque les élèves sont obligés d'inventer eux-mêmes la construction du cycle « bye », les enfants ont encore beaucoup de place pour l'imagination, puisque les frontières du langage algorithmique ne sont pas visibles. Dans PiktoMir, un enfant n'a que ce qu'il voit à l'écran. Et les conditions ne peuvent être placées qu'à un seul endroit. Il n'a qu'à l'essayer.

Un tel programme fonctionnera correctement pour l'environnement actuel de Vertun (et, bien entendu, dans tous les cas lorsque le mur est à moins de quatre pas de la position de départ).

Expliquons comment fonctionne l'algorithme auxiliaire f1. Avant le début de l'algorithme (qui est contenu dans 12 cellules exécutables), la commande Vertun est exécutée, qui se trouve dans la case rose. Si la réponse est « oui », alors l'algorithme est exécuté autant de fois qu'indiqué dans le champ bleu. Dans ce cas, les cellules vides sont ignorées et la commande du champ rose est appelée à chaque fois avant le prochain cycle d'exécution de l'algorithme f1.

Si la case rose est vide, la réponse est oui. Si le champ bleu est vide, alors la boucle est exécutée 1 fois. En fait, un tel algorithme auxiliaire serait analogue à la notation suivante en langage algorithmique :

nts <синее поле> juste au revoir <розовое поле>

<команды в клетках алгоритма>

Mais une telle construction n'existe pas dans un langage algorithmique. Dans ce cas, f1 se transforme en un analogue de la construction « if », dans le cas d'un répéteur vide (champ bleu vide) ou d'un répéteur unique, et l'algorithme f1 se transforme en boucle « bye » si la condition est présente ( champ rose) et le répéteur est infini.

L'exercice... Rappelez-vous comment construire une boucle à partir de f1 N fois.

Qu'est-ce qui motivera l'enfant à utiliser le cycle d'adieu (utilisez la case rose) ? Le fait est qu'il n'y a que 7 répéteurs dans PiktoMir : 1 fois, 2 fois, 3 fois, 4 fois, 5 fois, 6 fois et « à l'infini ». Avec cet ensemble, vous pouvez atteindre le mur lorsqu'il est à 1, 2, 3, 4, 5 ou 6 marches. Mais que faire quand il y a 7 marches jusqu'au mur ou qu'il y a tellement de marches que l'enfant ne peut tout simplement pas compter leur nombre ? Il existe un répétiteur « infini », et même si un enfant ne maîtrise pas encore ce concept, après avoir parcouru les quelques options de création de programmes dans PictoWorld, il tentera certainement l'option avec le répéteur « infini » dans une cage bleue et le condition nécessaire dans une cage rose. Ce sera le cycle de « bye » créé par l'enfant (consciemment).

Le langage graphique de « PiktoMir » incite l'enfant à inventer le cycle du « bye » plus fortement que le langage algorithmique de « Kumir ». Le fait est que lorsqu'il « bidouille » avec « PiktoMir », l'enfant est très limité dans le choix des moyens. "PiktoMir" est tout dans la paume de votre main, et le langage algorithmique peut être étudié pendant longtemps. Dans PiktoMir, vous pouvez parcourir rapidement toutes les options de programmation, et comme il y a aussi un cycle « bye » parmi elles, vous pouvez également l'ouvrir. La différence entre "Kumir" et "PiktoMir" est similaire à la différence entre les échecs et les dames. À propos de ce dernier, le célèbre écrivain américain Edgar Allan Poe a écrit dans le roman policier « Murder on Morgue Street » comme suit :

« En attendant, l'attention décide ici (aux échecs. - NDLR). Dès qu'il faiblit, vous commettez un oubli qui conduit à une erreur de calcul ou à une défaite. Et comme les coups d'échecs sont non seulement divers, mais aussi ambigus, les chances d'erreur augmentent en conséquence, et dans neuf cas sur dix, ce n'est pas le joueur le plus capable, mais le plus concentré qui gagne. Les dames sont une autre affaire, où un seul coup avec des variations mineures est autorisé; ici les chances d'oubli sont bien moindres, l'attention ne joue pas un rôle particulier et la réussite dépend surtout de la netteté. ... Evidemment, ici (à forces égales) la victoire dépend d'un coup réussi, d'une décision inattendue et pleine d'esprit 6 ”.

Il y avait aussi une raison plus profonde pour laquelle nous avons doté le Robot de paires de commandes de questions diamétralement opposées. Une fois dans un langage algorithmique, il était impossible de placer une particule en dehors du nom de la commande. À cette époque, à cause de cela, il serait nécessaire d'utiliser des expressions complètement illisibles du point de vue de la langue russe telles que "la cellule n'est pas peinte" ou "pas libre d'en haut". Dans la version moderne de la langue, de telles expressions s'écrivent beaucoup plus normalement : « la cellule n'est pas peinte », « le haut n'est pas libre ».

Kushnirenko A.G., Lebedev G.V., Svoren R.A. Fondamentaux de l'informatique et de l'informatique. M. : Éducation, 1990, 1991, 1993, 1996.

Malheureusement, il est impossible d'appeler l'algorithme « Walk all the way » dans « Kumir », car « before » est mot-clé Langue.

12 conférences sur à quoi sert un cours d'informatique scolaire et comment l'enseigner : A.G. Kushnirenko, G.V. Lebedev. // Boîte à outils. Moscou : Laboratoire des connaissances de base, 2000.

Cartes de tâches

    Trouver parmi les n-entiers saisis au clavier le nombre de négatifs

    Deux nombres arbitraires sont donnés. Alors que leur produit est inférieur à 100, augmentez chaque nombre de 2 et affichez les nombres finaux sur le moniteur

    Les N-entiers sont entrés séquentiellement. Trouver le nombre de cinq dans une séquence

    Les N-entiers sont entrés séquentiellement. Trouver la différence entre les valeurs maximales et minimales de nombres donnés

    Trouver parmi les n-entiers saisis au clavier le nombre de négatifs

    Deux nombres arbitraires sont donnés. Alors que leur produit est inférieur à 100, augmentez chaque nombre de 2 et affichez les nombres finaux sur le moniteur

    Les N-entiers sont entrés séquentiellement. Trouver le nombre de cinq dans une séquence

    Les N-entiers sont entrés séquentiellement. Trouver la différence entre les valeurs maximales et minimales de nombres donnés

    Trouver parmi les n-entiers saisis au clavier le nombre de négatifs

    Deux nombres arbitraires sont donnés. Alors que leur produit est inférieur à 100, augmentez chaque nombre de 2 et affichez les nombres finaux sur le moniteur

    Les N-entiers sont entrés séquentiellement. Trouver le nombre de cinq dans une séquence

    Les N-entiers sont entrés séquentiellement. Trouver la différence entre les valeurs maximales et minimales de nombres donnés

    Trouver parmi les n-entiers saisis au clavier le nombre de négatifs

    Deux nombres arbitraires sont donnés. Alors que leur produit est inférieur à 100, augmentez chaque nombre de 2 et affichez les nombres finaux sur le moniteur

    Les N-entiers sont entrés séquentiellement. Trouver le nombre de cinq dans une séquence

    Les N-entiers sont entrés séquentiellement. Trouver la différence entre les valeurs maximales et minimales de nombres donnés

Connaissance du programme Kumir maîtrisant les bases de la programmation.

Dans ce document, les étudiants peuvent acquérir des compétences pratiques dans la création et le débogage d'un algorithme, en travaillant avec des artistes tels que Robot, Draftsman, Aquarius, Grasshopper, Turtle.

Lors de l'étude de l'une des sections les plus difficiles de l'informatique "algorithmes et programmation".

Objectif du développement :

Télécharger:


Aperçu:

Développement méthodique en informatique.

Sujet : "Robot performeur dans le programme Kumir en cours d'informatique"

professeur de technologie "Informatique et TIC"

Note explicative

Objectif de développement: étudier les possibilités de programmation sur l'exemple d'un robot exécuteur spécifique utilisant l'environnement IDC ; pour donner des compétences pratiques pour travailler avec l'interprète.

Développement méthodiquecompilé pour les cours d'informatiquePratique sur l'ordinateur: travailler avec le formateur exécuteur d'algorithmes ; compilation de linéaire, de branchement et algorithmes cycliques gestion des artistes interprètes ou exécutants ; compilation d'algorithmes à structure complexe; l'utilisation d'algorithmes auxiliaires (procédures, sous-programmes).

Les étudiants doivent savoir :

  • qu'est-ce qu'un interprète ; SKI Robot, environnement de robot performeur ;
  • qu'est-ce qu'un algorithme ;quelles sont les principales propriétés de l'algorithme ;
  • méthodes d'écriture d'algorithmes : schémas fonctionnels, langage algorithmique pédagogique ;constructions algorithmiques de base : suite, branchement, boucle ; structure
  • algorithmes; ?? affectation d'algorithmes auxiliaires ; technologies de construction d'algorithmes complexes :

Les étudiants doivent être capables de :

  • comprendre des descriptions d'algorithmes dans un langage algorithmique pédagogique ;
  • tracer l'algorithme d'un artiste bien connu ;
  • composer des algorithmes de contrôle linéaire, de branchement et cyclique pour l'exécuteur Robot ; mettre en évidence les sous-tâches ; définir et utiliser des algorithmes d'aide.

Leçon 1 (2 heures) Leçon 1.

Robot artiste.Système de commandement de l'exécuteur.

Plan de cours.

  1. Description du SKI du performeur, de l'environnement du performeur.

2. Analyse des algorithmes typiques du Robot.

Pendant les cours.

Considérez la description de l'interprète.

Environnement d'artiste: Performer Le robot est capable de naviguer dans un labyrinthe dessiné sur un plan divisé en cellules.

SKI Robot : commandes simples : haut, bas, gauche, droite, peindre.

Commandes booléennes : (contrôle de condition)

haut gratuit bas gratuit

gauche libre droit libre.

Connecteurs logiques : ET, NON, OU :

Exemple : (Pas laissé libre) ou (Pas droit libre)

Commande de succursale: commande de boucle :

Si l'état puis nts tant que condition

Série de commandes Série de commandes

tous les nœuds

(Dans les KIM de 2009, les commandes Robot différaient des enfants habituels, ce qui a conduit à confusion :)

Commande de succursale: commande de boucle :

Si l'état alors nts alors que la condition est de faire

Série de commandes Série de commandes

fin fin

Vue générale de la fenêtre du programme Kumir. Environnement graphique du Robot :

Dans les CMM de la version démo 2010, le format de commande a été changé en habituel

Procédure de création d'algorithme :

1.Équipes Outils -Modifier l'environnement de démarragedessinez des murs sur le champ Robot et placez le Robot dans sa position initiale.

2.Équipes Robot - Changer l'environnement de départgarder le nouvel environnement.

3.Équipes Insérer - Utiliser le robotpréciser l'exécuteur.

4.Dans la fenêtre du document, notez l'algorithme à l'aide du menu Insérer.

5. À l'aide des commandes d'exécution - exécutez-les en continu (ou pas à pas) pour exécuter l'algorithme.

6. Considérez le résultat de l'algorithme et, si nécessaire, déboguez-le.

Leçon 1 (2 heures) Leçon 2.

Travaux pratiques "Elaboration d'algorithmes linéaires".

Tâches : 1. Robot à un point arbitraire du champ. Peignez la cellule au-dessus, en dessous et à droite de la position d'origine.

  1. Un robot à un point arbitraire du champ. Déplacez les cellules Robot 4 vers la droite en peignant dessus.
  2. Créez un nouvel environnement de départ en dessinant un carré avec un côté de 4 cellules au tableau. Enregistrez le paramètre comme point de départ.
  3. Créez un nouvel environnement de départ en dessinant un couloir avec des passerelles dans les murs du terrain. Enregistrez le mobilier sous le nom obst2.fil. Remplacez l'environnement de départ par celui qui vient d'être créé.

Leçon 2 (2 heures) Leçon 1.

Sujet : Branchement et raffinement séquentiel de l'algorithme.

Analyse des tâches CMM à l'aide de Robot performer.

utiliser Robot

alg kim 2009

tôt

sinon libre d'en bas

alors à droite

tout

sinon libre d'en bas

alors à droite

tout

sinon libre d'en bas

alors à droite

tout

inconvénient

utiliser Robot

alg kim 2010

tôt

sinon libre d'en bas

alors à droite

tout

sinon libre d'en bas

alors à droite

tout

sinon libre d'en bas

alors à droite

tout

inconvénient

Etc. trimer. N° 14. Compilation et débogage d'algorithmes de branchement

Tâches. Voir pièce jointe.

Lecon 3. Algorithmes cycliques. Leçon 1-2

Cibler: révéler l'essence du concept de cycle dans les algorithmes, montrer les formes d'écriture des cycles aux algorithmes, donner les compétences pour créer et écrire des algorithmes cycliques.

Etc. trimer. N°15. Compilation et débogage d'algorithmes cycliques

1. Créez un algorithme qui peint toutes les cellules intérieures adjacentes au mur.

utiliser Robot

alg

tôt

nts si loin sur la droite est gratuit

peindre; À droite

nœuds

nts tandis que ci-dessous est gratuit

peindre; vers le bas

nœuds

nts jusqu'à ce que le bas soit libre

peindre; À gauche

nœuds

inconvénient

2. Créez un algorithme qui peint toutes les cellules entre le robot et le mur. La distance au mur est inconnue.

utiliser Robot

alg

tôt

nts si loin sur la droite est gratuit

À droite; peindre

nœuds

inconvénient

3. Créez un algorithme qui peint toutes les cellules entre les deux murs.

utiliser Robot

alg uch3

tôt

nts jusqu'à (pas d'en haut librement) ou (pas d'en bas librement)

À droite

si (pas libre d'en haut) et (pas d'en bas libre)

ensuite

peindre

tout

nœuds

inconvénient

4. Créez un algorithme qui peint toutes les cellules autour du mur rectangulaire.

alg uch4

tôt

peindre; jusqu'à

nts pas encore à droite gratuit

peindre dessus;

nœuds

peindre; à droite

nts jusqu'à ce que le bas soit libre

peindre par-dessus, à droite;

nœuds

peindre; vers le bas

nts pas encore laissé libre

peindre dessus;

nœuds

peindre; à gauche

nts jusqu'à ce que le haut soit libre

peindre; À gauche;

nœuds

inconvénient

utiliser Robot

alg uch5

tôt

À droite

nts jusqu'à ce que le bas soit libre

peindre; À droite

nœuds

peindre; vers le bas

nts si loin sur la gauche est libre

peindre; À gauche

nœuds

nts pas encore laissé libre

peindre; vers le bas

nœuds

peindre par-dessus; à gauche; peindre par-dessus; en haut;

nts jusqu'à ce que le haut soit libre

peindre; en haut

nœuds

nts jusqu'à ce que le haut soit libre

peindre; À gauche

nœuds

inconvénient

Leçon 4 Leçon 1

Algorithmes d'aide.

Cibler: introduire le concept des algorithmes principaux et auxiliaires ; expliquer les règles d'utilisation de l'algorithme auxiliaire ; désassembler des exemples d'algorithmes à l'aide de l'auxiliaire.

Plan de cours

1. Introduction de nouveaux termes (algorithme principal et auxiliaire, appel) et explication de nouveaux concepts.

2. Analyse d'exemples de résolution de problèmes à l'aide d'un algorithme auxiliaire.

Lors de la résolution de certains problèmes, il est pratique de les diviser en sous-tâches plus petites, chacune pouvant être formalisée en tant qu'algorithme indépendant. Dans ce cas, tout d'abord, un algorithme dit principal est élaboré, dans lequel des appels d'algorithmes auxiliaires sont utilisés pour résoudre des sous-tâches, qui sont ajoutées ultérieurement. Cette solution s'appellepar la méthode du raffinement séquentiel.Il permet à un groupe de programmeurs de travailler sur un projet, chacun résolvant sa propre sous-tâche.

Dans le processus de résolution du problème, chaque algorithme auxiliaire peut, si nécessaire, être décomposé en algorithmes auxiliaires plus petits.

La commande d'exécution de l'algorithme auxiliaire est appelée défi et est écrit dans le corps de l'algorithme principal.

Un même algorithme peut être considéré comme principal et auxiliaire par rapport aux autres algorithmes. Dans un langage algorithmique, l'algorithme principal est d'abord écrit, suivi des auxiliaires ci-dessous.

Tache 1:

Le robot est dans le coin supérieur gauche du champ. Il n'y a pas de murs ou de cellules peintes. Créez un algorithme en utilisant un auxiliaire qui dessine quatre croix sur une ligne horizontale. La position finale du Robot peut être arbitraire.

Solution

Analyse au tableau :

Tâche 2. Le robot est dans le coin supérieur gauche du champ. Il n'y a pas de murs ou de cellules peintes. Créez un algorithme qui colore en damier un carré de 8 x 8. La position finale du robot peut être arbitraire.

Leçon 4 Leçon 2

Travaux pratiques sur PC "Résoudre le problème à l'aide d'algorithmes auxiliaires".

Cibler : inculquer des compétences pratiques à la construction d'algorithmes par la méthode du raffinement séquentiel.

Plan de cours

1. La tâche se déroule complètement sur le PC. Les étudiants reçoivent des devoirs et les effectuent dans l'environnement logiciel Kumir. Résultats Le travail est enregistré sous forme de fichiers pour une vérification ultérieure.

Tache 1 ... Le robot est dans le coin inférieur gauche du champ. Il n'y a pas de murs ou de cellules peintes. Créez un algorithme qui peint 6 bandes verticales de même longueur dans 6 cellules. La position finale du Robot peut être arbitraire.

Tâche2 En utilisant les auxiliaires, créez un algorithme pour peindre les cellules qui forment le nombre 1212.

Devoirs: Proposez un algorithme qui dessine l'image suivante : Utilisez deux algorithmes auxiliaires pour résoudre le problème.

Leçon 5 Leçon 1-2

Test

"Elaboration d'un algorithme dans l'environnement de l'exécuteur Robot."

Cibler: vérifier les connaissances acquises sur la création et la capacité à analyser des algorithmes dans l'environnement logiciel Kumir.

Missions pour travail d'essai sont divisés par niveaux de difficulté et comprend 3 tâches avec l'exécuteur Robot (tâches 1 et 2 — pour les branchements et les boucles, tâche 3 — pour l'utilisation d'un algorithme auxiliaire.) Les textes des devoirs sont donnés en annexe.

Les paramètres initiaux et finaux et les algorithmes créés sont enregistrés dans un fichier.

La note est établie en fonction du niveau de difficulté de la tâche. L'étudiant a le droit de choisir lui-même le type de travail.

Et aujourd'hui, nous allons parler de cycles. Voyons ce qu'est un cycle et comment apprendre à exécuter les algorithmes cycliques de notre robot.

Alors, qu'est-ce qu'un cycle? Imaginez que nous sommes dans une leçon d'éducation physique et que nous sommes confrontés à une tâche faire 7 squats... Cette tâche peut être formulée sous la forme d'un algorithme linéaire, puis elle ressemblera à ceci :

faire un squat

faire un squat

faire un squat

faire un squat

faire un squat

faire un squat

faire un squat

C'est-à-dire que nous avons répété la commande de squat 7 fois. Est-il judicieux d'écrire 7 commandes identiques ? Il peut être plus facile de donner une commande faire 7 squats? Bien sûr, c'est plus facile et plus correct. C'est le cycle... Vous vous souvenez vous-même d'exemples de cycles de la vie - il y en a pas mal.

De cette façon algorithme linéaire , où les mêmes commandes sont répétées, nous pouvons émettre sous la forme d'un algorithme cyclique- comme ça:

répéter 7 fois

faire un squat

fin de cycle

Donc, dans le langage que nous avons inventé, nous avons conçu le cycle. L'interprète Robot a également la possibilité d'enregistrer des boucles. De plus, les cycles sont différents... L'option que nous venons d'envisager s'appelle contre-cycle ou boucle avec paramètre.

Types de cycles.

Boucle avec compteur.

Cycle avec compteur il est utilisé lorsqu'on sait à l'avance combien de répétitions doivent être effectuées. Dans l'exemple de squat ci-dessus, c'est exactement le cas.

Afin d'écrire une boucle avec un compteur pour l'exécuteur, vous devez connaître sa syntaxe. Et il est comme ça :

nts<nombre de répétitions> fois

<команда 1>

<команда 2>

<команда n>

Ici, nous devons indiquer le nombre de répétitions (nombre) et les commandes qui seront répétées. Les commandes qui sont répétées dans la boucle sont appelées corps du cycle.

Voyons cela avec un exemple.

Initialement, le Robot était dans la cage supérieure gauche.

Commençons par résoudre le problème de manière linéaire. Dans ce cas, nous allons peindre sur la cellule actuelle et déplacer 1 cellule vers la droite, et le programme ressemblera à ceci :
utiliser Robot
alg
tôt

peindre

À droite

peindre

À droite

peindre

À droite

peindre

À droite

peindre

À droite

peindre

À droite

peindre

À droite

Comme vous pouvez le voir, les commandes pour peindre par-dessus et à droite sont répétées 7 fois. Réécrivons maintenant le programme en utilisant une boucle. D'ailleurs, pour insérer un cycle dans votre programme, vous pouvez aller dans le menu Insérer sélectionnez l'élément nts-raz-kts ou appuyez sur l'une des combinaisons de touches Échap, P(lettre russe P) ou Échap, H(lettre latine H). Et les touches doivent être enfoncées séquentiellement- d'abord Esc, relâchez-le et ensuite seulement P ou H.

Donc notre programme en boucle ressemblera à ceci :

utiliser Robot

nts 7 fois

peindre

À droite

Si nous l'exécutons, nous verrons que le résultat est le même - 7 cellules remplies. Cependant, le programme est devenu plus court et beaucoup plus intelligent d'un point de vue algorithmique !

En guise d'échauffement et de consolidation, je propose d'écrire indépendamment un programme pour le Robot, qui dessinera un carré de 7 cases de côté. Naturellement en utilisant une boucle. J'attends une solution dans les commentaires.

Boucle avec condition.

Lors de la résolution du problème 19 du GIA en informatique avec un Robot, il ne fonctionnera pas d'utiliser une boucle avec un compteur. Étant donné que le champ y est généralement infini et que les murs n'ont pas une longueur spécifique. Par conséquent, nous ne pourrons pas déterminer le nombre de répétitions pour une boucle avec un compteur. Mais ce n'est pas grave - cela nous aidera boucle conditionnelle.

Revenons à l'éducation physique et changeons le problème. Après tout, quelqu'un peut ne pas faire 7 squats, alors qu'un autre est capable d'en faire 27. Cela peut-il être pris en compte lors de la création d'un cycle ? Assurément. Seulement maintenant nous n'utiliserons pas un compteur (le nombre de répétitions), mais une condition. Par exemple, pendant que vous n'êtes pas fatigué, faites des squats. Dans ce cas, la personne ne fera pas un nombre spécifique de squats, mais s'accroupira jusqu'à ce qu'elle soit fatiguée. Et notre boucle dans un langage abstrait ressemblera à ceci :

au revoir pas fatigué

faire un squat

fin de cycle

Les mots ne sont pas fatigués dans notre cas - c'est une condition. Quand c'est vrai, la boucle est exécutée. S'il est faux (fatigué), le corps de la boucle ne sera pas exécuté. L'exécuteur Robot a plusieurs conditions

libre d'en haut

d'en bas librement

laissé librement

droit librement

mur supérieur

paroi inférieure

mur gauche

mur de droite

Mais dans la condition du problème 19 du GIA, seuls les 4 premiers sont indiqués, nous n'utiliserons donc que ceux-ci.

Résolvons maintenant le problème suivant pour le Robot - dessinez ligne verticale de gauche à droite du champ, j'utilise une boucle avec une condition. Initialement, le Robot est dans le coin supérieur gauche.

Formulons d'abord algorithme verbal- c'est-à-dire que nous décrirons avec des mots ce que le robot doit faire. Cet algorithme ressemblera à ceci :

« À droite, faites librement un pas vers la droite et peignez par-dessus la cage. »

En conséquence, le robot parcourra toutes les cellules à droite et les peindra jusqu'à ce qu'il y ait un mur sur la droite.

Le code source de notre programme Robot ressemblera à ceci :

utiliser Robot

nts si loin sur la droite est gratuit

À droite

peindre

À la suite de l'exécution de ce programme, nous verrons l'image suivante :