aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnhgelus Morhtuuzh <william@herges.fr>2025-10-10 23:15:18 +0200
committerAnhgelus Morhtuuzh <william@herges.fr>2025-10-10 23:15:18 +0200
commit4ed8060318b1807638c12b8b43660bb98fc99fba (patch)
tree976f9b6be6cfbb72c3c908e2e1e60069f5a4296a
parent85fbaa4d9381e435be129aa7bc4ea6a472acb2b2 (diff)
Cours du 6 au 10 octobre
-rw-r--r--semestre 3/architecture des ordinateurs/2- Programmation en ASM Mips.md88
-rw-r--r--semestre 3/architecture des ordinateurs/td/25-10-08.md71
-rw-r--r--semestre 3/architecture des ordinateurs/tme/tme3/exercice5.asm43
-rw-r--r--semestre 3/architecture des ordinateurs/tme/tme4/exo1.asm6
-rw-r--r--semestre 3/architecture des ordinateurs/tme/tme4/exo2.asm32
-rw-r--r--semestre 3/architecture des ordinateurs/tme/tme4/exo3.asm19
-rw-r--r--semestre 3/architecture des ordinateurs/tme/tme4/exo4.asm31
-rw-r--r--semestre 3/architecture des ordinateurs/tme/tme4/exo5.asm30
-rw-r--r--semestre 3/histoire philosophie médiévale/1- Augustin et le scepticisme.md30
-rw-r--r--semestre 3/histoire philosophie médiévale/td/3-.md17
-rw-r--r--semestre 3/logique et notions formelles/3- Logique des prédicats.md45
-rw-r--r--semestre 3/logique et notions formelles/td/25-10-06.md33
-rw-r--r--semestre 3/mathématiques discrètes/td/25-10-10.pdfbin0 -> 156126 bytes
-rwxr-xr-xsemestre 3/mathématiques discrètes/td/25-10-10.tex87
-rw-r--r--semestre 3/philosophie générale/1- Sémiotique.md51
-rw-r--r--semestre 3/philosophie générale/td/0- Introduction.md3
-rw-r--r--semestre 3/philosophie générale/td/2- Husserl.md50
-rw-r--r--semestre 3/philosophie politique/0- Introduction.md6
-rw-r--r--semestre 3/philosophie politique/1- Enquêter.md29
-rw-r--r--semestre 3/philosophie politique/géographie-des-systèmes-judiciaires.pngbin0 -> 263938 bytes
-rw-r--r--semestre 3/structures des données/5- File de priorité.md65
-rw-r--r--semestre 3/structures des données/td/td4/exo1.c49
-rw-r--r--semestre 3/structures des données/tme/tme3-5/exo1/entreeSortieLC.c19
-rw-r--r--semestre 3/structures des données/tme/tme3-5/exo1/main.c32
24 files changed, 783 insertions, 53 deletions
diff --git a/semestre 3/architecture des ordinateurs/2- Programmation en ASM Mips.md b/semestre 3/architecture des ordinateurs/2- Programmation en ASM Mips.md
index f49db8f..0e1de16 100644
--- a/semestre 3/architecture des ordinateurs/2- Programmation en ASM Mips.md
+++ b/semestre 3/architecture des ordinateurs/2- Programmation en ASM Mips.md
@@ -236,7 +236,7 @@ Quand on utilise la mémoire, on a besoin de copier les valeurs dans les registr
Signature des instructions d'accès mémoire : `Codop Rt, Imm16(Rs)`
|> `Rt` est la destination ou le registre source
-|> `Imm16(Rs)` est la zone mémoire avec `Rs` étant le décallage
+|> `Imm16(Rs)` est la zone mémoire avec `Rs` étant le décalage en octet
On se place tjs du côté du processeur pour les opcodes
|> `l.` servent à *load*
@@ -251,4 +251,88 @@ lh $4, 4($3) # load le half-word contenu dans l'adresse 4 + $3 dans $4
lw $4, -2(3) # load le word contenu dans l'adresse -2 + 3 dans $4
```
-Par défaut, tout est signé, si on veut être en non signé, on rajoute `u`, i.e. `lhu` pour récupérer un `uint16` \ No newline at end of file
+Par défaut, tout est signé, si on veut être en non signé, on rajoute `u`, i.e. `lhu` pour récupérer un `uint16`
+
+Il n'existe pas de pointeur
+|> besoin de mettre à jour la mémoire
+|> faut faire attention aux problèmes de synchronisation
+
+Il y a toujours au moins un transfert mémoire vers CPU
+|> est celui qui place le code dans IR
+## Structures de contrôle
+Pour ne plus faire une instruction séquentielle, on doit faire des sauts
+|> deux types : inconditionnels et conditionnels
+-> changent PC
+
+Sauts inconditionnels -> les jumps (commencent par `j`)
+|> `j label` saute au label
+|> `jr Rt` saute à valeur contenu dans Rt
+
+Sauts conditionnels -> les branchements (commencent par `b`)
+|> saute si une condition est vraie
+|> voir le memento
+
+Afficher la valeur absolue d'un nombre
+```asm
+.data
+n: .word -1
+
+.text
+ lui $3, 0x10010000
+ lw $4, 0($3)
+
+# syntaxe du *if then* ici
+ bgez $4, show
+ sub $4, $0, $4
+show:
+ ori $2, $0, 1
+ syscall
+
+ ori $2, $0, 10
+ syscall
+```
+
+Pour utiliser plusieurs conditions, on a besoin d'utiliser une instruction avant
+|> `slt $10, $8, $9` met `$10` à `1` si `$8 < $9`, il le met à `0` sinon
+-> on utilise un branchement après
+|> si on veut une comparaison large $a\leqslant b$, on vérifie si $a > b$ est faux
+
+Pour faire un `if else`, on fait :
+```asm
+ bcond ..., $0, else
+ # instruction du if
+ j next
+else:
+ # instruction du else
+next:
+ # suite
+```
+
+Pour faire un `while`, on fait :
+```asm
+boucle:
+ bcond ..., $0, next
+ # instruction du while
+ j boucle
+next:
+ # suite
+```
+
+Le codage de `j label` est
+|> `00010 Immédiat_sur_26_bits`
+-> besoin de calculer la bonne adresse pour qu'elle soit sur 26 bits
+|> on fait `PC = PC[31:28] | I * 4`
+|> `PC[31:28]` permet de rester dans la partie code
+|> `I` est l'immédiat avec en plus `[1:0]` qui sont nuls car multiple de 4
+|> `* 4` provient du multiple de 4
+
+Branchement sont en format I
+|> immédiat est donc sur 16 bits
+-> on a tjs besoin de le mettre sur 32 bits
+|> on fait `PC = PC + 4 + (I * 4)`
+|> le calcul du PC suivant est donc relatif à la ligne d'instruction en cours
+
+**Dans tous les cas, on a besoin de savoir où se trouve l'étiquette pour la coder**
+|> on a donc besoin de le faire en deux étapes (on les appelle "passe")
+1. on s'occupe de toutes les instructions sans traiter les étiquettes
+2. on traite les étiquettes après qu'on connait bien tout \ No newline at end of file
diff --git a/semestre 3/architecture des ordinateurs/td/25-10-08.md b/semestre 3/architecture des ordinateurs/td/25-10-08.md
new file mode 100644
index 0000000..45c488e
--- /dev/null
+++ b/semestre 3/architecture des ordinateurs/td/25-10-08.md
@@ -0,0 +1,71 @@
+---
+tags:
+ - sorbonne
+ - informatique
+ - architecture-des-ordinateurs
+ - td
+semestre: 3
+---
+`.text` permet de donner les instructions
+`.data` permet de mettre des variables globales en mémoire
+-> elles sont chargées en mémoire
+|> `.data` est dans la partie donnée utilisateur
+|> `.text` est dans la partie dédiée au programme
+
+La mémoire user commence en `0x10010000`
+
+La directive `.align` permet d'aligner les `.space`
+
+Pour init des chaînes de caractère, on utilise `.asciiz` pour bien rajouter le caractère de fin de chaîne !
+
+`sw $9, 4($8)` est `0b101011 01000 01001 0000 0000 0000 0100`
+
+```asm
+.data
+var1: .word 0xFF
+ .align 2
+var2: .space 4
+.text
+ lui $8,0x1001
+ ori $8,$8,0x0000
+ lw $9,0($8)
+ addiu $9,$9,5
+ sw $9,4($8) # 4 car c'est un word
+
+ ori $2, $0, 10
+ syscall
+```
+
+```c title="équivalent du programme assembleur du dessus"
+int var1 = 255;
+int var2;
+
+int main(){
+ var2 = 47 + 5;
+ return 0;
+}
+```
+
+| Adresse | octet $n$ | octet $n+1$ | octet $n+2$ | octet $n+3$ | mot |
+| ---------- | --------- | ----------- | ----------- | ----------- | ---------- |
+| 0x10010000 | 0x00 | 0x01 | 0x00 | 0x00 | 0x00000100 |
+| 0x10010004 | 0x11 | 0x22 | 0x33 | 0xFF | 0xFF332211 |
+| 0x10010008 | 0x31 | 0x32 | 0x33 | 0x00 | "123" |
+| 0x1001000c | | | | | |
+```asm
+.data
+tab: .word 1,2,34,256,-1
+chaine: .asciiz "toto"
+.text
+ lui $8, 0x1001
+ lw $4, 12($8)
+ ori $2, $0, 1
+ syscall
+
+ addiu $9, $8, 20 # récupère l'addresse de la chaîne
+ lw $4, 8($9)
+ syscall
+
+ ori $2, $0, 10
+ syscall
+```
diff --git a/semestre 3/architecture des ordinateurs/tme/tme3/exercice5.asm b/semestre 3/architecture des ordinateurs/tme/tme3/exercice5.asm
index 16cece8..b9c3fb0 100644
--- a/semestre 3/architecture des ordinateurs/tme/tme3/exercice5.asm
+++ b/semestre 3/architecture des ordinateurs/tme/tme3/exercice5.asm
@@ -1,24 +1,31 @@
.data
.text
lui $3, 0xAABB
- ori $3, $3, 0xCCDF
+ ori $3, $3, 0xCCDD
- # variable définissant le bit qu'on déplace
- ori $4, $0, 3
- # on génère le mask pour sélectionner le bit
-st: ori $8, $0, 1 # est le mask
- ori $9, $0, 3 # est le décallage pour le mask
- subu $9, $9, $4 # le nombre de décallage du bit pour le mask
- sllv $8, $8, $9 # on génére le mask
- # on applique le mask
- and $10, $3, $8 # on sélectionne le bon bit
- srlv $10, $10, $4 # on décalle le bit
- # on ajoute le résultat
- or $5, $5, $10
- # on boucle
- ori $11, $0, 1
- subu $4, $4, $11
- bgez $4, st
+ # on sélectionne o_1, on le décalle de 3, on l'ajoute
+ # on sélectionne o_2, on le décalle de 2, on l'ajoute
+ # on sélectionne o_3, on le décalle de 1, on l'ajoute
+ # on sélectionne o_4, on le décalle de 0, on l'ajoute
+
+ ori $6, $0, 31 # est le nombre - 1 de bit à modifier
+ or $7, $0, $6 # est notre i de la boucle qui bouge
+repeat:
+ ori $8, $0, 1 # masque
+ sub $10, $6, $7 # décallage pour sélection
+ sllv $8, $8, $10 # on adapte notre masque pour prendre le bon
+ and $9, $3, $8 # on sélectionne le bit
+ srlv $9, $9, $10 # on remet le bit à l'origine
+ sllv $9, $9, $7 # on le décalle
+ or $4, $4, $9 # on l'ajoute
+ # on calcule le nouveau i dans $7
+ ori $12, $0, 1
+ sub $7, $7, $12
+ # on boucle si $7 >= 0
+ bgez $7, repeat
+
+ ori $2, $0, 35
+ syscall
ori $2, $0, 10
- syscall \ No newline at end of file
+ syscall
diff --git a/semestre 3/architecture des ordinateurs/tme/tme4/exo1.asm b/semestre 3/architecture des ordinateurs/tme/tme4/exo1.asm
new file mode 100644
index 0000000..da99bd9
--- /dev/null
+++ b/semestre 3/architecture des ordinateurs/tme/tme4/exo1.asm
@@ -0,0 +1,6 @@
+.data
+o1: .byte 1
+o2: .byte 2
+o3: .byte 3
+o4: .byte 4
+m1: .word 0xAABBCCDD \ No newline at end of file
diff --git a/semestre 3/architecture des ordinateurs/tme/tme4/exo2.asm b/semestre 3/architecture des ordinateurs/tme/tme4/exo2.asm
new file mode 100644
index 0000000..9c66651
--- /dev/null
+++ b/semestre 3/architecture des ordinateurs/tme/tme4/exo2.asm
@@ -0,0 +1,32 @@
+.data
+v1: .word -1
+v2: .word 0xFF
+
+o: .byte 0xFF
+.text
+ lui $8, 0x1001
+ lw $9, 0($8)
+ or $4, $0, $9
+ ori $2,$0,1
+ syscall
+
+ lw $10, 4($8)
+ or $4, $10, $10
+ syscall
+
+ addi $9, $9, 1
+ sw $9, 0($8)
+ addi $10, $10, 1
+ sw $10, 4($8)
+
+ addi $8, $8, 8 # on récupère l'adresse de o
+ lb $9, 0($8)
+ or $4, $0, $9
+ syscall # affiche -1 car il l'étend
+ lbu $10, 0($8)
+ or $4, $0, $10
+ syscall # affiche 255 car il n'est pas signé
+
+ ori $2, $0, 10
+ syscall
+ \ No newline at end of file
diff --git a/semestre 3/architecture des ordinateurs/tme/tme4/exo3.asm b/semestre 3/architecture des ordinateurs/tme/tme4/exo3.asm
new file mode 100644
index 0000000..4ccd63a
--- /dev/null
+++ b/semestre 3/architecture des ordinateurs/tme/tme4/exo3.asm
@@ -0,0 +1,19 @@
+.data
+ch: .asciiz "coucou"
+.text
+ lui $8, 0x1001
+ ori $2, $0, 4
+ or $4, $0, $8
+ syscall
+
+ # on garde en mémoire les deux caractères
+ lb $9, 0($8)
+ lb $10, 1($8)
+ # on les échanges
+ sb $9, 1($8)
+ sb $10, 0($8)
+ # et on affiche
+ syscall
+
+ ori $2, $0, 10
+ syscall \ No newline at end of file
diff --git a/semestre 3/architecture des ordinateurs/tme/tme4/exo4.asm b/semestre 3/architecture des ordinateurs/tme/tme4/exo4.asm
new file mode 100644
index 0000000..28a4c30
--- /dev/null
+++ b/semestre 3/architecture des ordinateurs/tme/tme4/exo4.asm
@@ -0,0 +1,31 @@
+# "123456" = 0x31 32 33 34 35 36 00
+.data
+cod: .byte 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x00
+.text
+ lui $8, 0x1001
+ ori $2, $0, 4
+ or $4, $0, $8
+ syscall
+
+ lb $16, 2($8)
+ or $4, $0, $16
+ ori $2, $0, 1
+ syscall
+
+ # "0" est représenté par 0x30
+ # les autres chiffres sont à la suite de 0x30 jusqu'à 0x39 ("9")
+ # pour transformer le code ASCII d'un chiffre en chiffre, il suffit donc de lui soustraire 0x30 pour obtenir le chiffre
+
+ # on a besoin de mettre 0x30 dans un registre car l'opcode subi n'existe pas
+ ori $9, $0, 0x30
+ sub $17, $16, $9
+ or $4, $0, $17
+ syscall
+
+ ori $18, $0, 0x34 # est l'ascii de "4"
+ sub $18, $18, $9
+ or $4, $0, $18
+ syscall
+
+ ori $2, $0, 10
+ syscall \ No newline at end of file
diff --git a/semestre 3/architecture des ordinateurs/tme/tme4/exo5.asm b/semestre 3/architecture des ordinateurs/tme/tme4/exo5.asm
new file mode 100644
index 0000000..c63dc69
--- /dev/null
+++ b/semestre 3/architecture des ordinateurs/tme/tme4/exo5.asm
@@ -0,0 +1,30 @@
+.data
+tab: .word 4, 23, 12, 3, 8, 1
+ .align 2
+s: .space 4
+ .align 2
+p: .space 4
+.text
+ lui $8, 0x1001 # @tab
+ addiu $9, $8, 24 # @s
+ addiu $10, $9, 4 # @p
+ # s = tab[3]
+ lw $11, 12($8)
+ sw $11, 0($9)
+ # p = tab[4]
+ lw $12, 16($8)
+ sw $12, 0($10)
+
+ # tab[0] = s + 1
+ addi $13, $11, 1
+ sw $13, 0($8)
+ # tab[1] = s + p
+ add $13, $11, $12
+ sw $13, 4($8)
+ # tab[2] = tab[5]
+ lw $13, 20($8)
+ sw $13, 8($8)
+
+ # exit()
+ ori $2, $0, 10
+ syscall \ No newline at end of file
diff --git a/semestre 3/histoire philosophie médiévale/1- Augustin et le scepticisme.md b/semestre 3/histoire philosophie médiévale/1- Augustin et le scepticisme.md
index 965deaf..12cafc5 100644
--- a/semestre 3/histoire philosophie médiévale/1- Augustin et le scepticisme.md
+++ b/semestre 3/histoire philosophie médiévale/1- Augustin et le scepticisme.md
@@ -41,4 +41,32 @@ i.e.
- est exactement conforme à ce qui est
- est telle qu'elle ne saurait provenir ce qui n'est pas
-Pour les stoïciens, le sage peut distinguer les choses identiques grâce aux représentations cataleptiques \ No newline at end of file
+Pour les stoïciens, le sage peut distinguer les choses identiques grâce aux représentations cataleptiques
+
+**Rattraper jusqu'au « cogito augustinien »** (texte sur Moodle)
+|> critique du scepticisme et notamment de leur prise de distance supposée des théories de Zénon
+|> prétention à la sagesse du scepticisme alors que leur attitude est négative
+
+Augustin cherche alors à avancer des vérités résistants au doute sceptique
+1. l'existence d'un monde (le notre) est indubitable -> les vérités évidentes (provenant du tiers exclu) résistent au doute
+2. le sceptique le plus radical ne peut pas soutenir que rien nous apparaît dans la perception sensible -> il y a au moins une chose qui nous apparaît
+3. s'il y a 6 mondes et un autre, alors il y en a 7 -> les vérités mathématiques sont certaines
+4. ses propres perceptions sont aussi certaines pour moi au moment où les choses m'apparaissent
+
+Construction de la théorie de la probabilité sceptique pour résoudre l'apraxie ne fonctionne pas
+|> probabilité n'est pas dans le sens du "plus probablement vrai"
+|> probables sont les impressions dont il est impossible de douter, il s'agit d'une tranquillité en pratique (⚠ la vision d'Augustin n'est pas neutre et ne suit pas forcément ça)
+-> celui ne doutant pas arrive plus rapidement à ses fins
+|> la mise en pratique est donc peu utile en pratique
+-> ce qui parait probable est souvent ce qui est le plus immoral en moi
+|> semble être une pétition de principe, car suppose que la morale est objective
+
+Le scepticisme se voit vraiment comme une réaction au dogmatisme stoïcien
+|> Augustin le sait et ne veut pas retomber dans ce dogmatisme
+-> construit la « fable » des deux Académies
+|> les académiciens ont essayé de se protéger du danger matérialiste (des stoïciens)
+|> les nouveaux académiciens adoptent le scepticisme tout en restant platonicien
+*manque la fin de la fable (page 15)*
+
+> [!warning] Augustin dit que c'est la pensée de Cicéron, mais rien ne le prouve
+> Aucun texte, aucune source ne permet de confirmer que c'était bien les idées de Cicéron
diff --git a/semestre 3/histoire philosophie médiévale/td/3-.md b/semestre 3/histoire philosophie médiévale/td/3-.md
new file mode 100644
index 0000000..075facf
--- /dev/null
+++ b/semestre 3/histoire philosophie médiévale/td/3-.md
@@ -0,0 +1,17 @@
+---
+tags:
+ - sorbonne
+ - philosophie
+ - histoire-philosophie-médiévale
+ - td
+semestre: 3
+---
+La majorité des informations sceptique ne proviennent pas des maître, mais de sources secondaires
+|> les grands sceptiques n'ont rien écrit (comme Pyhrron)
+
+**Faire la liste des 7 arguments contres la possibilité de la connaissance**
+|> à partir de la page 5 PDF
+
+Relativisme sensoriel de l'arg 3 est classique
+
+Les arguments sceptiques sont surtout le 2, 3 et 4 \ No newline at end of file
diff --git a/semestre 3/logique et notions formelles/3- Logique des prédicats.md b/semestre 3/logique et notions formelles/3- Logique des prédicats.md
new file mode 100644
index 0000000..f4d48bc
--- /dev/null
+++ b/semestre 3/logique et notions formelles/3- Logique des prédicats.md
@@ -0,0 +1,45 @@
+---
+tags:
+ - sorbonne
+ - philosophie
+ - logique-notions-formelles
+semestre: 3
+---
+Différence entre logique propositionnelle et celle des prédicats est la présence des quantificateurs
+
+Sans quantificateur, on ne peut pas bien retranscrire tous les arguments
+
+- Tous les philosophes sont des mammifères
+- Descartes est un philosophe
+-> Descartes est un mammifère
+
+La version formelle est "`p` et `q`, donc `r`"
+|> impossible de vérifier formellement
+-> la logique des prédicats décompose les énoncés atomiques pour se libérer de ce problème
+
+"Léon voit la Tour Eiffel"
+|> deux désignateurs/termes : "Léon" et "Tour Eiffel"
+|> prédicat "voit" relie les deux
+-> on touche au langage non logique
+
+L'arité est le nombre de termes utilisés par un prédicat
+|> unaire, binaire, ternaire, 4-aire...
+|> on indique l'arité en exposant, i.e. $A^2$ indique que le prédicat $A$ est binaire
+
+Pour écrire "Thomas aime Marie", on ***doit*** l'écrire comme ça :
+- $A^2$ : ...aime...
+- $t$ : Thomas
+- $m$: Marie
+- $A^2tm$
+
+> [!warning] L'ordre est important !
+
+$\forall$ permet de traduire les "tous"
+$\exists$ permet de traduire les "certains", "il existe"...
+
+Les quantificateurs sont toujours utilisés comme ça :
+$$ \forall x(Ax\to Bx) $$
+Les parenthèses ne viennent pas des quantificateurs, elles viennent toujours des relations binaires
+|> elles sont obligatoires
+
+$\forall e,\exists o(P^2eo)$ \ No newline at end of file
diff --git a/semestre 3/logique et notions formelles/td/25-10-06.md b/semestre 3/logique et notions formelles/td/25-10-06.md
new file mode 100644
index 0000000..0cf7c35
--- /dev/null
+++ b/semestre 3/logique et notions formelles/td/25-10-06.md
@@ -0,0 +1,33 @@
+---
+tags:
+ - sorbonne
+ - philosophie
+ - logique-notions-formelles
+ - td
+semestre: 3
+---
+$L^1$: ...est un logicien
+$C^1$: ... est célèbre
+$g$: Gödel
+$(L^1g\land C^1g)$
+
+$P^1$: ...est une porte
+$O^1$: ... est ouvert
+$\forall p(P^1p\to O^1p)$
+$\exists p(P^1p\to \lnot O^1p)$
+$\forall p(P^1p\to \lnot O^1p)$
+
+$C^1$: ...est un grand chien
+$G^1$: ...est gentil
+$\exists c(C^1c\land G^1c)$
+
+$E^1$: ...est un économiste
+$R^1$: ... est riche
+$\varphi^1$: ...est un philosophe
+$S^1$: ...est sage
+$(\exists e(E^1e\land R^1e)\to \exists\phi (\varphi^1\phi\land S^1\phi))$
+
+$t$: Tom
+$V^1$: ...est une voiture
+$P^2$: ...possède...
+$\exists v (V^1v\to P^2tv)$
diff --git a/semestre 3/mathématiques discrètes/td/25-10-10.pdf b/semestre 3/mathématiques discrètes/td/25-10-10.pdf
new file mode 100644
index 0000000..97d0e05
--- /dev/null
+++ b/semestre 3/mathématiques discrètes/td/25-10-10.pdf
Binary files differ
diff --git a/semestre 3/mathématiques discrètes/td/25-10-10.tex b/semestre 3/mathématiques discrètes/td/25-10-10.tex
new file mode 100755
index 0000000..5a988b2
--- /dev/null
+++ b/semestre 3/mathématiques discrètes/td/25-10-10.tex
@@ -0,0 +1,87 @@
+\documentclass[a4paper]{article}
+
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{textcomp}
+\usepackage[french]{babel}
+\usepackage{amsmath, amssymb}
+\usepackage{amsthm}
+\usepackage[svgnames]{xcolor}
+\usepackage{thmtools}
+\usepackage{lipsum}
+\usepackage{framed}
+\usepackage{parskip}
+
+\renewcommand{\familydefault}{\sfdefault}
+
+\newenvironment{AQT}{{\fontfamily{qbk}\selectfont AQT}}
+
+\usepackage{titlesec}
+\usepackage{LobsterTwo}
+\titleformat{\section}{\newpage\LobsterTwo \huge\bfseries}{\thesection.}{1em}{}
+\titleformat{\subsection}{\vspace{2em}\LobsterTwo \Large\bfseries}{\thesubsection.}{1em}{}
+\titleformat{\subsubsection}{\vspace{1em}\LobsterTwo \large\bfseries}{\thesubsubsection.}{1em}{}
+
+\title{TD Maths discrètes}
+\author{William Hergès\thanks{Sorbonne Université}}
+
+\begin{document}
+ \maketitle
+ \section*{Retour sur les copies}
+ Les résultats ne sont pas bons.
+ Tout le monde devrait pouvoir avoir $5/10$ (la moyenne est à $4/10$).
+ Il y a un problème de vitesse et d'apprentissage du cours.
+ \section*{Exercice 11}
+ Soient $a$ un plus grand élément de $A$ et $m$ le maximum de $A$.
+ Par anti-symétrie, $a\preceq M$ et $M\preceq a$ par leurs définitions, alors $a=M$.
+ Si $m_1$ et $m_2$ sont deux maximums de $A$, par anti-symétrie, ils sont égaux.
+
+ $\mathbb{N}\cup \{a\}$ munie de $\leqslant$ possède un élément maximal ($a$), mais pas de maximum (il n'existe pas
+ de majorant dans $\mathbb{N}$).
+
+ Soient $m_1$ et $m_2$ deux éléments maximals de $A$.
+ Comme $\preceq$ est totale, on a $m_1\preceq m_2$ et $m_2\preceq m_1$.
+ Par anti-symétrie, $m_1=m_2$, i.e. l'élément maximal est unique.
+ \section*{Exercice 10}
+ Il y a le même nombre d'élément dans $P=\mathcal{P}(\{a,b,c\})$ et dans $E=\{1,2,3,6,7,14,21,42\}$.
+ Si on définit $f$ de $P$ dans $E$ tels que $f(p) = \prod_{a\in p} a$ où l'équivalent dans $\mathbb{N}$ est
+ $\varnothing = 1$, $\{a\}=2$, $\{b\}=3$ et $\{c\}=7$.
+ Cette application est bijective (la réciproque est $f^{-1}(e) = \{p,p|e\}$ avec la même clé).
+ Elle est aussi monotone car $p_1\subseteq p_2$ et $f(p_1) | f(p_2)$ car $f(p_2)$ est une mulitple de $p_1$.
+
+ Sinon, on dessine le graphe couvrant~: c'est plus propre.
+
+ Version propre de mon idée~: après avoir défini les valeurs, on définit $f$ comme étant
+ $f(A\cup B) = f(A)\times f(B)$.
+ \section*{Exercice 16}
+ Elle n'est clairement pas bijective car $8 = f(\{1,3,4\}) = f(\{8\})$.
+ \section*{Exercice 8}
+ «~$\alpha$ est un préfixe de $\beta$~» est~:
+ $$ \forall k < \min(n_1,n_2),\quad \alpha_k = \beta_k $$
+ avec $n_1$ la taille de $\alpha$ et $n_2$ est la taille de $\beta$.
+ On note cette relation $\preceq$.
+
+ $$ (\exists i, \forall k < i, a_k = b_k \land a_i \preceq_A b_i) \lor a = b$$
+ C'est un ordre total car $\preceq_A$ est total.
+
+ Soit $n\in\mathbb{N}$.
+ On a $a^nb \preceq a^{n+1}b$.
+ Donc $\preceq$ n'est pas bien fondé.
+ \section*{Exercice en plus}
+ Soit $A$ un alphabet composé de $\{a,b\}$.
+ On définit un langage $L\subseteq A^*$ par induction structurelle~:
+ \begin{itemize}
+ \item $a\in L$
+ \item $\forall (u,v)\in L^2, uvb\in L$
+ \end{itemize}
+ Soit $u\in L$ où $u$ possède une taille de $2$.
+ Ainsi, $u$ est soit égal à $a$, soit de la forme $v_1v_2b$.
+ Donc $b$ est forcément dans $u$.
+ Ainsi, $v_1 = a$ ou $v_1 = \varepsilon$ et $v_2$ est le choix restant.
+ Or, $\varepsilon$ n'est pas dans $L$, donc $u$ est impossible.
+
+ $u\in L$.
+ Donc $aua$ est aussi dans $L$. Ainsi, le miroir de $aua$ est $a\tilde u a$.
+ Donc $bub$ est aussi dans $L$. Ainsi, le miroir de $bub$ est $b\tilde u b$.
+ Comme $\tilde u = u$, on a que la propriété est vraie.
+\end{document}
diff --git a/semestre 3/philosophie générale/1- Sémiotique.md b/semestre 3/philosophie générale/1- Sémiotique.md
index 0c7d171..75170d6 100644
--- a/semestre 3/philosophie générale/1- Sémiotique.md
+++ b/semestre 3/philosophie générale/1- Sémiotique.md
@@ -52,4 +52,53 @@ Chaque signe possède un sens uniquement dans le système général qu'est la la
|> un signe ayant un sens en dehors de la langue, n'est pas un signe de la langue
Le langage est réflexif -> il peut parler de lui-même
-Le langage permet de parler de tous les autres systèmes de signe \ No newline at end of file
+Le langage permet de parler de tous les autres systèmes de signe
+
+Husserl -> Présomption du signe est l'interprétation du lien causale entre le signe et ce qu'il indique
+|> se fonde sur l'empirisme
+|> est contingent
+-> la fumée ne vient pas toujours d'un feu
+|> ne fonctionne pas de la même manière pour l'expression linguistique
+-> parler de chien ne provoque pas le chien
+|> le lien est nécessaire
+-> si on maîtrise la langue, alors on comprend nécessairement la signification
+=> la signification n'est pas mentale
+|> on comprend la même chose, même si notre représentation mentale est différente
+|> la représentation est contingente
+-> ce sont des objets idéaux
+=> Les mots n'ont plus une fonction d'indication, mais d'expression
+
+Mais les peuvent-ils indiquer qlq chose ?
+|> les phrases indiquent les pensées de la personne
+|> on peut comprendre l'expression, mais pas l'indication (voir Kafka)
+(quand on se parle à soi-même, il n'y a pas de fonction d'indication)
+-> cette différence est fondée sur une conjecture
+|> on fait l'hypothèse de l'indication, pas de l'expression
+
+Existe-t-il un système de langage animal ?
+|> si les animaux poussent un crie spécifique à un moment, il manifeste qlq chose de spécifique (c'est le cas)
+|> ressemble à un proto-langage
+|> il semble manquer un une syntaxe
+|> le langage humain est libérer de ce contexte
+
+Descartes questionne l'existence du langage animal
+|> il explique que ce n'est pas une question d'organe -> les sourds/muets peuvent créer des signes
+|> les animaux ne peuvent pas refaire une phrase en ajoutant une négation
+-> le langage humain est combinatoire
+|> l'infini est produit par le fini
+|> Descartes explique que les animaux n'ont pas de raison car ils ne sont pas capable de faire ça
+-> il leur manque une syntaxe
+|> pourtant, diverses études biologiques ont montré qu'ils sont capables d'apprendre / d'utiliser les symboles humains
+
+Le problème du langage animal existe depuis l'antiquité
+|> néo-académiciens et stoïciens sont d'accord qu'il y a un langage extérieur
+|> néo-académiciens soutiennent que les animaux ont un langage intérieur
+-> on ne comprend pas les sons animaux, mais ça ne veut pas dire qu'ils parlent pas
+|> stoïciens défendent l'inverse, les animaux n'ont pas de langage intérieur
+->
+
+> [!warning] Descartes s'est trompé
+> Les animaux ne sont biologiquement pas capable de parler comme nous
+> |> ils n'ont pas de larynx
+>
+> Les premiers humains n'ont plus !
diff --git a/semestre 3/philosophie générale/td/0- Introduction.md b/semestre 3/philosophie générale/td/0- Introduction.md
index 81369ba..216fb92 100644
--- a/semestre 3/philosophie générale/td/0- Introduction.md
+++ b/semestre 3/philosophie générale/td/0- Introduction.md
@@ -6,6 +6,7 @@ tags:
- td
semestre: 3
---
+clromano@wanadoo.fr
Que des auteurs du XXe siècle
20/11 est le devoir sur table
@@ -13,7 +14,7 @@ Que des auteurs du XXe siècle
Possiblement un autre le 11/12
## Références
-_Frege_, « Sur le sens et la référence », _Philosophie du langage_ (anthologie de texte en deux volumes), I, p. 57-58
+Frege, « Sur le sens et la référence », _Philosophie du langage_ (anthologie de texte en deux volumes), I, p. 57-58
|> de « La référence d'un nom propre » à « Suivre cette piste nous écarterait trop de notre chemin »
|> rupture par rapport aux théories classiques de la signification
|> signification d'un mot n'est pas psychologique car elle n'est pas unique à chacun -> elle n'est pas privée, sinon on ne pourrait pas s'entendre dessus
diff --git a/semestre 3/philosophie générale/td/2- Husserl.md b/semestre 3/philosophie générale/td/2- Husserl.md
new file mode 100644
index 0000000..23d5382
--- /dev/null
+++ b/semestre 3/philosophie générale/td/2- Husserl.md
@@ -0,0 +1,50 @@
+---
+tags:
+ - sorbonne
+ - philosophie
+ - philosophie-générale
+ - td
+semestre: 3
+---
+Cherche à étudier le rapport entre signes et rapports mentaux
+
+Ici, cherche à montrer que la signification d'un mot ne peut être réduit au mot lui-même ou à une représentation mentale ou à un avis assertif
+|> comment le mot signifie ?
+|> le mot contient-il le sens comme une propriété immanente ou bien le sens est-il produit par un acte de conscience ?
+
+Sensible ne fait pas référence au sensible platonicien
+|> est ici un synonyme de physique
+
+Est le début de la phénoménologie
+
+Besoin d'avoir une signification en plus du côté sensible du mot
+|> un mot est un signe qui possède une signification
+|> ce ne sont pas que des traits, ce sont des choses avec un sens -> possède sa propre physionomie
+|> ces deux côtés sont indissociables
+
+Intentionnalité pour Husserl (suite à la redécouverte par Brentano)
+|> est le fait qu'un phénomène vise un objet
+-> est une capacité du psychique (qui n'est pas possible dans le physique)
+|> l'objet visé peut ne pas exister (on invente une chimère)
+-> seul la conscience a besoin d'exister
+
+Le sens des mots fonctionnent de la même manière que l'intentionnalité
+|> "regardez l'actuel roi de France"
+-> la signification provient d'abord de l'acte donateur de signification
+
+À cause de cette relation, on ne peut pas voir un mot sans lui associer le sens
+|> impossible de voir uniquement les signes
+-> est la preuve de notre conscience, car c'est un acte intentionnel
+
+Pourtant, le sens est objectif et unique
+
+Un langage ne peut pas être utilisé par une unique personne
+|> sinon, il n'existe pas d'objectivité
+-> si on peut choisir quel mot on utilise pour parler de A, alors nous ne sommes pas dans le langage
+|> ce n'est pas une démarche individuelle : elle est collective
+
+Pour exprimer qlq chose, on a besoin d'avoir l'intention de l'exprimer *et* de suivre des règles objectives indépendantes de ce que je souhaite dire
+
+Wittgenstein, _Cahier bleu et brun_ souhaite montrer que cette théorie est absurde
+|> ce qui confère la vie au langage, c'est son usage
+|> ce sont les règles qui créent le langage et non les actes mentaux \ No newline at end of file
diff --git a/semestre 3/philosophie politique/0- Introduction.md b/semestre 3/philosophie politique/0- Introduction.md
index 3c11ee5..fe0a6bc 100644
--- a/semestre 3/philosophie politique/0- Introduction.md
+++ b/semestre 3/philosophie politique/0- Introduction.md
@@ -5,14 +5,16 @@ tags:
- philosophie-politique
Semestre: 3
---
+À chaque blocus, il y a un cours en ligne
+
Permanence en 505 le jeudi de 14h à 16h.
Pas là jeudi 23 octobre.
Objectifs du cours :
1. dénaturaliser le droit pénal
-2. développer vos capacités analytiques et argumentatives
+2. développer nos capacités analytiques et argumentatives
3. allier la compréhension concrète de l'objet et la capacité à l'analyser de manière subtile
-4. développer votre aisance à l'oral -> cherche à compenser les khôlles
+4. développer notre aisance à l'oral -> cherche à compenser les khôlles
Moyens :
1. plan par questions
diff --git a/semestre 3/philosophie politique/1- Enquêter.md b/semestre 3/philosophie politique/1- Enquêter.md
index 67fd04a..d279dbd 100644
--- a/semestre 3/philosophie politique/1- Enquêter.md
+++ b/semestre 3/philosophie politique/1- Enquêter.md
@@ -42,3 +42,32 @@ Voir [[Enquêter - Frise chronologique - Foucault.pdf]]
Une injure à une victime devient une injure au pouvoir
## B. Qui dois enquêter ?
+Deux types de système : inquisitoire et accusatoire
+
+Inquisitoire = juge possède un pouvoir d'instruction
+|> charge de l'enquête revient au juge
+
+Accusatoire = juge ne possède pas ce pouvoir
+|> charge de l'enquête revient au procureur, à la défense et à l'attaque
+-> est un écho de l'épreuve selon Foucault (juge qui n'est que l'arbitre, capacités financières rentrant en jeu)
+
+![Carte de l'université d'Ottawa](géographie-des-systèmes-judiciaires.png)
+## C. Comment enquêter ?
+Toutes les preuves sont acceptées d'une manière générale en France
+
+En *common law*, il y a des interdictions
+|> pas possible de présenter l'accusé / l'attaquant sous un jour négatif s'il n'y a pas de rapport avec l'infraction en cause (*bad character evidence*)
+|> témoignages rapportant les dires d'un tiers (*hearsay*)
+-> permet d'éviter d'influencer le jury avec des preuves de mauvaises qualités
+
+Bentham, _Rationale of Judicial Evidence, Specially Applied to English Practice_
+|> est contre l'interdiction des preuves
+
+Schauer (utilitariste), _On the Supposed Jury-Dependence of Evidence Law_ -> très compliqué de calculer le bien être collectif
+|> il existe des règles dont le suivi optimise le bien être collectif
+|> on devrait donc suivre ces règles
+
+Les preuves statistiques ont un problème au niveau
+|> des classes de référence
+|> du *sensitive believe*
+|> incentives \ No newline at end of file
diff --git a/semestre 3/philosophie politique/géographie-des-systèmes-judiciaires.png b/semestre 3/philosophie politique/géographie-des-systèmes-judiciaires.png
new file mode 100644
index 0000000..8def33f
--- /dev/null
+++ b/semestre 3/philosophie politique/géographie-des-systèmes-judiciaires.png
Binary files differ
diff --git a/semestre 3/structures des données/5- File de priorité.md b/semestre 3/structures des données/5- File de priorité.md
new file mode 100644
index 0000000..94b67e2
--- /dev/null
+++ b/semestre 3/structures des données/5- File de priorité.md
@@ -0,0 +1,65 @@
+---
+tags:
+ - sorbonne
+ - informatique
+ - structure-des-données
+semestre: 3
+---
+**Rattraper la définition**
+
+Implémentation naïve en liste chaînée, son extraction est en $O(n)$ pour récupérer la valeur minimum
+|> utilisation d'une liste chaînée triée permet d'éviter ça, mais on se retrouve à être en $O(n)$ pour l'insertion
+-> on fait sûrement des opérations en trop car à chaque fois on trie tout
+=> on peut utiliser un arbre pour que ça soit plus opti
+
+Voir la définition de arbre $m$-aire en maths discrètes
+
+On dit qu'un arbre est complet (ou « tassé à gauche ») si tous les niveaux sont remplis, sauf si le dernier est vide ou possède un nœud à gauche
+```mermaid
+flowchart TB
+ A --> B
+ A --> C
+ B --> B1
+ B --> B2
+ C --> C1
+ C --> C2["$\varnothing$"]
+```
+
+Un tas (min) est un arbre binaire complet
+|> tous les nœuds doivent avoir une valeur plus grande que celle de son père
+-> le minimum se trouve en haut
+-> le maximum on s'est pas où il est, on sait juste que c'est une feuille
+|> la topologie de l'arbre est unique
+|> sa hauteur est $\lfloor\log_2(n)\rfloor$ (on va le prouver en TD)
+
+Propriétés des arbres complets (où $i$ est l'indice du nœud) :
+- $i(\text{racine}) = 1$
+- $i(\text{fils gauche}) = 2\times i(\text{père})$
+- $i(\text{fils droit}) = 2\times i(\text{père})+1$
+- $i(\text{père}) = \lfloor i(\text{fils gauche})\rfloor = i(\text{fils droit})$
+
+On peut représenter l'arbre complet à l'aide d'un tableau
+|> les indices de l'arbre sont aussi les indices du tableau 🎉
+-> on peut stocker le nombre d'élément du tas dans la première case du tableau (car on commence à l'indice 1)
+
+```c title="Fonction de transformations d'indice"
+int indicePere(int i){
+ return i/2;
+}
+int indiceFilsGauche(int i){
+ return 2*i;
+}
+int indiceFilsDroit(int i){
+ return 2*i+1;
+}
+```
+Voir le diapo pour les tests d'existence
+
+Pour ajouter un élément, on :
+1. ajoute l'élément tout en bas
+2. tant que l'élément est plus grand que son père, on les échange
+-> elle est en $O(\log_2 n)$ (car au pire on remonte à la racine)
+
+Voir le diapo pour la fonction d'ajout implémenté
+
+Voir le diapo pour l'extraction \ No newline at end of file
diff --git a/semestre 3/structures des données/td/td4/exo1.c b/semestre 3/structures des données/td/td4/exo1.c
new file mode 100644
index 0000000..aa4f7c0
--- /dev/null
+++ b/semestre 3/structures des données/td/td4/exo1.c
@@ -0,0 +1,49 @@
+#include <stdio.h>
+
+typedef struct _Cell {
+ Formation* val;
+ struct _Cell* next;
+} Cell;
+
+typedef struct _Formation {
+ char* name;
+ int hours;
+ Cell* formations;
+} Formation;
+
+typedef struct{
+ int length;
+ int max;
+ Formations** formations;
+} Catalogue;
+
+void print_formation(Formation* f){
+ if (f->hours != 0) {
+ printf("Cours %s\n", f->name);
+ return;
+ }
+ printf("%s (%d): ", f->name, f->hours);
+ Cell* fms = f->formations;
+ while (fms) {
+ print_formation(fms->val);
+ fms = fms->next;
+ }
+ printf("\n");
+}
+
+void print_catalogue(Catalogue* c){
+ for (int i = 0; i < c->lenght; i++) {
+ print_formation(c->formations[i]);
+ }
+}
+
+int sum_formation_hours(Formation* f, int acc){
+ acc += f->hours;
+ Cell* fms = f->formations;
+ while (fms){
+ acc += sum_formation_hours(fms, acc);
+ fms = fms->next;
+ }
+ return acc;
+}
+
diff --git a/semestre 3/structures des données/tme/tme3-5/exo1/entreeSortieLC.c b/semestre 3/structures des données/tme/tme3-5/exo1/entreeSortieLC.c
index 3adb7fb..178b7a8 100644
--- a/semestre 3/structures des données/tme/tme3-5/exo1/entreeSortieLC.c
+++ b/semestre 3/structures des données/tme/tme3-5/exo1/entreeSortieLC.c
@@ -12,20 +12,11 @@ Biblio* charger_n_entrees(char* nomfic, int n){
char* tmp = fgets(content, 256, f);
if (!tmp) return NULL;
- char* parsed[3];
- char c[256];
- int k = 0;
- int l = 0;
- for (int j = 0; j < 256 && content[j] != '\0'; j++){
- if (content[j] == ' '){
- c[k] = '\0';
- parsed[l++] = strdup(c);
- k = 0;
- } else {
- c[k++] = content[j];
- }
- }
- inserer_en_tete(bib, atoi(parsed[0]), parsed[1], parsed[2]);
+ int num;
+ char title[256];
+ char author[256];
+ if (sscanf(content, "%d %s %s", &num, &title, &author) != 3) return NULL;
+ inserer_en_tete(bib, num, title, author);
}
if (fclose(f) != 0) return NULL;
return bib;
diff --git a/semestre 3/structures des données/tme/tme3-5/exo1/main.c b/semestre 3/structures des données/tme/tme3-5/exo1/main.c
index f1e85c0..b38104a 100644
--- a/semestre 3/structures des données/tme/tme3-5/exo1/main.c
+++ b/semestre 3/structures des données/tme/tme3-5/exo1/main.c
@@ -27,13 +27,13 @@ int main(int argc, char** argv){
int rep;
do {
menu();
- char s[2];
- char* r = fgets(s, 2, stdin);
- if (!r) {
+ char s[3];
+ char* r = fgets(s, 3, stdin);
+ if (!r){
printf("erreur lors de la lecture :(\n");
return 3;
}
- s[1] = '\0';
+ s[1] = '\0'; // skipping \n char
rep = atoi(s);
printf("\n");
switch(rep){
@@ -42,17 +42,21 @@ int main(int argc, char** argv){
afficher_biblio(bib);
break;
case 2:
- int num;
- char titre[256];
- char auteur[256];
printf("Veuillez ecrire le numero, le titre et l' auteur de l' ouvrage. \n");
- /* On suppose que le titre et l’auteur ne contiennent pas d’espace*/
- if (scanf("%d %s %s", &num, titre, auteur) == 3){
- inserer_en_tete(bib, num, titre, auteur);
- printf("Ajout fait.\n");
- } else {
- printf("Erreur format\n");
+ char input[256];
+ char* s = fgets(input, 256, stdin);
+ if (!s){
+ printf("Entrée invalide.");
+ break;
+ }
+ int num;
+ char title[256];
+ char author[256];
+ if (sscanf(input, "%d %s %s", &num, &title, &author) != 3){
+ printf("Entrée invalide.");
+ break;
}
+ inserer_en_tete(bib, num, title, author);
break;
case 3:
Biblio* db = rechercher_doublons(bib);
@@ -61,6 +65,6 @@ int main(int argc, char** argv){
}
printf("\n");
} while (rep != 0);
- printf ("Merci, et au revoir.\n");
+ printf("Merci, et au revoir.\n");
return 0;
}