Idole de boucles imbriquées. Idole du langage algorithmique. Boucle avec condition

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 du nombre peut changer, de sorte que la valeur finale du paramètre de boucle pour s'avère indéfinie et qu'il y a des difficultés avec son application.

V algorithmes cycliques si le nombre de répétitions d'un ensemble spécifique de commandes ne peut pas être obtenu avant qu'il ne démarre, des boucles conditionnelles sont appliqué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 logique.
  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, alors 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 pour 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 boucle.

Tâche. Le programme reçoit en entrée une séquence d'entiers terminés 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 nombre différent de zéro.

(Un extrait du code du programme)

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

1. introduction

le système "Kumir" (le nom vient des mots "Set of Training Worlds"), qui vous fera découvrir ce variante électronique cahier de texte.
Les développeurs du langage Kumir ont poursuivi l'objectif de créer un langage simple pour cours initial l'informatique, répondant à la technologie de programmation moderne et permettant une utilisation industrielle. Le langage algorithmique de l'école a été pris comme base. Le langage a été complété par certaines fonctionnalités qui le transforment de l'éducation à la production. La langue a :
les types intact, chose, allumé; ensemble traditionnel d'opérations sur les données de ces types (y compris les opérations sur les chaînes et un ensemble standard fonctions mathématiques);
tableaux ( languette) des types spécifiés ; constructions de contrôle structurel pour les boucles, les branchements, etc.
Kumir est ouvert - la connexion d'interprètes externes enrichit le langage de nouvelles possibilités : de la gestion de la base de données et du travail avec des objets géométriques à l'extension de l'ensemble des types numériques admissibles (dans ce cas, le langage permettra de mélanger de nouveaux types avec des types numériques existants dans les expressions ).
Technologie moderne la programmation enseigne à diviser un programme non seulement en sous-routines, mais aussi en unités plus grandes : des ensembles de programmes travaillant sur des données communes. Dans différents langages de programmation, ces unités sont appelées différemment, dans Kumir, une telle unité est appelée "Executor". Le concept d'interprète est extrêmement important dans les travaux pratiques et devrait être introduit dès les premiers stades possibles de la formation.
L'expérience de l'utilisation de Kumir dans l'enseignement et le développement de logiciels éducatifs a montré que la langue est facile à apprendre et en même temps suffisamment puissante pour étendre une large classe de tâches de production.
Comme l'E-workshop, Kumir est un système intégré qui comprend éditeur de texte, un compilateur incrémentiel avec un temps de réponse nul et un débogueur simple et pratique. Un bon nom pour ce genre de système est "Editeur-Compilateur" : pendant que vous entrez votre programme, le compilateur le traite, et à tout moment le programme est prêt à s'exécuter sans le moindre délai.

2. Noms et types de quantités. Les opérations de Kumir

Tous les symboles des alphabets russe et latin, ainsi que les nombres, peuvent être utilisés dans l'enregistrement des noms de variables. Le nom ne doit pas commencer par un chiffre. Il n'y a pas de restrictions strictes sur la longueur des noms dans le système Kumir, mais pour faciliter l'édition et afin d'éviter le débordement de chaînes, les variables et les algorithmes ne doivent pas être trop donnés noms longs... Habituellement, le nom est choisi pour que vous puissiez comprendre à quoi sert l'algorithme. Lors de l'édition de programmes, vous devez également vous rappeler que les lettres russes et latines, d'orthographe similaire, diffèrent dans les ordinateurs. Par exemple, si, lors de la description d'une variable avec le nom A, l'utilisateur a tapé "A" dans l'alphabet latin, et dans le texte de l'algorithme essaie d'accéder à cette variable en tapant son nom dans l'alphabet russe, alors le message " le nom n'est pas défini" apparaîtra dans les "champs"...
Dans le langage algorithmique du système de programmation Kumir, trois types de grandeurs sont utilisés : les entiers ( intact), réel ( des choses) et une lettre ( litas).
Type de quantité- définit l'ensemble des valeurs qu'une valeur peut prendre, et un ensemble d'actions qui peuvent être effectuées avec cette valeur.
La quantité est un objet d'information distinct qui a un nom, une valeur et un type.

Une valeur constante (constante) ne change pas sa valeur pendant l'exécution de l'algorithme.
La variable peut changer la valeur pendant l'exécution de l'algorithme.
Expression- un enregistrement définissant l'enchaînement des actions sur les valeurs. Une expression peut contenir des constantes, des variables, des signes d'opération, des fonctions.
Pour écrire des expressions en Kumir, les symboles suivants sont utilisés :

Pour indiquer des signes opérations logiques les symboles sont utilisés :
= égal ;
< >inégal;
< меньше;
> plus;
< = меньше или равно;
> = supérieur ou égal ;
Pour enregistrer des conditions complexes, de telles opérations sont utilisées comme : ET, OU PAS.
ET -
réalisation simultanée des conditions énumérées (X> 0 et X< = 2);
OU- la réalisation d'au moins une des conditions (X> 0 ou Y> 0);
NE PAS- le déni.

3. Fonctions intégrées du langage Kumir

Voici un exemple de fonctions intégrées :

Faire appel

Fonction

Les types

Argument

Les fonctions

PÉCHÉ (X) COS (X) TG (X) EXP (X) LN (X) ABDOS (X) SQRT (X) MOD (UNE,B) INT (X) PI

sinus x cosinus x tangente x
exposant x (ex) natures. logarithme x
module x
racine carrée x
reste de la division (A par B)
la partie entière du nombre
nombre "pi" - 3.14159

des choses
des choses
des choses
des choses
des choses
des choses
des choses
chose, intacte
des choses
des choses

des choses
des choses
des choses
des choses
des choses
des choses
des choses
intact
intact
sans argument

Un exemple d'écriture d'expressions arithmétiques dans un langage algorithmique :

4. Informations sur les commandes ENTREE/SORTIE

Il est souvent nécessaire d'organiser un échange d'informations ("dialogue") entre une personne et un ordinateur en train d'exécuter un algorithme. Pour cela, dans le langage algorithmique, il existe des commandes spéciales pour AFFICHER des informations de la mémoire de l'ordinateur à l'écran et SAISIR des informations du clavier (d'une personne) dans la mémoire de l'ordinateur.
Commande d'ENTRÉE - commande par laquelle les valeurs des variables sont définies via des périphériques d'entrée (clavier).
Commande SORTIE- la commande par laquelle la valeur de la grandeur est reflétée sur le périphérique de sortie de l'ordinateur (écran du moniteur).
Étant donné que dans le langage algorithmique de stockage d'informations, des quantités sont utilisées, les noms des quantités sont indiqués dans les commandes d'entrée / sortie, dont les valeurs doivent être affichées (affichées à l'écran) ou entrées (mémorisées dans la mémoire de l'ordinateur) .
Exemple:

mot de service N.-É. (nouvelle ligne) indique à l'ordinateur que les informations doivent être affichées sur une nouvelle ligne.

5. La commande d'affectation. Création et édition de programmes de structure linéaire

Afin de mémoriser ou de modifier la valeur d'une quantité, il existe une commande spéciale dans le langage algorithmique - commande d'affectation, qui s'écrit :

NOM DE LA VALEUR : = EXPRESSION

Le signe " : =" (deux points suivis de l'égalité) est appelé signe affectations et se lit comme "assign" (par exemple, la commande "n: = e" lit "n assign e"). Lors de l'exécution de la commande d'affectation, l'ordinateur calcule d'abord l'expression écrite dans la partie droite (en remplaçant les noms des quantités par leurs valeurs), puis écrit la valeur de l'expression résultante en mémoire.

Les algorithmes qui sont de simples séquences d'actions sont appelés algorithmes à structure linéaire.
Considérez le processus de création algorithme linéaire en utilisant l'exemple d'évaluation d'une expression :
1. Calculer la somme de deux nombres
2. Écrivez un programme pour trouver l'hypoténuse d'un triangle rectangle par deux jambes données
3. Trouver le volume d'un cube si son côté est connu

6. Création et modification de programmes de structure de branchement

La résolution de problèmes ne peut pas toujours être représentée comme un algorithme linéaire. Il existe des tâches dans lesquelles il est nécessaire d'organiser le choix d'effectuer une séquence d'actions en fonction de toutes les conditions. De tels algorithmes sont appelés algorithmes de branchement. Dans le système de programmation Kumir, pour créer un algorithme pour une structure de branchement, les constructions "IF - THEN - ELSE - ALL" et "SELECT - PRI - ALL" sont fournies.

Commande de branchement : SI - ALORS - SINON - TOUS

Commande de branche - divise l'algorithme en deux chemins en fonction d'une certaine condition ; puis l'exécution de l'algorithme passe à une suite générale. La ramification est complète et incomplète.

Schéma graphique de l'exécution de la conception " si"

Mots de service " si", "alors", "autrement"avoir le sens habituel. Le mot" tous"signifie la fin de la structure. Entre" alors" et " autrement"- en une ou plusieurs lignes - une séquence de commandes du langage algorithmique (série 1) est écrite. Entre" autrement" et " tous"une autre séquence de commandes est enregistrée (série 2). Série 2 avec un mot de service" autrement"peut être absent. Lors de l'exécution de la construction" si"L'ordinateur vérifie d'abord la condition écrite entre" si" et " alors". Le résultat du contrôle est soit OUI ou NON. Si possible OUI, alors la SERIE 1 est exécutée, et si NON, - puis SÉRIE 2 (le cas échéant) .
Si la condition n'est pas remplie (il s'avère NON), et la série 2 avec " autrement"est absent, alors l'ordinateur procède immédiatement à l'exécution des commandes écrites après le mot" tous".

7. Types de cycles dans le système de programmation Kumir

Les algorithmes, dont les actions individuelles sont répétées plusieurs fois, sont appelés algorithmes de structure cyclique. L'ensemble des actions d'un algorithme associé à la répétition s'appelle une boucle.
Commande de cycle fournit l'exécution répétée d'une séquence de commandes (corps de boucle) selon certaines conditions.
Pour programmer les algorithmes de la structure cyclique dans le système de programmation Kumir, il existe deux types de cycles : un cycle avec une condition préalable (cycle pour l'instant) et un cycle avec un paramètre (cycle pour).

Boucle avec précondition (boucle bye)

Boucle avec une condition préalable (boucle pour l'instant) - une boucle qui se répète tant que la condition de boucle est vraie. Mots de service NT(début de cycle) et CC(fin du cycle) sont écrits strictement l'un en dessous de l'autre et sont reliés par une ligne verticale. A droite de cette ligne, la séquence répétée de commandes (le corps de la boucle) est écrite.

Lors de son exécution, le calculateur répète cycliquement les actions suivantes :
a) vérifie ce qui est écrit après le mot tandis queétat;
b) si la condition n'est pas remplie (la condition est fausse), alors l'exécution du cycle se termine et le calculateur commence à exécuter les commandes écrites après CC... Si la condition est remplie (la condition est vraie), alors le calculateur exécute le corps du cycle, vérifie à nouveau la condition, et ainsi de suite.
Si la condition dans la boucle tandis que n'est pas observé dès le début, alors le corps de la boucle n'est pas exécuté une seule fois.
Commenter... Exécution du cycle tandis que peut ne pas se terminer si la condition est toujours vraie (cette situation est généralement appelée une boucle). Par conséquent, afin d'éviter de telles situations, le corps de la boucle doit contenir des commandes pour modifier la condition.

Étant donné un entier positif N. Calculez la factorielle de ce nombre : N! = 1 * 2 * 3 * ... * N.

Boucle avec paramètre (boucle pour)

Boucle avec paramètre(loop for) - ré-exécution du corps de la boucle tandis que le paramètre entier parcourt l'ensemble de toutes les valeurs de l'initiale (i1) à la finale (in):

Ici i est une variable entière appelée paramètre de boucle : i1, in sont les valeurs initiales et finales du paramètre de boucle, qui peuvent être spécifiées soit par des entiers arbitraires, soit par des expressions avec des valeurs entières ; h - étape de modification de la valeur du paramètre de cycle, la valeur de l'étape peut être n'importe quel entier (à la fois positif et négatif). L'entrée "step h" dans la première ligne peut ne pas être présente du tout, alors que la valeur par défaut de l'étape est supposée être 1.
Lors de l'exécution d'une boucle pour, son corps est exécuté pour i = i1, i = i1 + h, i = i1 + 2 * h,. ... ... , je = dans. Les règles du langage algorithmique permettent de spécifier n'importe quel entier i1, in, h. En particulier, in peut être inférieur à i1. Si, dans ce cas, la valeur de h< 0, то цикл выполняется нужное количество раз, а если h имеет положительное значение, то этот случай не считается ошибочным - просто тело цикла не будет выполнено ни разу, а ЭВМ сразу перейдет к выполнению команд, записанных после CC... Lorsque h = 0, une boucle se produit.

Exemple : Soit un entier positif N. Calculez la factorielle de ce nombre : N! = 1 * 2 * 3 * ... * N.

8. Algorithmes d'expressions récurrentes

En mathématiques et en informatique, il existe souvent des séquences dans lesquelles chaque terme suivant est calculé à travers les précédents.
V progression arithmétique, par exemple, chaque terme suivant est égal au précédent, augmenté de la différence de progression :

ai =ai-1 +

Dans l'ordre 1, 1, 2, 3, 5, 8, 13, ... ( on l'appelle la suite de Fibonacci) chaque terme suivant est égal à la somme des deux précédents. Pour cette séquence

ai = ai-1 + ai-2, a1 = a2 = 1

Les formules exprimant le membre suivant d'une séquence à travers un ou plusieurs membres précédents sont appelées relations de récurrence.

9. Valeurs tabulaires et travailler avec eux

Pour écrire des algorithmes qui fonctionnent avec une grande quantité d'informations, dans le langage algorithmique, il existe des valeurs de table spéciales appelées tables (tableaux).
Les valeurs tabulaires sont constituées d'autres valeurs, généralement des nombres entiers ou des valeurs réelles, appelées éléments. Les éléments du tableau peuvent être disposés de différentes manières. Dans le langage algorithmique du système de programmation Kumir, les 2 types de tableaux les plus courants sont utilisés : les tableaux linéaires et rectangulaires.

Travailler avec des tableaux linéaires (tableaux à une dimension)

Comme toute quantité, table linéaire occupe de l'espace dans la mémoire de l'ordinateur, a un nom, une valeur et un type. Dans Kumir, des tableaux de types entiers (celtab) et réels (matériaux) sont utilisés. Par exemple:

L'enregistrement celtab A [1 : 5] signifie que la valeur A est un tableau (tab), composé de nombres entiers (entiers), les éléments de ce tableau ont des indices de 1 (limite inférieure) à 5 (limite supérieure). La valeur A est constituée de cinq nombres entiers : 3, 15, 0, -10 101.
Les éléments du tableau n'ont pas de noms distincts. Pour désigner le ième élément du tableau A, l'enregistrement A [i] est utilisé. Par exemple, lorsque la commande A [3] : = A [2] + A [4] est exécutée, le calculateur substituera à la place de A [2] et A [4] les valeurs des 2ème et 4ème éléments de Tableau A, c'est-à-dire les nombres 15 et -10, additionnez-les et attribuez la valeur résultante au 3ème élément, ainsi, au lieu de 0, la valeur 5 apparaît à la place du 3ème élément dans le tableau.
N'importe quel nombre entier (positif et négatif) et 0 peuvent être utilisés comme valeurs des bordures du tableau. La valeur de la bordure inférieure doit être inférieure à la valeur de la bordure supérieure ; s'ils sont égaux, le tableau est considéré comme composé d'un élément . Si dans la description du tableau, en raison d'un glissement de la langue, la bordure inférieure s'avère supérieure à la bordure supérieure, par exemple, celtab [3: 1], alors cela ne sera pas considéré comme une erreur, et non des messages apparaîtront dans les "champs" lors de la saisie de l'algorithme. Dans ce cas, on considérera qu'il n'y a pas d'éléments dans cette table, et le message "mauvais index" apparaîtra au premier accès à la table.

Tâche.

Travailler avec des tables rectangulaires (matrices)

Comme une table linéaire, une matrice prend de la place dans la mémoire de l'ordinateur, a un nom, une valeur et un type. Dans Kumir, des tableaux de types entiers (celtab) et réels (matériaux) sont utilisés.

La notation celtab A [1 : 5, 1 : 2] signifie que la valeur A est un tableau (tab) composé de nombres entiers (entiers), les éléments de ce tableau ont des indices de (première colonne, première ligne) à (dernière colonne, dernière ligne). La valeur A est constituée de dix nombres entiers : 3, 15, 0, -10, 101, 200, -45, 50, 10, 222.
Les éléments du tableau n'ont pas de noms distincts. Pour désigner le ième élément du tableau A, l'enregistrement A [i, j] est utilisé. Par exemple, lors de l'exécution de la commande A [3, 1] : = A [2, 1] + A [4, 1], l'ordinateur substituera à A [2, 1] et A [4, 1] les valeurs ​​des 2e et 4e éléments de la première colonne du tableau A, c'est-à-dire les nombres 15 et -10, les additionneront et attribueront la valeur résultante au 3e élément de la première ligne, donc, à la place du 3e élément de la première ligne du tableau, au lieu de 0, la valeur 5 apparaîtra.
N'importe quel nombre entier (positif et négatif) et 0 peuvent être utilisés comme valeurs des bordures du tableau. La valeur de la bordure inférieure doit être inférieure à la valeur de la bordure supérieure ; s'ils sont égaux, le tableau est considéré comme composé d'un élément . Si dans la description du tableau, en raison d'un glissement de la langue, la bordure inférieure s'avère plus grande que la bordure supérieure, par exemple, celtab [3: 1, 5: 2], cela ne sera pas considéré comme un erreur, et aucun message n'apparaîtra dans les "champs" lors de la saisie de l'algorithme. Dans ce cas, on considérera qu'il n'y a pas d'éléments dans cette table, et le message "mauvais index" apparaîtra au premier accès à la table.

Tâche. Dans le tableau B donné, déterminez l'indice et la valeur de l'élément maximum.

Annexe : Tâches

Algorithmes linéaires

Problème numéro 1

Trouver la somme de deux nombres - a et b
Solution:

alg somme
de bonne heure des choses a, b, c
sortir "entrez la valeur de 2 nombres"
saisir un B
c : = a + b
sortir N.-É. , "somme de nombres", a, "et", b, "égal", c
inconvénient

Problème numéro 2

Trouver la différence de deux nombres
Solution:

alg différence
de bonne heure des choses a, b, c
sortir "saisir les valeurs des variables"
saisir un B
c : = a - b
sortie ns, "différence de nombres", a, "et", b, "égal à", c
inconvénient

Problème numéro 3

Trouver le produit de deux nombres naturels
Solution:

intact a, b, c

alg travail
de bonne heure
sortir
" entrez deux chiffres "
saisir
une,bc : =un +b
sortie ns,
"
produit des nombres ", a" et ", b" est égal à ", c
inconvénient

Problème numéro 4

Trouver le quotient de deux nombres naturels
Solution:

des choses a, b, c

alg privé
de bonne heure
sortir "
saisir le dividende et le diviseur "
saisir
un B
c : = a / b
sortie ns,
"quotient", a, "et", b, "égal", c
inconvénient

Problème numéro 5

Trouver la moyenne arithmétique de cinq nombres arbitraires
Solution:

des choses a B c d e F

alg arithmétique
commencer des trucs a B c d e F
sortir "entrez 5 nombres quelconques"
saisir a, b, c, d, e
f : = (a + b + c + d + e) ​​/ 5
sortie ns , "la moyenne arithmétique de 5 nombres est égale à", f
inconvénient

Branchement

Problème numéro 1

Trouvez le plus grand parmi 3 entiers (les nombres sont arbitraires)

alg maximum
intact un B C
sortir "entrez trois nombres arbitraires"
saisir un B C
si a> b> c
alors la sortie ns ," nombre maximal est et
tous
si une<б>avec
alors la sortie ns , "le nombre maximum est", b
tous
si une<б<с
alors la sortie ns , "le nombre maximum est", avec
tous
inconvénient

Problème numéro 2

Deux nombres arbitraires sont donnés. Si le premier nombre est supérieur au second, attribuez-lui leur somme et leur produit au second nombre. Si le deuxième nombre est supérieur au premier, attribuez leur produit au premier nombre et leur somme au second.

alg état
commencer des trucs un B
sortir "entrez deux chiffres"
saisir un B
si a> b
alors a : = a + b
b : = a * b
autrement a : = a * b
b : = a + b
sortie ns , un B
inconvénient

Tâche numéro 3 :

Trouver parmi 4 nombres arbitraires le minimum
Solution:

alg le minimum
commencer des trucs a, b, c, f
sortir "entrez 4 nombres arbitraires"
saisir a, b, c. e
si a> b> c> f
alors la sortie ns , "le nombre maximum est", et
tous
si une<б>c> e
alors la sortie ns , "nombre maximum -", b
tous
si
une<б<с>e
alors la sortie ns , "nombre maximum -", s
tous
si
une<б<с<е
alors la sortie ns , "nombre maximum -", e
tous
inconvénient

Problème numéro 4

Il y a 2 pattes (2 cm et 2 cm) d'un triangle isocèle et sa base (2,82 cm). Déterminez si un triangle est rectangulaire.
Solution:

alg Triangle
commencer des trucs je, h, s
moi : = 2
h : = 2
c : = 2,82
si s ** 2 = (i ** 2) + (h ** 2)
puis la conclusion "vérité"
sinon la sortie " Couché"
tous
inconvénient

Problème numéro 5

Affiche le message "true" si le produit de deux nombres négatifs est supérieur à zéro, sinon affiche le message "false"
Solution:

alg le déni
commencer des trucs je, h, s, m
sortir "entrez deux nombres négatifs"
saisir je, h
c : = 0
m : = je * h
si m> s
alors la sortie ns , "vrai"
sinon sortie ns ,"Couché"
tous
inconvénient

Cycle "pour"

Problème numéro 1

Trouve Factorielle entier natureln ( Factorielle d'un nombre naturel n est le produit de tous les nombres naturels compris entre 1 et m ) Solution:

alg factoriel
commencer des trucs
une. b
intact
n, et
sortir

saisir
m
un : = 1
nts pour
et de 1 avant m
sortie ns,
« entrez le numéro »
saisir
b
a : = a * b
nœuds
sortie ns
,
"factorielle", n, "entiers est égal à", et
inconvénient

Problème numéro 2

Trouvez la valeur maximale parmin - entiers
Solution:

alg maximum
commencer des trucs
un B
intact
et n
sortir
"entrez le nombre d'entiers à comparer"
saisir
m
a : = 0
nts pour
et de 1 avant m
sortie ns,
"entrez le numéro"
saisir
b
si
b> un
alors
a : = b
tous
nœuds
sortie ns,
"le nombre maximum parmi les données est nombre", et
inconvénient

Problème numéro 3

Trouvez parmin-entiers le nombre de négatifs
Solution:

alg coïncidence
commencer des trucs
a, b, c
intact
n, je, s
sortir "
entrer le nombre de nombres naturels "
saisir
m
sortie ns,
"entrez le numéro"
saisir
b
n : = n - 1
h : = 0
nts pour
et de 1 avant m
sortie ns,"
entrez le numéro"
saisir
avec
si
c = b
alors
s : = s + 1
tous
nœuds
sortie ns
,

inconvénient

Problème numéro 4

N-entiers sont entrés séquentiellement. Trouver le nombre de correspondances avec le premier nombre
Solution:

commencer des trucs a, b, c
intact
n, je, s
sortir
"entrez le nombre de nombres naturels"
saisir
m
sortie ns,
"entrez le numéro"
saisir
b
n : = n - 1
h : = 0
nts pour
et de 1 avant m
sortie ns,
« entrez le numéro »
saisir
avec
si
c = b
alors s : = s + 1
tous
nœuds
sortie ns
,
"le nombre de correspondances avec le premier nombre est", h
inconvénient

Problème numéro 5

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

alg différence
commencer des trucs
une. b, c, d
intact
n, et
sortir
"Entrez le nombre de chiffres"
saisir
m
a : = 0
c : = 0
nts pour
et de 1 avant m
sortie ns,
"entrez le numéro"
saisir

si
d> c
alors
c : = d
tous
si
ré<а
alors
a : = d
tous
nœuds
b : = c - un
sortie ns,
"la différence entre les valeurs minimale et maximale est égale à", b
inconvénient

Au revoir cycle

Problème numéro 1

Trouver la somme de tous les nombres compris entre 1 et 5
Solution:

alg les nombres
commencer des trucs un B
sortir « entrez deux nombres tels que le deuxième nombre soit supérieur au premier »
saisir un B
au revoir une<б
un : = un + 1
nœuds
sortie ns
, une
inconvénient

Problème numéro 2

Soit deux nombres tels que le deuxième nombre est supérieur au premier. Il est nécessaire d'ajouter 1 au premier nombre jusqu'à ce qu'il soit égal au deuxième nombre, affichez-le sur le moniteur.
Solution:

alg somme
commencer des trucs a, b, c
sortir "entrer l'intervalle de sommation"
saisir un B
c : = un
au revoir une< б
un : = un + 1
c : = c + a
nœuds
sortie ns
, "la somme des nombres dans cet intervalle est égale à", avec
inconvénient

Problème numéro 3

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
Solution:

alg travail
commencer des trucs a, b, c
sortir "entrez deux nombres arbitraires"
saisir un B
c : = 100
au revoir un B< с
un : = un + 2
b : = b + 2
nœuds
sortie ns
, un B
inconvénient

Tableaux à une dimension

Problème numéro 1

Remplir le tableau nombres aléatoires et afficher ses éléments Solution :

alg tableau 2
intact
n, je
des choses
b, max
état-major
un [1 : n]
sortir
"remplir le tableau"
saisir
m
max : = 0
nts pour
je de 1 avant m
sortie ns,
"entrer l'élément du tableau"
saisir
b
si
b> max
alors max : = b
tous
nœuds
sortie ns
,

inconvénient

Problème numéro 2

Trouvez l'élément maximum du tableau et affichez-le sur le moniteur Solution :

alg tableau 2
de bonne heure
intact n, je
des choses
b, max
état-major un [1 : n]
sortir
"remplir le tableau"
saisir
m
max : = 0
nts pour
je de 1 avant m
sortie ns,
"entrer l'élément du tableau"
saisir
b
si
b> max
alors max : = b
tous
nœuds
sortie ns
,
"l'élément maximum de ce tableau est", max
inconvénient

Problème numéro 3

Trouver la somme des éléments d'un tableau à une dimension Solution :

alg somme
de bonne heure intact
n, je
état-major
un [1 : n]
des choses
b, z
sortir
"entrez le nombre d'éléments dans le tableau"
saisir
m
z : = 0
nts pour je de 1 avant m
sortie ns,
"entrer l'élément du tableau"
saisir
b
z : = z + b
nœuds
sortie ns
,
"somme", n, "éléments du tableau égaux à", z
inconvénient

Problème numéro 4

Trouver le produit des éléments d'un tableau à une dimension Solution :

alg travail
intact
dans
des choses
Dakota du Sud
état-major
un [1 : n]
sortir
"entrez le nombre d'éléments dans le tableau"
saisir
m
d : = 1
nts pour
je de 1 avant m
sortie ns,
"entrez le numéro"
saisir
s
d : = d * s
nœuds
sortie ns
,"
produit ", n," éléments est égal à ", d
inconvénient

Tableaux

Problème numéro 1


Remplir la matrice avec des nombres aléatoires Solution :

alg tableau à deux dimensions
intact
n, j, h, v
chef d'état-major
une
sortir
"entrer la cardinalité de la table"
saisir
m
h : = 0
v : = 0
sortie ns,
"remplir le tableau"
saisir
une
nts pour
j de 1 avant m
si a> 0
alors
h : = h + 1
autrement
v : = v + 1
nœuds
sortie ns,
une
inconvénient


Problème numéro 2


Calculer le nombre d'éléments positifs et négatifs de la première ligne de la matrice Solution :

alg tableau 2
de bonne heure
des choses b, x, z
intact
dans
sortir

saisir
m x : = 0
z : = 0
nts pour
je de 1 avant m
sortir
N.-É.," entrez le numéro"
saisir
b
si
b> 0
alors
x : = x + 1
autrement
z : = z + 1
tous
nœuds
sortie ns
,

sortie ns,

inconvénient


Problème numéro 3


Calculer la somme des éléments de chaque ligne Solution :

alg tableau 3
commencer des trucs
b, x, z, y
intact
dans
état-major
a [1 : n, 1 : n]
sortir
"entrez le nombre de colonnes"
saisir
m x : = 0
z : = 0
nts pour
je de 1 avant m
sortie ns,
"remplir le tableau"
saisir
a [1 : n, 1 : n]
b : = a [1, i] + a [n, i]
nœuds
sortie ns
,
"le nombre de nombres positifs est égal à", x
sortie ns,
"le nombre de nombres négatifs est égal à", z
inconvénient


Problème numéro 4


Calculer la somme des trois nombres de la deuxième ligne de la matrice trois par trois Solution :

alg matrice
de bonne heure intact
dans
état-major a [1 : 3, 1 : 3]
sortir "remplir le tableau"
saisir a [1 : 3, 1 : 3]
n : = 0
nts pour je de 1 avant 3
n : = n + a [2, i]
nœuds
sortir N.-É.,
"la somme des nombres de la deuxième ligne du tableau est", n
inconvénient

Khirianov Timofey Fedorovitch

si-alors-autre-tout

Vue générale de l'équipe :

si état
puis série 1
sinon série 2
tous

Série 2 avec le mot de service autrement peut être absent. Dans ce cas, la commande ressemble à ceci :

si état
puis série 1
tous

Lors de l'exécution de la commande si Kumir premiers contrôles étatécrit entre si et alors... Si cette condition est remplie, série 1, autrement - série 2(s'il y en a un), après quoi Kumir procède à l'exécution des commandes écrites après le mot tous.
Si la condition n'est pas remplie et que la série 2, ainsi que les autres, sont absentes, Kumir procède immédiatement à l'exécution des commandes écrites après le mot all.

Exemple 1

si un alors
b : = b-a
p : = p + q
autrement
a : = a-b
q : = q + p
tous

Exemple 2

si x> m
alors
m : = x
n : = n + 1
tous

Exemple 3 (Robot interprète)

si le droit est libre
alors
À droite
tous

choix-si-autre-tout

Vue générale de l'équipe :

choix
pour la condition 1 : série 1
pour la condition 2 : série 2

pour la condition n : série n
sinon la série n+1
tous

Mot-clé autrement ainsi que la série de commandes correspondante peuvent être manquants :

choix
pour la condition 1 : série 1
pour la condition 2 : série 2

pour la condition n : série n
tous

Kumir premiers contrôles état 1... S'il est observé, Kumir exécute les commandes de série 1, puis procède à l'exécution des commandes écrites après le mot tous... Sinon, Kumir fait de même avec condition 2 et des équipes de série 2 etc.
Commandes écrites après le mot autrement, sont exécutés 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).

Exemple 1

choix
pour a> 1 : i : = i + 1
à< 0: j:= j - 1
sinon t : = i ; i : = j ; j : = t
tous

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

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

    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

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

    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

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

    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

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

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

Khirianov Timofey Fedorovitch

Les principales constructions algorithmiques, outre les opérations élémentaires représentées par un élément du circuit, sont l'exécution et les cycles alternatifs. Il existe deux options pour programmer l'exécution alternative et il existe trois types principaux de cycle.

Code exécutable conditionnellement

Certaines opérations peuvent faire l'objet de opérateur conditionnel... Alors elles ne seront remplies que si cette condition est vraie.

si<условие>
alors
<действия>
tous

Alternative

Dans un organigramme, un contrôle de condition peut servir de guide pour sélectionner des opérations alternatives. C'est-à-dire que si la condition est vraie, l'exécution suivra une trajectoire, et si elle est fausse, une autre. Dans la langue Kumir, un cycle avec une condition préalable a la forme suivante :

si<условие>
alors
<действия>
autrement
<альтернативные действия>
tous


Conditions pour le robot :
mur gauche
mur de droite
paroi inférieure
mur supérieur
la cellule est repeinte
laissé librement
droit librement
d'en bas librement
libre d'en haut
la cage est propre

Boucle avec précondition

Une boucle avec une précondition est une boucle qui est exécutée tant qu'une condition spécifiée avant son début est vraie. Cette condition est vérifiée avant l'exécution du corps de la boucle, de sorte que le corps ne peut pas être exécuté une seule fois (si la condition est fausse dès le début). Dans la plupart des langages de programmation procédurale, il est implémenté par l'instruction while, d'où son deuxième nom - while-loop. Dans la langue Kumir, un cycle avec une condition préalable a la forme suivante :

au revoir<условие>
<тело цикла>
nœuds

Boucle avec postcondition

Une boucle avec une postcondition est une boucle dans laquelle la condition est vérifiée après l'exécution du corps de la boucle. Il s'ensuit que le corps est toujours exécuté au moins une fois. En Pascal, cette boucle implémente l'opérateur repeat..until, en C - do ... while.
Dans le langage KuMir, une boucle avec une postcondition ressemble à ceci :

nts
<тело цикла>
kts_with<условие>

Cycle avec compteur

Une boucle avec un compteur est une boucle dans laquelle une variable change sa valeur d'une valeur initiale donnée à sa valeur finale avec un certain pas, et pour chaque valeur de cette variable, le corps de la boucle est exécuté une fois. Dans la plupart des langages de programmation procédurale, il est implémenté par l'opérateur pour, qui indique le compteur (la "variable de cycle"), le nombre de passages requis (ou la valeur limite du compteur) et, éventuellement, le pas avec lequel le compteur change. Dans le langage Kumir, une boucle avec un compteur ressemble à ceci :

intact
nts pour a de 0 à 9
... le corps de la boucle
nœuds

Différents langages de programmation résolvent le problème de la valeur d'une variable à la fin d'une boucle dans laquelle cette variable a été utilisée comme compteur de différentes manières.