• Aucun résultat trouvé

? 1 0

N/A
N/A
Protected

Academic year: 2021

Partager "? 1 0"

Copied!
11
0
0

Texte intégral

(1)

0 Aventures scratchiennes !

1 Notion d'algorithme

Dans , crée le programme ci-contre.

Utilise les couleurs pour trouver les blocs.

Les couleurs indiquent la catégorie dans laquelle se trouve l'instruction.

Programmer dans , consiste à glisser-déposer-imbriquer des blocs ! Il est très facile de déplacer un bloc, supprimer une instruction...

Personnalise ce premier programme à ta guise !

Georges doit faire franchir une rivière à un chou, une chèvre et un loup. Mais il a un souci : s'il n'est pas à côté, la chèvre mange le chou et le loup mange la chèvre. Il dispose d'une barque mais ne peut y faire monter que deux des trois compères.

Comment doit-il procéder pour transporter le chou, la chèvre et le loup sur l'autre rive ?

?

Maintenant Georges doit faire passer le chou, la chèvre, le loup, le bâton et le feu mais il ne peut emmener que deux compères par voyage. Si Georges s'éloigne, alors la chèvre mange le chou, le loup mange la chèvre, le bâton bat le loup et le feu brûle le bâton !

Comment doit-il procéder pour transporter les cinq compères, sains et saufs sur l'autre rive ?

Point info

a

b

(2)

2 Écriture binaire d'un nombre

Le mot « algorithme » vient du nom du mathématicien perse Al-Khwârismî.

Un algorithme est une suite d'instructions ou d'opérations permettant de résoudre un problème donné.

Par exemple, pour prendre une photo, on suit les instructions suivantes :

Se munir d'un appareil photo ;

Cadrer le sujet ;

Faire la mise au point ;

Appuyer sur le déclencheur.

Tu disposes d'une balance de Roberval et de trois masses :

• une masse de 1 g ,

• une masse de 2 g,

• une masse de 4 g.

Dans l'exemple ci-contre, le solide pèse donc 7 g.

Combien de solides de masses différentes peut-on peser avec ce matériel ? On représente la pesée du solide précédent comme ci-dessous.

Complète ce tableau avec les autres pesées possibles.

Poids de 4 g Poids de 2 g Poids de 1 g Total

  

7

On dispose, en plus, d'une masse de 8 g. Reprends les questions précédentes.

Lucien a représenté la pesée de 11 g comme ceci : 1011.

Explique sa présentation. Écris toutes tes pesées de la même manière.

Un nombre entier est écrit en base 2 quand il est écrit à l'aide de 0 et de 1.

Exemple : 10110101 représente le nombre entier suivant

1  0  2  1  4  0  8  1  16  1  32  0  64  1  128 = 181.

L'écriture des nombres en base 2 est très importante en informatique, car un ordinateur fonctionne ainsi : un « 1 » correspond à un courant électrique qui passe, et un « 0 » correspond à un courant électrique qui ne

passe pas !

Point info

a

c d

Point info

b

(3)

3 Appliquer un algorithme

Partie 1

Voici une liste de nombres : Trie cette liste dans l'ordre croissant.

Quel algorithme as-tu suivi pour faire ton tri ?

Partie 2

Voici un algorithme permettant de trier une liste de nombres :

On compare le premier nombre à tous les nombres qui le suivent.

Si on trouve un nombre inférieur, on échange ces deux nombres. On poursuit les comparaisons entre le nouveau premier nombre et les nombres du reste de la liste.

On recommence avec le deuxième nombre.

Et ainsi de suite jusqu'à atteindre le dernier nombre de la liste.

Exemple :

Soit la liste :

Voici ce que l'on obtient en appliquant l'algorithme.

Liste de

départ Étape Opération effectuée Nouvelle

liste 8 5 3 7 1 On commence par le premier nombre de la liste : 8.

On compare 8 et 5. Comme 8

5, on échange 8 et 5. 5 8 3 7 5 8 3 7 2 On compare 5 et 3. Comme 5

3, on échange 5 et 3. 3 8 5 7 3 8 5 7 3 On compare 3 et 7. Comme 3

7, on n'échange pas 3 et 7. 3 8 5 7 3 8 5 7 4 On passe au second nombre de la liste : 8.

On compare 8 et 5. Comme 8

5, on échange 8 et 5. 3 5 8 7 3 5 8 7 5 On compare 5 et 7. Comme 5

7, on n'échange pas 5 et 7. 3 5 8 7

3 5 8 7 6

On passe au troisième nombre de la liste : 8.

On compare 8 et 7. Comme 8

7, on échange 8 et 7.

On vient de comparer les deux derniers nombres de la liste donc c'est terminé.

3 5 7 8

Applique cet algorithme pour trier la liste de la partie 1.

Certains algorithmes sont difficiles à écrire et à appliquer alors qu'on sait facilement résoudre le problème correspondant intuitivement.

Mais les ordinateurs n'ont aucune intuition et il est nécessaire de détailler soigneusement toutes les étapes de l'algorithme permettant à l'ordinateur de résoudre le problème.

Il existe de nombreux algorithmes de tri. Celui que nous venons d'étudier est appelé tri par sélection. Il est peu efficace mais il en existe des plus performants.

Les algorithmes de tri sont importants en informatique car l'ordinateur travaille parfois sur des tableaux contenant des millions de données.

Et l'accès à ces données est beaucoup plus rapide quand les données sont triées.

Point info

a b

c

15 27 12 5 32 18

8 5 3 7

(4)

5 Le Jeu de Nim

4 Un langage élémentaire

Un robot est situé sur la première case d'une ligne contenant plusieurs cases.

Il dispose de trois instructions :

• C : Colorier • A : Avancer de trois cases • R : Reculer d'une case De plus, il est possible de lui faire répéter un certain nombre de fois une série d'instructions.

Ainsi, la série d’instructions C A R répétée 6 fois a pour résultat :

Dessine une rangée constituée de cases vides.

Complète-la après l'exécution de l'algorithme suivant : A C R C A C A C R C.

On peut considérer que A C R C A C A C R C est un programme. Ce programme est constitué de mots C, A ou R (chaque mot contient une seule lettre !) et à chacun de ces mots correspond une instruction bien précise.

Écris un programme permettant de colorier toutes les cases d'un tableau donné.

Écris un programme (de moins de 7 instructions) et propose la figure obtenue à ton camarade qui devra retrouver ton algorithme. Attention, répéter est considéré comme une instruction.

Pour programmer les algorithmes en informatique, on utilise un langage de programmation. Il en existe de très nombreux : JavaScript, C++, Python, etc.

Ici, le langage que nous avons utilisé est particulièrement élémentaire puisqu'il ne dispose que de quatre mots : les instructions C, A, R et répéter !

Dans une variante du jeu de NIM, un nombre quelconque d'allumettes est disposé sur une ligne.

Deux joueurs prennent, chacun leur tour, une, deux ou trois allumettes. Le joueur qui prend la (ou les) dernière(s) allumette(s) remporte la partie.

Tu pourras jouer avec ton voisin. On suppose, ici, qu'il y a 15 allumettes au départ. Mais, pour t'aider, tu pourras commencer à jouer avec 5, puis avec 9 allumettes.

Le joueur qui commence peut-il être sûr de gagner la partie à chaque fois ? Dans ce cas, quelle est la stratégie gagnante ?

Essaie de rédiger cette stratégie le plus clairement possible.

b a

Point info

Point info

a

b c

(5)

8 Créer des lignes avec

6 Algorithme et base 2

7 La tour d'anneaux

L'objectif de cette activité est de trouver un algorithme permettant d'écrire un nombre en base 2.

Pour cela, nous utiliserons le tableau suivant :

128 64 32 16 8 4 2 1

0 0 1 0 1 1 0 1

Explique pourquoi le nombre binaire 101101 est égal au nombre entier 45.

Donne l'écriture en base 2 du nombre entier 103.

En utilisant la première ligne du tableau, propose un algorithme permettant d'écrire en base 2 un nombre entier inférieur à 256.

On dispose d'une tour d'anneaux (position 1) mais les anneaux ont été dérangés (position 2).

position 1 position 2 position 3

On souhaite les remettre dans l'ordre mais le seul type de manipulation autorisé est le suivant : prendre un nombre quelconque d'anneaux à partir du haut et retourner en une seule fois ce paquet d'anneaux.

Par exemple, on prend les 4 premiers anneaux et on les retourne. On passe donc de la position 2 à la position 3. Pour décrire cette instruction, on écrira R4.

Trouve la série d'instructions permettant de ranger les anneaux de cette tour. Pour représenter ces anneaux, tu pourras découper des disques de diamètres différents.

Peux-tu décrire un algorithme général permettant de remettre dans l'ordre une tour quelconque ?

Dans cette activité, le lutin se déplacera tout seul grâce à tes instructions, c'est-à-dire qu'il va exécuter ton algorithme.

Pour commencer, efface le lutin par défaut (le chat) et crée un lutin Ball.

a b c

a

b

(6)

Puis crée le code ci-contre.

Tu disposes des instructions suivantes :

Construis avec elles la figure ci-contre.

Un défi maintenant !

Crée la figure ci-contre en utilisant ces instructions supplémentaires :

et .

Dans , les blocs-puzzle sont des instructions.

En les imbriquant les uns aux autres, on obtient des blocs de code.

L'instruction est une instruction particulière appelée boucle.

Cette instruction, comme toutes les instructions de contrôle, se trouve dans la catégorie Contrôle.

L'instruction est répétée à l'infini. Elle stoppe quand on arrête le programme ou

quand l'instruction est utilisée.

L'instruction répéter permet de répéter un certain nombre de fois toutes les instructions comprises dans la boucle. Elle est très importante car les algorithmes consistent souvent à répéter un très grand nombre de fois une ou plusieurs tâches simples mais légèrement distinctes les unes des autres. Ce qui permet au final de résoudre des problèmes très complexes !

Point info

(7)

9 Déplace ton lutin à l'aide du clavier !

Efface le lutin par défaut et choisis un lutin qui se déplacera en dessinant des lignes.

Une fois ce lutin sur la scène, tu peux diminuer sa taille en cliquant sur le bouton . Puis crée le code ci-contre.

Que faut-il ajouter, avant l'instruction stylo en position d'écriture, afin de positionner le lutin au centre de la scène à chaque lancement du programme ?

Crée ensuite le code ci-contre.

Teste ton programme.

Complète le programme afin que ton lutin puisse se déplacer dans toutes les directions.

Efface le code gérant le déplacement du lutin.

Crée le code ci-contre.

Complète-le afin que ton lutin puisse se déplacer dans toutes les directions.

Lorsque ton lutin se déplace, il dessine un trait. On souhaite qu'il puisse lever ou baisser le crayon quand on lui demande.

Le plus souvent, on crée les écouteurs ci-contre.

Ajoute autant d'écouteurs que tu veux !

Tu peux par exemple dessiner une jolie figure en changeant la couleur et l'épaisseur du trait.

• L'instruction est très particulière : le fait d'appuyer sur la flèche droite est appelé un évènement.

• Le code qui suit la brique ci-dessus constitue ce que l'on appelle un écouteur.

C'est ton ordinateur, plus précisément le système d'exploitation (Windows ou Linux par exemple), qui informe que l'utilisateur a pressé la touche. À ce moment, exécute les instructions de l'écouteur.

• L'instruction est une instruction de déplacement absolu. Le lutin se déplace au centre de la scène, quel que soit son emplacement de départ.

• Les instructions et sont des instructions relatives.

Dans les deux cas, le lutin se déplace de 50 points vers la droite. Tu remarqueras que, lorsque l'on demande au lutin d'avancer de 50, il avance dans sa direction actuelle.

Point info

(8)

10 Un chat qui crève l'écran

Aide-toi des indications ci-après pour programmer l'animation suivante.

Au départ, le chat est positionné en x = − 190 et y = − 90.

Il avance de 36 pas de longueur 10 et dit : « Je suis arrivé. ».

Il se retourne en disant : « Je retourne au point de départ. » et revient à sa position initiale.

Quand il se déplace, on a l'impression qu'il marche.

Indications :

• Pour avancer de 360 points, il suffit de répéter 36 fois une certaine opération. Laquelle ? Utilise pour cela l'instruction de contrôle .

• Pour donner l'illusion de la marche (ou la course), il faut changer le costume du chat à chaque

pas : .

• Pour que le chat ne se déplace pas trop vite, utilise l'instruction .

Le code suivant permet d'animer un lutin possédant plusieurs costumes. Tu peux le tester dans un autre programme.

L'instruction est intégrée dans la boucle répéter créant le déplacement du lutin. Ainsi, quand le programme est lancé, va répéter indéfiniment les deux instructions :

• changer de costume ;

• attendre 1 seconde.

Point info

(9)

• Pour que le chat se retourne correctement, utilise ceci :

Dans , certains lutins disposent de plusieurs costumes, c'est-à-dire de plusieurs apparences.

Ainsi, le lutin Alex dispose de 4 costumes. Quant au chat, il dispose de deux costumes : costume1 et costume2. Quand on passe rapidement d'un costume à l'autre, on a l'illusion que ses jambes bougent.

Pour aller plus loin

Programme le déplacement suivant :

Voici quelques directions pour t'aider.

Quand le chat s'éloigne vers le fond de la scène, sa taille se réduit, puis elle augmente à nouveau quand il se rapproche.

Pour cela, utilise les instructions et .

Point info

(10)

11 C'est très variable ! Point info

Pour demander à l'utilisateur de saisir une réponse, on utilise l'instruction suivante : .

Si tu cliques sur cette instruction, affiche en bas de la scène une zone de saisie.

L'utilisateur saisit sa réponse puis appuie sur la touche Entrée du clavier ou clique sur la coche à droite de cette zone.

La réponse de l'utilisateur est alors stockée dans une variable appelée qui se trouve dans la catégorie Capteurs.

Première partie

Tu vas créer un programme grâce auquel le chat demande un nombre puis annonce son triple.

Pour t'aider, voici les différents blocs du programme dont tu as besoin :

Seconde partie

Tu vas mettre en scène Alex et Ruby et créer ce jeu de questions/réponses.

Quand on clique sur Alex, elle demande qu'on lui donne une température en degrés Fahrenheit.

Puis elle annonce la température correspondante en degrés Celsius.

Son amie Ruby, en revanche, fait exactement l'inverse.

Pour t'aider, voici deux formules de conversion. À toi de découvrir leur sens ! et

C = (F − 32) / 1,8 F = 1,8 * C  32

(11)

a

b

c

d

e f

À l’aide de , tu vas mettre en scène un lutin qui proposera 10 additions à résoudre.

Le choix des nombres est aléatoire.

Le joueur répond.

Le lutin annonce si la réponse est correcte ou non, puis il passe à la question suivante.

Pour mener à bien ce projet, il faut comprendre la notion de variable.

En effet, doit générer les deux termes dont on demande la somme.

Pour cela, dans la catégorie Données, crée deux variables : qui stockera le premier terme et qui stockera le second.

Pour l'instant, ces deux variables ne contiennent aucune valeur.

À chaque question, on va leur donner une valeur, au hasard, comprise entre 30 et 60, par exemple.

Voici l'instruction qui permet de le faire : .

Ensuite, tu vas programmer le lutin pour qu'il pose sa question : utilise l'instruction demander (voir l'activité 11 – première partie).

Dans la catégorie Opérateurs, utilise plusieurs fois l'expression . Pour t'aider, voici l'expression qui permet d'afficher « la somme de 35 et de 47 »,

si a est égal à 35 et b à 47 : .

La réponse est stockée dans la variable . Le programme doit comparer la réponse du joueur à la somme a  b. Si elles sont égales, la réponse est juste. Sinon, c'est faux.

Pour cela, utilise les blocs et .

Dans la brique « si », on trouve une pièce hexagonale qui doit contenir un test à effectuer.

Par exemple, on peut tester l’égalité entre la réponse proposée et la somme de a et b par l’expression réponse = a  b. Cette expression est soit VRAIE, soit FAUSSE. On dit que c’est une expression booléenne.

Si, lors du test, l’expression est vraie, alors seules les instructions situées après « alors » et avant « sinon » seront exécutées. Si elle est fausse, alors seules les instructions situées après le « sinon » seront exécutées.

Il te suffit enfin d'imbriquer le tout dans une boucle répéter ! Pour aller plus loin

Crée une variable score initialisée à 0. À chaque fois que la réponse est correcte, augmente cette variable de 1 grâce à l'instruction .

À la fin du programme, le lutin annoncera le score obtenu.

Point info

Références

Documents relatifs

EXERCICE 4 Écrire un algorithme qui affiche le message "Tu es formidable" autant de fois que l’utilisateur le demande.. EXERCICE 5 Un programme pose une question à

Dans un algorithme, il peut arriver que l’on ait à répéter un certain nombre de fois une ou plusieurs instructions.. On parle alors de boucle ou de

[r]

Modifiez votre algorithme pour qu’il saisisse deux entiers référence valdébut et valfin délimitant un intervalle donné (vous supposerez que valdébut est plus petit que valfin),

En Python (mais aussi dans bien d’autres langages : langage C, ………), l’instruction qui permet d’exécuter en boucle un nombre précis de fois une ou

Calculer une factorielle est le processus qui consiste à multiplier un nombre entier par tous les nombres entiers positifs inférieurs à celui-ci. b) Si vous n’êtes pas en

 Quels sont les résultats possibles (en tenant compte du nombre de fois qu’on peut l’avoir ) : ne pas hésiter à tous les écrire.  Quel est le nombre total d’issues

« Tant que », elle peut ne pas l’être puisqu’on peut ne pas entrer dans la boucle.. 1°) Faire fonctionner l’algorithme à la main. Indiquer quels sont les affichages que