C1 Informatique PSI
PSI 2015 2016, Lycée St Louis Page 1
Petits rappels et mises à jour
Architecture d’un ordinateur
Il est important de connaître un minimum de vocabulaire sur les ordinateurs : processeur, mémoire, périphérique, bus,
mémoire vive, mémoire de masse, mémoire morte, système d’exploitation, environnement de développement
Codage des nombres
On dit souvent qu’un ordinateur travaille en « binaire ». Qu’est-ce et pourquoi ? Représentation des entiers naturels, des
entiers relatifs et des nombres à virgules. Signe, exposant, mantisse (Norme IEEE 754).
Algorithmique et programmation
- Algorithme : ensemble de règles opératoires dont l’application permet de résoudre un problème en un nombre fini
d’opérations.
- Programme : séquences d’instructions et de données enregistrées sur un support et susceptibles d’être traitée par
un ordinateur, c’est la traduction d’un algorithme dans un langage particulier, à la fois interprétable par la machine
et compréhensible par l’homme. C’est un assemblage d’instructions, regroupées dans le code source. Son parcours
est appelé flot d’exécution.
- Procédure : fonction particulière qui ne renvoie rien.
Q1. Quelles sont toutes les caractéristiques d’une variable ?
Q2. Citer les types de données possibles avec le langage Python ?
En Python, il existe en fait les entiers longs et les courts. Les entiers courts sont codés sur 32 bits (de  à   ). Les
entiers longs n’ont pas de limite prédéfinie, elle dépend juste de la mémoire attribuée à l’interpréteur Python par le
système d’exploitation. En Scilab, il existe plusieurs représentations des entiers : int8 (entier codé sur 8 bits, donc 1 octet),
int16…
Les listes peuvent être définies en "compréhension", c’est-à-dire avec des éléments donnés par une expression quand un
indice parcourt un ensemble.
Il existe aussi d’autres types non compris de base, mais pouvant être ajoutés avec différents modules, c’est le cas du type
decimal à précision infinie en utilisant le module Decimal.
C1 Informatique PSI
PSI 2015 2016, Lycée St Louis Page 2
Q3. Voici un programme écrit en langage Python, détailler et expliquer toutes les étapes si on l’exécute :
i = 5
j = i + 8
print(i,j,’sont les deux valeurs’)
i = 12
print(i,j,’sont les deux valeurs’)
Q4. D'après vous, que fait ce programme ? Détailler les étapes.
a = 11
print(a)
a = a+1
print(a)
a = ‘a’+’1’
print(a)
Q5. Expliquer ces lignes de code :
(1+2) == 3
(0.1+0.2) == 0.3
Q6. Donner les réponses aux commandes suivantes écrites en Python :
L = [1, 0.2, ‘Python’, [2,4], (1,2,3)]
T = (1, 0.5, 1/3)
C = "Python c’est trop bien !"
len(L)
len(T)
len(C)
L[3]
L[4][1]
L[1:3:2]
L+L
L[2:88]
T[-2]
C[8]
C[0:len(C)-1]
Une grande différence au niveau des listes est que Python compte à partir de 0 et termine à la longueur de la liste-1, alors
que Scilab compte à partir de 1 et termine à la longueur de la liste. Donc pour faire appel au 1 élément d’une liste, on
utilisera a[0] en Python et a(1) en Scilab.
Q7. Voici une liste définie dans la console : L1 = [1, 2, 3, [1, 2, 3], 4, 5, 6], comme elle est assez longue, on souhaite en
faire une copie et ne pas modifier la liste initiale.
C1 Informatique PSI
PSI 2015 2016, Lycée St Louis Page 3
Q8. Méthodes qui peuvent s’appliquer à des listes en Python seulement. Il en existe de nombreuses déjà définies. Pour
chacune des suivantes, expliquer très brièvement ce qu’elle fait, en considérant L : une liste et x une variable :
L.append(x)
L.extend(L)
L.insert(2,x)
L.remove(x)
L.count(x)
Le langage Python est un langage de Programmation Orientée Objet (POO : notion HP). En simplifiant, une méthode est
une fonction associée à une valeur (entier, liste…). Une valeur à laquelle est associée des méthodes est un objet. D’une
manière générale, la syntaxe d’appel d’une méthode est objet.methode(arguments). En simplifiant, ce n’est pas très
différent de l’appel d’une fonction où l’objet serait passé comme un argument supplémentaire, c’est-à-dire methode(objet,
arguments).
Q9. Utilisation de fonctions :
def nomdelafct(parametres) :
instructions # Vitesse
instructions
return resultat
function [l1] = nomdelafct(l2)
instructions
instructions // Vitesse
endfunction
Q10. Quels sont les résultats attendus après l’exécution de ces programmes ?
def f1(x) :
print(x**3)
a = f1(2)
print(a)
def f2(x) :
return(x**3)
a = f2(2)
print(a)
i = 5
def f():
i = 6
f()
print("la valeur de i est : "+str(i))
C1 Informatique PSI
PSI 2015 2016, Lycée St Louis Page 4
def incr(e):
e = e+1
print(e)
e = 10
incr(e)
print(e)
function inc(e)
e = e+1
disp(e)
endfunction
e = 10
incr(e)
disp(e)
def f(x):
while (True):
x = x + 1
if (x == 1000):
return 2 * x
print(f(500))
b = 12
if b < 18:
print (b)
elif 3 < b < 24:
print(‘a’)
else :
print(‘non’)
if b < 18 then
disp(b)
elseif 3 < b & b < 24 then
disp(‘a’)
else
disp(' non ')
end
def fonction1(n):
s,i = 0,1
while s < n:
s += i
i += 1
return i-1
def fonction2(n):
s,i = 0,1
while s < n:
s += i
i += 1
return i-1
def fonction3(n):
s,i = 0,1
while i <= n:
s += i
i += 1
return s
def f(x):
global b
b = 10
return x + 1
a = 3
b = 4
print(f(a)+b)
a = 3
b = 4
print(f(a)+b)
def f(x):
global b
b = 10
return x + 1
def f(x):
global b
b = 10
return x + 1
a = 3
b = 4
print(b+f(a))
def g(x):
global a
a = 10
return 2 * x
def f(x):
v = 1
return g(x) + v
a = 3
print(f(6)+a)
def g(x):
global a
a = 10
return 2 * x
def f(x):
v = 1
return g(x) + v
a = 3
print(a+f(6))
def g(x):
global a
a = 10
return 2 * x
def f(x):
v = 1
return g(x) + v
a = 3
print(a+f(6)+a)
L’utilisation de global n’est pas à privilégier ! L’intérêt est ici de faire la différence entre les variables locales et globales.
Il est essentiel de définir une documentation à chaque fonction ! Un nom bien choisi et des variables compréhensibles
aideront (il faut à tout prix évitez les a,b et c à tout bout de champ). Voici la façon officielle de faire (entre 3 guillemets), qui
permettra d’afficher cette documentation avec la commande help. Ne pas hésiter à utiliser des commentaires si vous en
sentez le besoin avec #.
C1 Informatique PSI
PSI 2015 2016, Lycée St Louis Page 5
def cube(x) :
""" Donne le cube d’un nombre"""
return x**3
En tapant help(cube) dans la console, le résultat est :
Help on function cube in module __main__:
cube(x)
Donne le cube d’un nombre
Seules les opérations de base sont chargées par défaut dans la mémoire de Python. Il faut importer les autres fonctions
(qui sont regroupées souvent dans des bibliothèques ou modules). Parmi les modules les plus utiles, on peut citer :
- math qui contient toutes les fonctions habituellement utilisées en analyse ;
- random qui permet de générer des nombres pseudo-aléatoires ;
- fractions qui permet de manipuler des nombres rationnels en valeur exacte ;
- numpy qui fournit des outils variés pour le calcul scientifique ;
- matplotlib.pyplot pour le tracé de courbes ;
-
On peut aussi imaginer créer un fichier qui regroupe toutes les fonctions dont on a besoin et un autre qui contient le
déroulement réel des instructions nécessaires à la résolution de notre problème. Il suffira alors d’importer le fichier de
fonctions au début de celui d’instruction pour avoir accès aux fonctions. L’intérêt est la grande lisibilité qui découlera de
cette façon de faire.
Pour pouvoir utiliser les fonctions de ces modules, il faut les importer, il existe plusieurs façons de faire (liste non
exhaustive) :
import numpy → importe le module numpy tout entier et il faudra utiliser nompy.cos pour la fonction cosinus.
import numpy as np → importe le module numpy tout entier et il faudra utiliser np.cos pour la fonction cosinus.
from numpy import cos → importe seulement la fonction cosinus de numpy, il faudra utiliser cos.
Attention aux conflits entre des commandes de modules différents portant les mêmes noms !
Q11. Ecrire les instructions nécessaires pour afficher tous les diviseurs d’un entier n, l’entier n devant être obtenu par
une demande à l’utilisateur.
Q12. Déterminer le rang du dernier terme strictement positif de la suite récurrente définie par 
 , la
valeur de étant donnée dans la variable notée u_0.
Q13. On peut distinguer les fonctions totales (renvoient toujours un résultat quelle que soit la valeur des arguments) des
fonctions partielles (il n’est pas toujours possible de renvoyer un résultat). Un exemple classique est la division par
zéro qui est impossible. Ainsi, la fonction suivante peut interrompre le bon déroulement du programme :
def divm2(x, y):
return (y+3)/(x-2)
Comment faire pour ne pas stopper tout le programme, à cause d’une mauvaise valeur rentrée pour le 1er
argument de cette fonction ?
1 / 7 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !