nsi:premiere:structures_algo
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| nsi:premiere:structures_algo [2021/06/17 00:17] – goupillwiki | nsi:premiere:structures_algo [2022/08/28 22:30] (Version actuelle) – goupillwiki | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| ====== Structures de contrôle utilisées dans les algorithmes ====== | ====== Structures de contrôle utilisées dans les algorithmes ====== | ||
| + | |||
| + | {{ .: | ||
| Dans un algorithme, les lignes sont lues l'une après l' | Dans un algorithme, les lignes sont lues l'une après l' | ||
| Ligne 9: | Ligne 11: | ||
| On pourrait imaginer diverses structures mais on choisit de se limiter à certaines. | On pourrait imaginer diverses structures mais on choisit de se limiter à certaines. | ||
| - | == Structure de test == | + | ===== Structure de test ===== |
| La structure de base est le '' | La structure de base est le '' | ||
| Ligne 15: | Ligne 17: | ||
| Il s'agit d' | Il s'agit d' | ||
| + | ==== SI seul ==== | ||
| - | <code lang-none> | + | <code lang-none |
| SI condition ALORS | SI condition ALORS | ||
| - | lignes à exécuter quand la condition est vérifiée | + | lignes à exécuter quand si la condition est vérifiée |
| FIN SI | FIN SI | ||
| + | suite... | ||
| </ | </ | ||
| + | |||
| + | * En ligne 1, on examine la condition, | ||
| + | * si elle est vraie à ce moment-la, on entre dans le SI, ligne 2 | ||
| + | * mais si elle est fausse, on passe directement à la ligne 4 | ||
| + | |||
| + | ==== SI ... SINON ==== | ||
| <code lang-none linenums> | <code lang-none linenums> | ||
| Ligne 27: | Ligne 37: | ||
| SINON | SINON | ||
| lignes à exécuter quand la condition n'est pas vérifiée | lignes à exécuter quand la condition n'est pas vérifiée | ||
| - | FIN SI | + | FIN |
| + | suite... | ||
| </ | </ | ||
| - | == Renvoi == | + | * ligne 1, la condition est examinée, |
| + | * si elle est vrai, on exécute le contenu de la partie SI (ligne 2) puis on saute la partie SINON | ||
| + | * si elle est fausse, on saute la partie SI et on exécute directement la partie SINON (ligne 4) | ||
| + | * puis on passe à la suite : ligne 6 | ||
| + | |||
| + | ===== Renvoi | ||
| - | On fournit des données à un algorithmes | + | On fournit des données à un algorithme |
| Souvent, on attend de l' | Souvent, on attend de l' | ||
| Ligne 44: | Ligne 60: | ||
| Après '' | Après '' | ||
| - | == Répéter | + | <WRAP tip>Le mot utilisé dans les langages est '' |
| + | |||
| + | ===== Répétition / boucle ===== | ||
| Il s'agit d'une boucle dans le sens où quelques lignes de l' | Il s'agit d'une boucle dans le sens où quelques lignes de l' | ||
| - | > Quand on connaît d' | + | ==== boucles bornées ==== |
| + | |||
| + | Quand on connaît d' | ||
| + | |||
| + | === RÉPÉTER n FOIS === | ||
| <code lang-none linenums> | <code lang-none linenums> | ||
| Ligne 55: | Ligne 77: | ||
| dans ce cas on connaît d' | dans ce cas on connaît d' | ||
| cette structure n' | cette structure n' | ||
| - | FIN RÉPÉTER | + | FIN |
| + | suite... | ||
| </ | </ | ||
| + | |||
| + | Compte le nombre de répétition faites. En ligne 1, s'il reste des répétitions à faire, exécute les lignes de la boucle (2 à 4). En ligne 5 on retourne directement en ligne 1 pour voir s'il reste des répétitions à faire. S'il n'y en a plus, on passe en ligne 6 pour la suite. | ||
| + | |||
| + | === POUR === | ||
| + | |||
| + | Ajoute un compteur qui est mis à jour à chaque répétition. Le compteur peut être utilisé dans la boucle ou mais ce n'est pas obligé. | ||
| + | |||
| + | <code lang-none linenums> | ||
| + | POUR compteur ALLANT DE début À fin FAIRE | ||
| + | lignes répétées | ||
| + | lors de la première répétition, | ||
| + | à chaque répétition, | ||
| + | la valeur fin est incluse et correspond à la dernière répétition | ||
| + | n' | ||
| + | FIN | ||
| + | </ | ||
| + | |||
| + | <WRAP tip> | ||
| + | * J' | ||
| + | * C'est la boucle POUR - FOR la plus traditionnelle en programmation. Pourtant ce n'est pas cette forme qui a été retenue en Python. | ||
| + | </ | ||
| + | |||
| + | === POUR CHAQUE === | ||
| + | |||
| + | <code lang-none linenums> | ||
| + | POUR CHAQUE élément DANS ensemble FAIRE | ||
| + | lignes répétées | ||
| + | la valeur de élément énumères les valeurs contenues dans ensemble | ||
| + | ensemble est donc une sorte de collection d' | ||
| + | selon le cas, on pourra compter ou pas sur un certain ordre d' | ||
| + | FIN | ||
| + | </ | ||
| + | |||
| + | ==== boucles non bornées ==== | ||
| + | |||
| + | Quand on ne le connaît pas et que le nombre de répétition est liée à une condition, on parle de **boucle non bornée**. | ||
| + | |||
| + | === TANT QUE === | ||
| + | |||
| + | Deux variantes, soit la condition est examinée au début de la boucle : | ||
| <code lang-none linenums> | <code lang-none linenums> | ||
| - | RÉPÉTER | + | TANT QUE condition |
| lignes qui sont répétées | lignes qui sont répétées | ||
| dans ce cas on ne connaît pas d' | dans ce cas on ne connaît pas d' | ||
| Ligne 65: | Ligne 128: | ||
| si elle est fausse, on saute en ligne 8 | si elle est fausse, on saute en ligne 8 | ||
| en arrivant en ligne 7 on saute en ligne 1 pour réexaminer la condition | en arrivant en ligne 7 on saute en ligne 1 pour réexaminer la condition | ||
| - | FIN RÉPÉTER | + | FIN |
| suite... | suite... | ||
| </ | </ | ||
| + | |||
| + | Soit la condition est examinée après la boucle. | ||
| <code lang-none linenums> | <code lang-none linenums> | ||
| Ligne 77: | Ligne 142: | ||
| suite... | suite... | ||
| </ | </ | ||
| + | |||
| + | <WRAP tip>Les boucles '' | ||
| + | |||
| + | === JUSQU' | ||
| + | |||
| + | Très proche des précédents. | ||
| <code lang-none linenums> | <code lang-none linenums> | ||
| Ligne 84: | Ligne 155: | ||
| est vraie que l'on arrête la boucle. | est vraie que l'on arrête la boucle. | ||
| n' | n' | ||
| - | FIN RÉPÉTER | + | FIN |
| suite... | suite... | ||
| </ | </ | ||
| - | == Pour == | + | <WRAP tip>Ces écritures ne sont pas normalisées. On peut les rencontrer avec de petites variations sans importances. Par exemple, on pourra rencontrer '' |
| - | Il s'agit là encore | + | ===== Pas de chevauchement ===== |
| - | > Les boucles | + | J'ai choisi d' |
| + | Exemple : | ||
| <code lang-none linenums> | <code lang-none linenums> | ||
| - | POUR compteur ALLANT DE début | + | i = 0 |
| - | | + | RÉPÉTER JUSQU'À i = 10 |
| - | | + | |
| - | à chaque répétition, | + | |
| - | | + | |
| - | n' | + | |
| - | FIN POUR | + | FIN |
| </ | </ | ||
| - | <code lang-none linenums> | + | Dans ce cas, le '' |
| - | POUR CHAQUE élément DE ensemble | + | |
| - | lignes répétées | + | Vous pouvez comparer avec de parenthèses : $(2 - (3 + 5)) \times 2$. Quand on rencontre '' |
| - | | + | |
| - | ensemble | + | |
| - | selon le cas, on pourra compter ou pas sur un certain ordre d'énumération des éléments. | + | Les marges à gauche -- que l'on appelle des **indentations** -- permettent de faire le lien facilement. |
| - | FIN POUR | + | |
| - | </ | + | |
| - | === En Python === | + | ===== En Python |
| Comme Python est notre langage principal, il est utile de savoir que les structures disponibles seront | Comme Python est notre langage principal, il est utile de savoir que les structures disponibles seront | ||
| Ligne 119: | Ligne 189: | ||
| * '' | * '' | ||
| * '' | * '' | ||
| - | * '' | + | * '' |
| * '' | * '' | ||
nsi/premiere/structures_algo.1623881872.txt.gz · Dernière modification : de goupillwiki
