une boule à neige interactive
une boule à neige interactive
SNT 2de - Cahier d’activités

Rejoignez la communauté !
Co-construisez les ressources dont vous avez besoin et partagez votre expertise pédagogique.
Th. 1
Internet
Th. 2
Le Web
Th. 3
Les réseaux sociaux
Th. 4
Les données structurées et leur traitement
Th. 5
Localisation, cartographie et mobilité
Th. 6
Informatique embarquée et objets connectés
Th. 7
La photographie numérique
Annexes
Fiches méthodes
Programmation 4
Exclusivité numérique

Fonctions

Ressource affichée de l'autre côté.
Faites défiler pour voir la suite.

Cours

Apprendre avec des exemples

Ressource affichée de l'autre côté.
Faites défiler pour voir la suite.

1
Fonction randit

Dans un jeu de combat, on souhaite calculer les dégâts infligés par une massue sur les ennemis du joueur. Pour apporter une certaine part de hasard dans ces coups, les dégâts infligés correspondent à un nombre entier compris entre 1 et 10.

from random import randint # Import de la fonction randint du module random

def calcul_degat() : # Définition de la fonction calcul_degat(), l'ensemble des instructions qui la constituent est affectée d'une indentation
	"""La fonction calcul_degat renvoie un nombre entier aléatoire compris entre 1 et 10""" # Documentation dont la syntaxe est spécifique à la présentation du rôle de la fonction
	degat = randint(1, 10) # Tirage aléatoire entre 1 et 10
	return degat # Renvoi de la valeur de la variable degat grâce à l'instruction return

print(calcul_degat()) # Affichage de la valeur retournée pour la fonction calcul_degat()

Après l'exécution du script, la fonction peut être effectuée plusieurs fois dans la console pour afficher la valeur obtenue pour le tirage aléatoire :

from random import randint # Import de la fonction randint du module random

def calcul_degat() : # Définition de la fonction calcul_degat(), l'ensemble des instructions qui la constituent est affectée d'une indentation
	"""La fonction calcul_degat renvoie un nombre entier aléatoire compris entre 1 et 10""" # Documentation dont la syntaxe est spécifique à la présentation du rôle de la fonction
	degat = randint(1, 10) # Tirage aléatoire entre 1 et 10
	return degat # Renvoi de la valeur de la variable degat grâce à l'instruction return

print(calcul_degat()) # Affichage de la valeur retournée pour la fonction calcul_degat()
print(calcul_degat())
print(calcul_degat())
print(calcul_degat())

Une fois cette fonction définie, il est possible de l'utiliser et de la mettre à profit dans un programme plus complet permettant d'évaluer le nombre de points de vie restant d'un personnage :

from random import randint # Import de la fonction randint du module random

def calcul_degat() : # Définition de la fonction calcul_degat(), l'ensemble des instructions qui la constituent est affectée d'une indentation
	"""La fonction calcul_degat renvoie un nombre entier aléatoire compris entre 1 et 10""" # Documentation dont la syntaxe est spécifique à la présentation du rôle de la fonction
	degat = randint(1, 10) # Tirage aléatoire entre 1 et 10
	return degat # Renvoi de la valeur de la variable degat grâce à l'instruction return

points_de_vie = 50 # La variable points_de_vie est affectée de la valeur 50
points_de_vie = points_de_vie - calcul_degat() # Un coup de massue est asséné au personnage, la variable points_de_vie a une nouvelle valeur calculée à partir de sa précédente et de la fonction calcul_degat()
print(points_de_vie) # Affichage de la valeur de la variable points_de_vie
Ressource affichée de l'autre côté.
Faites défiler pour voir la suite.

2
« Help, I need somebody, help ! »

Dans la console, en utilisant la fonction help(), on peut afficher la documentation d'une fonction qui a été précisée à l'aide des trois guillemets.

from random import randint # Import de la fonction randint du module random

def calcul_degat() : # Définition de la fonction calcul_degat(), l'ensemble des instructions qui la constituent est affectée d'une indentation
	"""La fonction calcul_degat renvoie un nombre entier aléatoire compris entre 1 et 10""" # Documentation dont la syntaxe est spécifique à la présentation du rôle de la fonction
	degat = randint(1, 10) # Tirage aléatoire entre 1 et 10
	return degat # Renvoi de la valeur de la variable degat grâce à l'instruction return

help(calcul_degat)
Ressource affichée de l'autre côté.
Faites défiler pour voir la suite.

3
Coup de massue encadré

On modifie la fonction calcul_degat() afin de tenir compte du minimum et du maximum de dégâts que peut infliger une arme. On considère cette fois-ci que la massue doit au minimum réduire de 5 points les points de vie totaux d'un personnage, mais elle ne peut diminuer de plus de 20 points ce solde total à chaque coup.

from random import randint

def calcul_degat(min, max) : # Nouvelle définition de la fonction nécessitant deux arguments
	"""La fonction calcul_degat renvoie un nombre entier aléatoire compris entre min et max"""
	degat = randint(min, max) # Tirage aléatoire entre les arguments min et max
	return degat # Renvoi de la valeur de la variable degat

Après l'exécution du script, on peut appeler cette fonction dans la console.

from random import randint

def calcul_degat(min, max) : # Nouvelle définition de la fonction nécessitant deux arguments
	"""La fonction calcul_degat renvoie un nombre entier aléatoire compris entre min et max"""
	degat = randint(min, max) # Tirage aléatoire entre les arguments min et max
	return degat # Renvoi de la valeur de la variable degat
  
print(calcul_degat(5, 20))

On peut appeler cette fonction dans un programme plus complet, incluant l'introduction d'une nouvelle arme pouvant infliger 10 à 15 points de dégâts.

from random import randint

def calcul_degat(min, max) : # Nouvelle définition de la fonction nécessitant deux arguments
	"""La fonction calcul_degat renvoie un nombre entier aléatoire compris entre min et max"""
	degat = randint(min, max) # Tirage aléatoire entre les arguments min et max
	return degat # Renvoi de la valeur de la variable degat

points_de_vie = 50 # La variable points_de_vie est affectée de la valeur 50.
points_de_vie = points_de_vie - calcul_degat(5, 20) # La valeur de la variable points_de_vie est modifiée par un appel de la fonction calcul_ degat(5, 20) correspondant à un coup de massue
print(points_de_vie) # Affichage du solde de points_de_vie

points_de_vie = points_de_vie - calcul_degat(10, 15) # La valeur de la variable points_de_vie est modifiée par un appel de la fonction calcul_ degat(10, 15) correspondant à un coup d'une autre arme pouvant diminuer entre 10 et 15 points le solde de points de vie d'un personnage
print(points_de_vie) # Affichage du solde de points_de_vie
Ressource affichée de l'autre côté.
Faites défiler pour voir la suite.

4
Affichage et interactions

La fonction print() utilisée de nombreuses fois auparavant est une fonction qui permet d'afficher des valeurs.

print("SNT")
print(3**7)

La fonction input() met en pause l'exécution du programme et permet à l'utilisateur d'entrer une valeur.

prenom = input("Quel est votre prénom ?")
print('Bonjour ' + prenom)	

age = int(input("Quel est votre âge ?"))
print('Dans 10 ans, tu auras ' +str(age + 10) + " ans !")

Pour ce dernier exemple, la valeur entrée est considérée comme une chaîne de caractères. Pour utiliser la valeur afin d'effectuer un calcul, on utilise la fonction int() pour signifier au programme le type de la valeur à donner à la variable age. Lors de la concaténation demandée dans la fonction print(), on utilise la fonction str() permettant de modifier le type de la valeur obtenue après l'opération age + 10.
Ressource affichée de l'autre côté.
Faites défiler pour voir la suite.
Bilan
Les différentes étapes nécessaires à la déclaration d'une fonction sous la forme d'un protocole sont :
  • commencer par le mot réservé def ;
  • écrire le nom de la fonction ;
  • écrire éventuellement la liste des arguments nécessaires au fonctionnement de la fonction ;
  • déclarer, à l'aide du symbole « : » le bloc correspondant à la fonction (l'ensemble de ce bloc doit être indenté, c'est-à-dire être décalé vers la droite par rapport au mot réservé def) ;
  • ajouter la description de la fonction à l'intérieur des symboles " " " et " " " ;
  • terminer par l'instruction return suivie de la valeur ou de la variable dont la valeur est à renvoyer.

Une fonction est une portion de code (sorte de sous-programme) définie en début de programme et qui peut être appelée autant de fois que nécessaire. L'utilisation des fonctions permet :
  • d'éviter la répétition de lignes de code équivalentes ;
  • de mettre en relief les données et les résultats (entrées et sorties de la fonction) ;
  • de la réutiliser dans d'autres scripts par l'intermédiaire du mécanisme import ;
  • de décomposer une tâche complexe en tâches plus simples.

On obtient ainsi des programmes plus courts et plus lisibles. L'instruction return stoppe l'exécution de la fonction et retourne une ou plusieurs données.

Programmes
Le zoom est accessible dans la version Premium.
Ressource affichée de l'autre côté.
Faites défiler pour voir la suite.

Exercices

Ressource affichée de l'autre côté.
Faites défiler pour voir la suite.

1
Double d'argument

Écrire une fonction double(x) qui, pour un argument x donné, renvoie le double de sa valeur.

Afficher la correction
Ressource affichée de l'autre côté.
Faites défiler pour voir la suite.

2
Prévision de renvoi

def QuelRenvoi(a,b):
	c = a + 1
	d = b**2
	return c - d

1. Prévoir la valeur renvoyée par l'appel de fonction QuelRenvoi(3,2).

2. Tester le code pour vérifier.
Afficher la correction
Ressource affichée de l'autre côté.
Faites défiler pour voir la suite.

3
Appel de fonction avec arguments

def PourquoiDonnerA(a,b):
	a = 10
	return a*b

1. Prévoir la valeur renvoyée par l'appel de la fonction PourquoiDonnerA(5,2).

2. Proposer le code d'une fonction plus simple, renvoyant exactement les mêmes valeurs, dont le nombre d'arguments est différent.
Afficher la correction
Ressource affichée de l'autre côté.
Faites défiler pour voir la suite.

Supplément numérique

A
Négatif

On exécute les instructions suivantes : À partir d'une image numérique, il est possible d'effectuer un traitement simple sur l'ensemble des pixels qui constituent une image en modifiant la valeur associée à chaque composante, notée x, par 255 - x.

Placeholder pour NégatifNégatif
Le zoom est accessible dans la version Premium.

Écrire une fonction negatif(x) qui, pour un argument de valeur x, renvoie la valeur correspondant à 255 - x.

Afficher la correction

Une erreur sur la page ? Une idée à proposer ?

Nos manuels sont collaboratifs, n'hésitez pas à nous en faire part.

Oups, une coquille

j'ai une idée !

Nous préparons votre pageNous vous offrons 5 essais

Yolène
Émilie
Jean-Paul
Fatima
Sarah
Utilisation des cookies
Lors de votre navigation sur ce site, des cookies nécessaires au bon fonctionnement et exemptés de consentement sont déposés.