# data[].attributes.body
https://www.youtube.com/watch?v=PZmgvHEKy-Y

# data[].attributes.attachment_link.title
Les objets connectés nous espionnent-ils ?

# data[].attributes.body
https://www.youtube.com/watch?v=GacJayI3rM0

# data[].attributes.attachment_link.title
Sensibilisation cybersécurité - Les objets connectés

# data[].attributes.body
correction de l'exercice Appinventor

# data[].attributes.headline
Packaging et installation de votre application mobile

# data[].attributes.subject
Packaging et installation de votre application mobile

# data[].attributes.attachment_link.title
Packaging et installation de votre application mobile

# data[].attributes.headline
Télécharger, installer et lancer AppInventor 

# data[].attributes.subject
Télécharger, installer et lancer AppInventor 

# data[].attributes.attachment_link.title
App Inventor Offline: Télécharger, installer et créer des comptes utilisateurs

# data[].attributes.headline
Comment tester une application pendant son développement

# data[].attributes.subject
Comment tester une application pendant son développement

# data[].attributes.attachment_link.title
Comment tester une application pendant son développement

# data[].attributes.attachment_link.readable_text
Toute la structure html/css/js et une partie du contenu ont été réalisés par Nicolas Buyle-Bodin professeur au lycée Lacassagne, avec l'aide de Jean-Manuel Mény, professeur au lycée de la plaine de l'Ain. Ils ont travaillé pendant plusieurs centaines d'heures pour créer un site de formation à destination des enseignants du secondaire de l'académie de Lyon d'une grande qualité visible sur le portail Mathématiques du site académique. Ils ont eu la gentillesse de placer leur code source sous licence Creative Commons BY-NC-SA Respect de la Paternité - Pas d'utilisation commerciale - Partage des conditions initiales à l'identique..

Nous les en remercions chaleureusement.

La liste complète des fonctions disponibles grâce au module turtle est disponible sur la documentation officielle.
On pourra aussi télécharger un petit résumé au format.pdf en cliquant ici.

1. Compléter le script ci-dessous pour qu'il' trace une marche d'escalier comme ci-dessus, à partir du point de coordonnées (-150,-150), avec une hauteur et une largeur 50 pixels.

2. Compléter le script avec une fonction marche(h) qui trace une marche d'escalier avec une hauteur et une largeur de h pixels, à partir de la position courante et d'une orientation de la tortue de 0 degrés (tortue orientée vers l'Est).

3. Compléter le script avec une fonction escalier(n, h) qui trace un escalier comme ci-dessus avec une hauteur et une largeur h pixels, à partir de la position courante.

Solution Question 1

Solution Question 2

Solution Question 3

1. Tracer un triangle équilatéral de côté 100 pixels et dont un sommet a pour coordonnées (0,0).

2. Généraliser le script en une fonction polygone_regulier(n, cote) qui trace un polygone régulier de n côtés de longueur cote pixels, à partir du point de coordonnées (0,0), en tournant dans le sens trigonométrique.

Solution Question 1

Solution Question 2

1. Compléter le canevas de la fonction spirale_carre(n, increment) pour qu'elle puisse tracer des spirales "carrées" comme celle ci-dessus.

 from turtle import * def spirale_carre(n, increment): speed(5) #parametrage de la vitesse de 1 lent à 10 rapide, 0 étant la vitesse la plus rapide shape("turtle") #choix de la forme de la tortue pencolor("red") #choix de la couleur du crayon pensize(4) #épaisseur du crayon up() #lever le crayon goto(0,0) # aller à la position (0,0) setheading(0) #orientation de la tortue vers l'Est / 90 Nord / 180 Ouest / 270 Sud down() #poser le crayon angle = 90 #angle de rotation cote = 0 #longueur du coté tracé #à compléter

2. Écrire une fonction spirale_triangle(n, increment) qui tracer des spirales "triangulaires" comme celle ci-dessus.

3. Écrire une fonction spirale_polygone(n, m, increment) qui généralise les deux précédentes avec des polygones à m côtés.

Solution Question 1

Solution Question 2

Solution Question 3

L'unité du système de coordonnées du module turtle dépend de la taille de la fenêtre d'affichage. Par exemple, dans les exercices interactifs de ce site, les axes sont gradués des valeurs -200 à 200 :

Modifier les unités des axes du repère

Il n'est pas possible d'agrandir indéfiniment les dimensions de la fenêtre d'affichage, mais il est heureusement possible de modifier les unités des axes grâce à la méthode .setworldcoordinates() appliquée à une instance de l'écran d'affichage ci-après affectée à la variable fenetre (fenetre = Screen()).

Par exemple :

Avec un repère orthonormé usuel gradué de -10 à 10 :

La fonction repere(xmin, xmax, xgrad, ymin, ymax, ygrad) donnée ci-dessous permet de tracer les axes d'un repère orthogonal dans la fenêtre rectangulaire dont le coin inférieur gauche a pour coordonnées ( xmin, ymin) et le coin supérieur droit d'abscisses a pour coordonnées ( xmax, ymax).

 from turtle import * def repere(xmin, xmax, xgrad, ymin, ymax, ygrad): ##----- Fenêtre d'affichage et options -----## fenetre = Screen() # Instance de la fenêtre fenetre.setworldcoordinates(xmin, ymin, xmax, ymax) speed(0) # Vitesse la plus rapide ##----- Axe des abscisses -----## up() goto(xmin, 0) down() goto(xmax, 0) nbxgrad = int((xmax - xmin)/xgrad + 1) long_xgrad = (ymax - ymin)/400.0 * 5 for i in range(nbxgrad): x = xmin + i * xgrad up() goto(x, -long_xgrad) down() goto(x, long_xgrad) ##----- Axe des ordonnées -----## up() goto(0, ymin) down() goto(0, ymax) nbygrad = int((ymax - ymin)/ygrad + 1) long_ygrad = (xmax - xmin)/400.0 * 5 for i in range(nbygrad): y = ymin + i * ygrad up() goto(-long_ygrad, y) down() goto(long_ygrad, y)

1. Écrire une fonction aller_sans_tracer(x, y) qui déplace la tortue jusqu'au point de coordonnées (x, y) sans effectuer de tracé.

 from turtle import * def aller_sans_tracer(x, y): up() goto(x, y) down()

2. On veut représenter graphiquement une fonction réelle $f: x \mapsto f(x)$ dans une fenêtre [xmin, xmax, ymin, ymax] avec un pas , xmin et xmax qui sont des variables.

1. Déterminer le nombre de points qu'il faut construire.

2. Rechercher dans le petit résumé la fonction de turtle qui permet de tracer un point et celle qui permet de régler l'épaisseur du trait.

3. Écrire un script réalisant la tracé de la fonction $f: x \mapsto x^2$ sur l'intervalle $[-10;10]$ avec un pas de $1$.

4. Écrire une fonction graphique(xmin, xmax, xgrad, ymin, ymax, ygrad, fonction, pas) qui généralise le script précédent en représentant une fonction dans une fenêtre paramétrable avec un pas régulier.

Solution question 1

Solution question 2

Solution question 3

Solution question 4

Il faut construire $\frac{\text{x}_{max}-\text{x}_{min}}{\text{pas}} + 1$ points.

C'est la fonction dot(rayon).

 from turtle import * def repere(xmin, xmax, xgrad, ymin, ymax, ygrad): ##----- Fenêtre d'affichage et options -----## fenetre = Screen() # Instance de la fenêtre fenetre.setworldcoordinates(xmin, ymin, xmax, ymax) speed(0) # Vitesse la plus rapide ##----- Axe des abscisses -----## up() goto(xmin, 0) down() goto(xmax, 0) nbxgrad = int((xmax - xmin)/xgrad + 1) long_xgrad = (ymax - ymin)/400.0 * 5 for i in range(nbxgrad): x = xmin + i * xgrad up() goto(x, -long_xgrad) down() goto(x, long_xgrad) ##----- Axe des ordonnées -----## up() goto(0, ymin) down() goto(0, ymax) nbygrad = int((ymax - ymin)/ygrad + 1) long_ygrad = (xmax - xmin)/400.0 * 5 for i in range(nbygrad): y = ymin + i * ygrad up() goto(-long_ygrad, y) down() goto(long_ygrad, y) def aller_sans_tracer(x, y): up() goto(x, y) down() def carre(x): return x ** 2 #tracé des axes xmin, xmax, xgrad = -10, 10, 1 ymin, ymax, ygrad = -10, 100, 10 repere(xmin, xmax, xgrad, ymin, ymax, ygrad) #choix du pas pas = 1 #nombre de points nbpoints = int((xmax - xmin)/pas) + 1 #tracé des points x = xmin for k in range(nbpoints): aller_sans_tracer(x, carre(x)) dot(2) x = x + pas

 from turtle import * def repere(xmin, xmax, xgrad, ymin, ymax, ygrad): ##----- Fenêtre d'affichage et options -----## fenetre = Screen() # Instance de la fenêtre fenetre.setworldcoordinates(xmin, ymin, xmax, ymax) speed(0) # Vitesse la plus rapide ##----- Axe des abscisses -----## up() goto(xmin, 0) down() goto(xmax, 0) nbxgrad = int((xmax - xmin)/xgrad + 1) long_xgrad = (ymax - ymin)/400.0 * 5 for i in range(nbxgrad): x = xmin + i * xgrad up() goto(x, -long_xgrad) down() goto(x, long_xgrad) ##----- Axe des ordonnées -----## up() goto(0, ymin) down() goto(0, ymax) nbygrad = int((ymax - ymin)/ygrad + 1) long_ygrad = (xmax - xmin)/400.0 * 5 for i in range(nbygrad): y = ymin + i * ygrad up() goto(-long_ygrad, y) down() goto(long_ygrad, y) def aller_sans_tracer(x, y): up() goto(x, y) down() def carre(x): return x ** 2 def graphique(xmin, xmax, xgrad, ymin, ymax, ygrad, fonction, pas): #tracé des axes xmin, xmax, xgra = -10, 10, 1 ymin, ymax, ygrad = -10, 100, 10 repere(xmin, xmax, xgrad, ymin, ymax, ygrad) #nombre de points nbpoints = int((xmax - xmin)/pas) + 1 #tracé des points x = xmin for k in range(nbpoints): aller_sans_tracer(x, fonction(x)) dot(2) x = x + pas #exemple d'appel de fonction graphique(-10, 10, 1, -10, 100, 10, carre, 1)

1. Importer la fonction random() du module random, puis écrire une fonction point_aleatoire() sans argument, qui retourne le couple de coordonnées $(x,y)$ d'un point aléatoire avec $-1 \leqslant x<1$ et $-1 \leqslant y < 1$.

(0.263405545797, 0.0720779871685)

2. Écrire une fonction carre_distance(x, y) qui retourne le carré de la distance du point de coordonnées (x, y) à l'origine du repère.

3. Importer le module turtle, recopier le code de la fonction repere(xmin, xmax, xgrad, ymin, ymax, ygrad) définie dans l'exercice précédent puis munir la fenêtre d'un repère orthonormal avec l'appel repere(-1, 1, 0.1, -1, 1, 0.1).

4. Écrire une fonction crible(n) qui :

crible la fenêtre avec n points aléatoires en coloriant le point en rouge s'il est dans le disque unité et en vert sinon ;

puis affiche la fréquence de points rouges.

5. Quelle conjecture peut-on faire sur la fréquence de points rouges lorsque la taille n de l'échantillon devient de plus en plus grande ?

Solution Question 1

Solution Question 2

Solution Questions 3 et 4

Solution Question 5

1. Importer la fonction random() du module random, puis écrire une fonction point_aleatoire_carre(cote), qui retourne le couple de coordonnées $(x,y)$ d'un point choisi aléatoirement dans un carré de côté cote avec $0 \leqslant x < \text{cote}$ et $0\leqslant y< \text{cote}$.

 from random import random def point_aleatoire_carre(cote): #à compléter print(point_aleatoire_carre(20))

(0.263405545797, 0.0720779871685)

2. Écrire une fonction distance(xA, yA, xB, yB) qui retourne la distance entre le point de coordonnées (xA, yA) et celui de coordonnées (xB, yB). On importera la fonction sqrt du module math.

 from math import sqrt def distance(xA, yA, xB, yB): #à compléter print(distance(1, 2, 3, 4))

2.2360679775

3. On veut mesurer la distance moyenne sur un échantillon de n couples de points choisis aléatoirement dans un carré de côté cote avec l'algorithme ci-dessous :

somme←0
Pour k de 1 à n :
    xA ← réel au hasard de 0 à cote
    yA ← réel au hasard de 0 à cote
    Lever le crayon
    Déplacer la tortue en (xA, yA)
    Baisser le crayon
    Choisir une couleur aléatoire de trait
    xB ← réel au hasard de 0 à cote
    yB ← réel au hasard de 0 à cote
    Déplacer la tortue en (xB, yB)
somme ← somme + distance de A à B
moyenne ← somme/n

Pour faire correspondre la fenêtre de turtle à un carré de cote fixé, on capture une instance de la fenêtre avec fenetre = Screen() puis on règle xmin, ymin, xmax et ymax avec fenetre.setworldcoordinates(xmi, ymin, xmax, ymax). Le code ci-dessous est un exemple pour cote = 20.

 from turtle import * cote = 20 fenetre = Screen() # Instance de la fenêtre fenetre.setworldcoordinates(0, 0, cote, cote) # Paramétrage du repère speed("fastest") # Vitesse la plus rapide pour la tortue shape("turtle") # Forme de la tortue

Écrire une fonction distance_moyenne_carre(n, cote) qui implémente l'algorithme précédent, affiche la distance moyenne entre deux points sur un échantillon de n points choisis aléatoirement dans un carré de côté cote et dessine avec la tortue tous les segments reliant les couples de points.

 from random import random from turtle import * from math import sqrt def point_aleatoire_carre(cote): #à compléter def distance(xA, yA, xB, yB): #à compléter def distance_moyenne_carre(n, cote): fenetre = Screen() # Instance de la fenêtre fenetre.setworldcoordinates(0, 0, cote, cote) # Paramétrage du repère speed("fastest") # Vitesse la plus rapide pour la tortue shape("turtle") somme = 0 # à compléter exitonclick() #Pour fermer la fenêtre de la tortue avec un click lors d'une exécution sous Pyzo distance_moyenne_carre(100, 20)

Comment peut-on stabiliser la valeur retournée par distance_moyenne_carre(n) ?

4. On choisit désormais un échantillon de n couples de points choisis aléatoirement dans un disque de rayon fixé.

Écrire une fonction point_aleatoire_disque(r), qui retourne le couple de coordonnées $(x,y)$ d'un point choisi aléatoirement dans un disque de rayon r dont le centre est l'origine du repère. On pourra implémenter l'algorithme ci-dessous.

xA ← réel au hasard de -r à r
yA ← réel au hasard de -r à r
Tant que xA * xA + yA * yA > r * r :
    xA ← réel au hasard de -r à r
    yA ← réel au hasard de -r à r

La fenêtre de turtle étant carrée et non circulaire, pour qu'elle contienne un disque centré en l'origine et de rayon fixé, on la fait correspondre au carré circonscrit au disque. On importe d'abord le module turtle puis on munit la fenêtre d'un repère orthonormal tel que xmin = -rayon , xmax = rayon, ymin = -rayon et ymax =rayon. Ci-dessous un exemple pour rayon = 5.

Rechercher dans la documentation de turtle, la fonction circle et l'utiliser pour tracer le cercle rouge délimitant le disque choisi.

 from turtle import * rayon = 5 fenetre = Screen()  # Instance de la fenêtre fenetre.setworldcoordinates(-rayon, -rayon ,rayon, rayon) # Paramétrage du repère speed("fastest") # Vitesse la plus rapide pour la tortue shape("turtle") # Forme de la tortue

Écrire une fonction distance_moyenne_disque(n) sur le modèle de distance_moyenne_carre(n), qui choisit un échantillon de n couples de points aléatoires dans un disque de rayon r, dessine tous les segments reliant ces couples de points avec la tortue et affiche la distance moyenne entre deux points.

Solution Question 1

Solution Question 2

Solution Question 3

Solution Question 4

# data[].attributes.attachment_link.authors[].name
F.Junier et Groupe UPO - Nicolas BUYLE-BODIN - Jean-Manuel MENY 

# data[].attributes.attachment_link.description
Toute la structure html/css/js et une partie du contenu ont été réalisés par Nicolas Buyle-Bodin professeur au lycée Lacassagne, avec l'aide de Jean-Manuel Mény, professeur au lycée de la plaine de l'Ain. Ils ont travaillé pendant plusieurs centaines d'heures pour créer un site de formation à destination des enseignants du secondaire de l'académie de Lyon d'une grande qualité visible sur le portail Mathématiques du site académique.

# data[].attributes.headline
tester une application développée sur smartphone

# data[].attributes.subject
tester une application développée sur smartphone

# data[].attributes.attachment_link.readable_text
MICROSOFT MAKECODE SOFTWARE FOR micro:bit

These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and you. They apply to the software named above. The terms also apply to any Microsoft services or updates for the software, except to the extent those have additional terms.

IF YOU COMPLY WITH THESE LICENSE TERMS, YOU HAVE THE RIGHTS BELOW.

3. LICENSES FOR OTHER COMPONENTS. T he software may include third party components with separate legal notices or governed by other agreements, as described in the ThirdPartyNotices file accompanying the software.

a. Data Collection. The software may collect information about you and your use of the software, and send that to Microsoft. Microsoft may use this information to provide services and improve our products and services. You may opt out of many of these scenarios, but not all, as described in the product documentation. In using the software, you must comply with applicable law. You can learn more about data collection and use in the help documentation and the privacy statement at . Your use of the software operates as your consent to these practices. http://go.microsoft.com/fwlink/?LinkId=398505

b. Processing of Personal Data. To the extent Microsoft is a processor or subprocessor of personal data in connection with the software, Microsoft makes the commitments in the European Union General Data Protection Regulation Terms of the Online Services Terms to all customers effective May 25, 2018, at . https://docs.microsoft.com/en-us/legal/gdpr

· work around any technical limitations in the software;

· reverse engineer, decompile or disassemble the software, or otherwise attempt to derive the source code for the software, except and only to the extent required by third party licensing terms governing use of certain open source components that may be included with the software;

· remove, minimize, block or modify any notices of Microsoft or its suppliers in the software;

· use the software in any way that is against the law; or

· share, publish, rent or lease the software, or provide the software as a stand-alone offering for others to use.

6. UPDATES. The software may periodically check for updates and download and install them for you. You may obtain updates only from Microsoft or authorized sources. Microsoft may need to update your system to provide you with updates. You agree to receive these automatic updates without any additional notice. Updates may not include or support all existing software features, services, or peripheral devices.

Subject to the foregoing clause (ii), Microsoft will only be liable for slight negligence if Microsoft is in breach of such material contractual obligations, the fulfillment of which facilitate the due performance of this agreement, the breach of which would endanger the purpose of this agreement and the compliance with which a party may constantly trust in (so-called "cardinal obligations"). In other cases of slight negligence, Microsoft will not be liable for slight negligence.

12. DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED "AS-IS." YOU BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES OR CONDITIONS. TO THE EXTENT PERMITTED UNDER YOUR LOCAL LAWS, MICROSOFT EXCLUDES THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.

13. LIMITATION ON AND EXCLUSION OF DAMAGES. YOU CAN RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT OR INCIDENTAL DAMAGES.

This limitation applies to (a) anything related to the software, services, content (including code) on third party Internet sites, or third party programs; and (b) claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to the extent permitted by applicable law.

It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your country may not allow the exclusion or limitation of incidental, consequential or other damages.

Please note: As the software is distributed in Quebec, Canada, some of the clauses in this agreement are provided below in French.

Remarque : Ce logiciel étant distribué au Québec, Canada, certaines des clauses dans ce contrat sont fournies ci-dessous en français.

EXONÉRATION DE GARANTIE. Le logiciel visé par une licence est offert " tel quel ". Toute utilisation de ce logiciel est à votre seule risque et péril. Microsoft n'accorde aucune autre garantie expresse. Vous pouvez bénéficier de droits additionnels en vertu du droit local sur la protection des consommateurs, que ce contrat ne peut modifier. La ou elles sont permises par le droit locale, les garanties implicites de qualité marchande, d'adéquation à un usage particulier et d'absence de contrefaçon sont exclues.

LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ POUR LES DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une indemnisation en cas de dommages directs uniquement à hauteur de 5,00 $ US. Vous ne pouvez prétendre à aucune indemnisation pour les autres dommages, y compris les dommages spéciaux, indirects ou accessoires et pertes de bénéfices.

Cette limitation concerne :

· tout ce qui est relié au logiciel, aux services ou au contenu (y compris le code) figurant sur des sites Internet tiers ou dans des programmes tiers ; et

· les réclamations au titre de violation de contrat ou de garantie, ou au titre de responsabilité stricte, de négligence ou d'une autre faute dans la limite autorisée par la loi en vigueur.

Elle s'applique également, même si Microsoft connaissait ou devrait connaître l'éventualité d'un tel dommage. Si votre pays n'autorise pas l'exclusion ou la limitation de responsabilité pour les dommages indirects, accessoires ou de quelque nature que ce soit, il se peut que la limitation ou l'exclusion ci-dessus ne s'appliquera pas à votre égard.

EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous pourriez avoir d'autres droits prévus par les lois de votre pays. Le présent contrat ne modifie pas les droits que vous confèrent les lois de votre pays si celles-ci ne le permettent pas.

Remainder of this page intentionally left blank.

# data[].attributes.body
https://www.youtube.com/watch?v=lFr77l5iM5k&fbclid=IwAR2s63iqv6_wkEXcgK2_WxPpjtx1LgKlkwk_X6xoiB-mzZwanO9mFuqbEWw