Académique Documents
Professionnel Documents
Culture Documents
Cours1+2 L1 2023-2024
Cours1+2 L1 2023-2024
Cours1+2 L1 2023-2024
• Traitement de mesures
• Analyse de données
• Simulations
• Gestion de données
Aspects généraux
• En quoi un scientifique aujourd’hui doit-il maîtriser
l’informatique ?
Le but du cours :
• De l’informatique
Apprendre les pour scientifiques
bases informatiques :
nécessaires
pour bien appréhender la suite du cursus à
l’université, quel que soit le parcours choisi
• Traitement de mesures
Donner des principes rigoureux pour résoudre un
problème donné en utilisant des moyens
• Analyse de données
informatiques
• Gestion de données
Ce qu’on va apprendre dans
ce cours sur les algorithmes
• Un langage « simple », commun qui permet de décrire
sans ambiguïté les opérations « mathématiques/
informatiques » qui permettent d’arriver à résoudre un
problème
• 9 séances de CM
Contrôle continu
Machine learning
Autres paradigmes de programmation
La machine peut-elle apprendre comme
Il n’y a pas qu’une seule manière de
l’humain ? Quelle algorithmique derrière
résoudre un problème….
cela ?
tortue = Turtle()
tortue.forward(100)
tortue.left(120)
tortue.forward(100)
tortue.left(120)
tortue.forward(100)
Résumé
• Algorithmique et programmation : deux langages à
maîtriser
• Un enjeu : éviter l'ambiguïté
● Protocole expérimental
http://www.limsi.fr/Individu/gendner/analyse_texte/2002/03-ambiguite.html
Les deux bases des
algorithmes
Fin
Ecrire(x); Corps=Description du calcul et des
interactions
Ecrire un algorithme
Saisie par l’utilisateur Commentaires
Algorithme Résolution
// algorithme qui résoud une équation du premier degré
Variables
x, a, b : réels;
Début
a ← Saisie(); // L’utilisateur doit entrer un réel
b ← Saisie(); // L’utilisateur doit entrer un réel non nul
x ← -b / a;
Ecrire(x);
Fin
AlgorithmeCalcule âge
Variables
Début
Fin
Un exercice typique ?
Ecrire un algorithme qui demande à l’utilisateur de saisir une année de naissance
et calcule l’âge qu’aura la personne au 31 décembre 2020 à minuit.
AlgorithmeCalcule âge
Variables
année :
entier
age: entier
Début
Fin
Un exercice typique ?
Ecrire un algorithme qui demande à l’utilisateur de saisir une année de naissance
et calcule l’âge qu’aura la personne au 31 décembre 2020 à minuit.
AlgorithmeCalcule âge
Variables
année :
entier
age: entier
Début
année ←
Saisie();
age ← 2020 -
année;
Ecrire(age);
Fin
Un exercice typique ?
Ecrire un algorithme qui demande à l’utilisateur de saisir une année de naissance
et calcule l’âge qu’aura la personne au 31 décembre 2020 à minuit.
AlgorithmeCalcule âge
Variables
année : en Python:
entier
age: entier # Algorithme Calcule age
Début
année ← # variables annee,age
Saisie();
age ← 2020 - annee = int(input())
année; age = 2020 - annee
Ecrire(age); print(age)
Fin
Les Variables
Nom, types, etc….
Accéder à la mémoire de
l’ordinateur….
● Mémoire de l'ordinateur ≈ très grand espace
découpé en cases.
0x7fff10150008
32 18
13
0x
7f
27
ff 31
10
● Mémoire de l'ordinateur ≈3 très grand espace
15
00
04
185
0x7
fff 12
découpé en cases. 101
75 13 2 131
500
00
0x7ff
f1014
fffc
154
27
● Chaque case
140734539115
31
porte ainsi
480
un numéro (adresse) pour
s’y retrouver.
0x7fff10150008
32 18
13
0x
age
7f
27
ff 31
x 10
● Mémoire de l'ordinateur ≈3 très grand espace
15
00
04
185
…..
0x7
fff 12
découpé en cases. 101
75 13 2 131
500
00
0x7ff
f1014
fffc
154
27
● Chaque case
140734539115
31
porte ainsi
480
un numéro (adresse) pour
s’y retrouver.
0x7fff10150008
32 18
13
0x
age
7f
27
ff 31
x 10
● Mémoire de l'ordinateur ≈3 très grand espace
15
00
04
185
…..
0x7
fff 12
découpé en cases. 101
75 13 2 131
500
00
0x7ff
f1014
fffc
154
27
● Chaque case
variable ≈ nom31
140734539115 porte ainsi un numéro (adresse) pour
à une (ou un ensemble de) case(s) pour
480
s’y retrouver.
simplifier l’accès à la mémoire….
● un nom (identifiant)
● un type
● Rq : depuis
Moralité le passage
: on peut à Python
coder les entiers 3, les “int”
avec uniquement dessont devenus
bits (0 et 1).
des entiers dont la seule limite est le nombre de bits
disponibles en mémoire pour pouvoir les coder.
Les types de base
2 - Les numériques « réels »
● Les réels en maths = éléments de R
● ’X’ ou “X”
● ’X’
● ’’Moralité
: la chaîne de caractères
: on peut « vide
coder les chaînes » joue un
de caractères parrôle très de
une suite
important
plusieurs entiers et donc uniquement avec des bits (0 et 1) !
Les types de base
4 - Les booléens
● Remarques :
(8+51)<(16+5)
59<21
Faux
Opérations de base pour
1 - Les « entiers »
● Les opérations + (addition), - (soustraction), *
(multiplication), div (division entière) et mod (reste
de la division entière)
● 5+3 vaut 8
● 5+3 vaut 8
● 5+3 vaut 8
Attention ! Les calculs se font sur des nombres flottants ! On ne peut pas tout
représenter ! Par exemple :
● 17/3 vaut 5.6666666667
● 5+3 vaut 8
Attention ! Les calculs se font sur des nombres flottants ! On ne peut pas tout
représenter ! Par exemple :
● 17/3 vaut 5.6666666667
non Vrai
Faux
77
Tables de vérité (1)
Faux Vrai
77
Tables de vérité (2)
Vrai Vrai
Vrai Faux
et
Faux Vrai
Faux Faux
78
Tables de vérité (2)
78
Tables de vérité (3)
Vrai Vrai
Vrai Faux
ou
Faux Vrai
Faux Faux
79
Tables de vérité (3)
79
Évaluer une expression
● 1+2+3 = ?
● (1+2)*3 = ?
● 1+2*3 = ?
● x*y = ?
● x<7+y = ?
t
x 12 5 ‘s’
y
Les comparaisons en Python
● Elles s’écrivent
nom_variable ← expression
● Elles s’écrivent
nom_variable ← Saisie()
● Ex : x ← Saisie()
● Elles s’écrivent
Ecrire(expression)
● Ex : Ecrire(‘Bonjour le monde’)
● On parle de séquentialité.
Ex : x ← 5;
y ← x+10; //La valeur de x utilisée ici est
5
Exemple d’évaluation
y ← 5 * (x + 10);
Exemple d’évaluation
y ← 5 * (x + 10);
Etape no 1 : on reconnaît que l’instruction est une affectation car
elle est bien de la forme « variable ← expression ».
Exemple d’évaluation
y ← 5 * (x + 10);
Etape no 1 : on reconnaît que l’instruction est une affectation car
elle est bien de la forme « variable ← expression ».
Etape no 2 : on évalue l’expression « 5*(x+10) ». Pour cela, il faut
chercher en mémoire la valeur associée à la variable x
x
x
110 12
yy
Exemple d’évaluation
y ← 5 * (x + 10);
Etape no 1 : on reconnaît que l’instruction est une affectation car
elle est bien de la forme « variable ← expression ».
Etape no 2 : on évalue l’expression « 5*(x+10) ». Pour cela, il faut
chercher en mémoire la valeur associée à la variable x
Etape no 3 : l’expression est donc « 5*(12+10) ». Compte-tenu
des priorités (classiques) des opérations, l’expression vaut 110.
x
x
110 12
yy
Exemple d’évaluation
y ← 5 * (x + 10);
Etape no 1 : on reconnaît que l’instruction est une affectation car
elle est bien de la forme « variable ← expression ».
Etape no 2 : on évalue l’expression « 5*(x+10) ». Pour cela, il faut
chercher en mémoire la valeur associée à la variable x
Etape no 3 : l’expression est donc « 5*(12+10) ». Compte-tenu
des priorités (classiques) des opérations, l’expression vaut 110.
x
x
110 12
yy
L’historique d’exécution
● Pour bien comprendre le fonctionnement d’un algorithme, on peut
construire un tableau représentant l’évolution de l’état de la mémoire
au cours d’une exécution de l’algorithme.
Instructions v1 … vi … vm
Avant I1
Après I1
Après I2
…
Après In
Est ce que les meilleures types de variables sont celles qui consomment le moins de bit?
Pourquoi utiliser deux langages différents pour les TDs et les TPs?
Lors d'un test d'egalité, Java affiche directement Vrai ou Faux où il faut rajouter quelque chose derrière (Écrire(...)) pour
qu'il affiche une des 2 réponses ?
Est-ce que si l'on met une valeur réel dans une variable défini comme entière, l'ordinateur ne affiche un message
d'erreur ?
Si l'on veut assigner un point d'interrogation à une variable , comment ne pas confondre avec le fait qu'elle pourrait aussi
ne pas avoir de valeur encore assignée ?