diff options
Diffstat (limited to 'semestre 3')
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 Binary files differnew file mode 100644 index 0000000..97d0e05 --- /dev/null +++ b/semestre 3/mathématiques discrètes/td/25-10-10.pdf 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) + + +## 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 Binary files differnew file mode 100644 index 0000000..8def33f --- /dev/null +++ b/semestre 3/philosophie politique/géographie-des-systèmes-judiciaires.png 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; } |
