Cours de première NSI
Publié le 19/03/2024
Extrait du document
«
NSI première
None
None
None
Table of contents
Table of contents
1.
Partie 1
4
1.1 C1 : Python les base
4
1.2 C2 : Les séquences
26
1.3 C3 : Les dictionnaires
35
2.
Projet 1
40
2.1 1) la fonction input
40
2.2 2) Écrire et lire dans un fichier externe
40
2.3 3) projet
42
3.
Partie 2
44
3.1 C4 : entier positif
44
3.2 C5 : texte
51
3.3 C6 : entier relatif
55
3.4 C7 : nombre flottant
59
4.
Partie 3
65
4.1 C8 : archi de von Neumann
65
4.2 C9 : simulation CPU
80
5.
Projet 2
84
6.
Partie 4
85
6.1 C10 : intro à l'algorithmique
85
6.2 C11 : tri par insertion et sélection
94
6.3 C12 : invariants de boucle
103
7.
Partie 5
107
7.1 C13 : Systèmes d'exploitation
107
7.2 C14 : Commandes Linux
111
7.3 C15 : langages de programmation
122
8.
Projet 3
132
9.
Partie 6
134
9.1 C16 : introduction réseau
134
9.2 C17 : TCP et IP
143
9.3 C18 : Modèle TCP/IP
150
9.4 C19 : simulation réseau (I)
156
9.5 C20 : bit alterné
157
10.
Partie 7
162
10.1 C21 : introduction au web
162
10.2 C22 : les URL
165
- 2/231 -
Table of contents
10.3 C23 : HTML et CSS
169
10.4 C24 : interaction avec l'utilisateur
176
10.5 C25 : modèle client/serveur
182
10.6 C26 : protocole HTTP
186
10.7 C27 : simulation réseau (II)
191
10.8 C28 : formulaire d'une page web
192
11.
Projet 4
199
12.
Partie 8
201
12.1 C29 : Données en tables
201
13.
Partie 9
210
13.1 C30 : recherche dichotomique
210
13.2 C31 : algo gloutons
216
13.3 C32 : algo des k plus proches voisins
220
14.
Projet 5
228
15.
Partie 10
230
15.1 C33: interface Homme - Machine
230
- 3/231 -
1.
Partie 1
1.
Partie 1
1.1 C1 : Python les base
1.1.1 Cours
1) Programmer un ordinateur, c'est quoi ?
Programmer un ordinateur, c'est quoi ? Programmer, c'est créer des programmes (suite d'instructions données à l'ordinateur) !
Un ordinateur sans programme ne sait rien faire.
Il existe différents langages qui permettent de programmer un ordinateur, mais
le seul directement utilisable par le processeur est le langage machine (suite de 1 et de 0).
Aujourd'hui (presque) plus personne
ne programme en langage machine (trop compliqué).
Les informaticiens utilisent des instructions (mots souvent en anglais) en lieu et place de la suite de 0 et de 1.
Ces instructions,
une fois écrites par le programmeur, sont "traduites" en langage machine.
Un programme spécialisé assure cette traduction.
Ce
système de traduction s'appellera interpréteur ou bien compilateur, suivant la méthode utilisée pour effectuer la traduction.
Il existe 2 grandes familles de langages de programmation :
• Les langages de bas niveau sont très complexes à utiliser, car très éloignés du langage naturel, on dit que ce sont des langages
« proches de la machine », en contrepartie ils permettent de faire des programmes très rapides à l'exécution.
L'assembleur est
le langage de bas niveau.
Certains "morceaux" de programmes sont écrits en assembleur encore aujourd'hui.
• Les langages de haut niveau sont eux plus "faciles" à utiliser, car plus proches du langage naturel (exemple : si a=3 alors b=c).
Exemples de langages de haut niveau : C, C++ , Java, Python...
En NSI, notre langage de prédilection sera Python.
2) Notion de variable
Définition du mot ordinateur d'après "Le Petit Larousse" :
"Machine automatique de traitement de l'information, obéissant à des programmes formés par des suites d'opérations
arithmétiques et logiques."
Qui dit "traitement de l'information", dit donc données à manipuler.
Un programme "passe" donc son temps à traiter des
données.
Pour pouvoir traiter ces données, l'ordinateur doit les ranger dans sa mémoire (RAM - Random Access Memory).
La
RAM se compose de cases dans lesquelles nous allons ranger ces données (une donnée dans une case).
Chaque case a une
adresse (ce qui permet au processeur de savoir où sont rangées les données).
Alors, qu'est-ce qu'une variable ?
Eh bien, c'est une petite information (une donnée) temporaire que l'on stocke dans une case de la RAM.
On dit qu'elle est
"variable", car c'est une valeur qui peut changer pendant le déroulement du programme.
Une variable est constituée de 2 choses :
• une valeur présente en mémoire (par exemple le nombre entier 5)
• un nom
On dira donc qu'une variable est l'association d'un nom et d'une valeur
i = 12
Grâce à cette ligne, nous avons défini une variable qui porte le nom i.
Ce nom i est associé à la valeur 12.
Il est aussi possible d'associer un nom à un nombre à virgule :
- 4/231 -
1.1.1 Cours
i = 5.2
J'attire votre attention que nous utilisons un point à la place d'une virgule (convention anglo-saxonne).
Un nom peut donc être associé à plusieurs types d'entités (pour l'instant nous n'en avons vu que deux, mais nous en verrons
d'autres plus loin) : les nombres entiers ("integer" en anglais, abrégé en "int") et les nombres à virgule ("float" en anglais).
Il est
possible de connaitre le type de l'entité à l'aide de l'instruction "type".
a = 5
b = 5.4
un type(a) donnera comme résultat int alors qu'un type(b) donnera float
3) un peu de calculs
Un ordinateur est bien évidemment capable d'effectuer des opérations mathématiques (arithmétiques).
Les signes utilisés sont classiques : +, - , * (multiplication), / (division), // (division euclidienne) ou encore % (modulo : reste d'une
division euclidienne).
Il est tout à fait possible d'effectuer des opérations directement avec des nombres, mais il est aussi possible d'utiliser des
variables.
a
b
c
d
e
f
g
h
=
=
=
=
=
=
=
=
5
16
3.14 / 2
b / a
b // a
b % a
a + b
a
Considérons maintenant le programme suivant :
a = 11
a = a + 1
D'après vous, quelle est la valeur de la variable a après l'exécution du programme ci-dessus ?
La réponse est 12.
Détaillons ce qui se passe dans ce programme :
Nous créons une variable : le nom a est associé à l'entier 11.
La suite est un peu plus complexe, mais très importante à
comprendre.
Il va falloir lire la ligne a = a + 1 de droite à gauche, décortiquons cette ligne :
• a + 1 : nous prenons la valeur actuelle associée au nom a (c'est-à-dire 11) et nous ajoutons 1 à 11, à droite de l'égalité nous
avons donc maintenant la valeur 12
• nous associons la valeur qui vient d'être calculée au nom a
Donc la valeur de a est bien 12
Ce raisonnement peut être généralisé pour éviter des erreurs parfois difficiles à corriger : dans une égalité, commencer toujours
par évaluer l'expression se trouvant à droite du signe égal.
L'opération
a = a + 1
se nomme une incrémentation.
4) chaînes de caractères
A) NOTION DE CHAÎNE DE CARACTÈRES
On peut aussi associer des noms à des suites de caractères que l'on appelle "chaîne de caractères".
- 5/231 -
1.1.1 Cours
ma_chaine = "Bonjour le monde !"
Le contenu de la variable ma_chaine est de type string et donc un type(ma_chaine) donnera un str (abréviation de string en
Python)
B) LE SIGNE + ET LES CHAÎNES DE CARACTÈRES
L'utilisation du signe + ne se limite pas à l'addition.
Il est aussi utilisé pour la concaténation.
D'après Wikipédia :
« Le terme concaténation (substantif féminin), du latin cum («avec») et catena(«chaîne, liaison»), désigne l'action de mettre bout
à bout au moins deux chaînes.
»
Si on considère le programme suivant :
a = "Hello"
b = "World"
mon_expression = a + b
après l'exécution de ce programme, la variable mon_expression aura pour valeur HelloWorld
Il est aussi possible de concaténer une chaîne de caractères et une ou plusieurs variables :
ma_chaine_1 = "Bonjour "
ma_chaine_2 = "le "
res = ma_chaine_1 + ma_chaine_2 + "monde!"
Après l'exécution de ce programme, la variable res aura pour valeur Bonjour le monde!
Les 2 noms ma_chaine_1 et ma_chaine_2 sont associés à 2 chaînes de caractères, nous avons donc bien ici une concaténation.
Que se passe-t-il si nous avons ce cas de figure :
a = "Nombre de pommes : "
b = 4
c = a + b
a est de type str alors que b est de type int.
Le signe plus représente une addition ou une concaténation ? Ni l'un, ni l'autre,
puisque Python vous renverra une erreur : il ne peut pas concaténer un entier et une chaîne de caractère.
La solution : transformer le nombre 4 en caractère 4 à l'aide du mot clé str:
a = "Nombre de pommes : "
b = 4
c = a + str(b)
nous avons maintenant une concaténation, car str(4) est de type string.
Autre solution pour faire cohabiter des variables de type int ou float avec des....
»
↓↓↓ APERÇU DU DOCUMENT ↓↓↓
Liens utiles
- cours NSI premiere circuits et logique booleenne
- Grand oral NSI: la voiture autonome la voiture de demain ?
- Peut-on prédire les cours de la bourse a l'aide des mathematiques ?
- Cours: Histoire des institutions politiques
- Cours droit constitutionnel