Skip to content

Commit fc1c13a

Browse files
author
arnaud
committed
logo + vidéos
1 parent d1b038a commit fc1c13a

16 files changed

+549
-4
lines changed

bitcoin/pres-bitcoin.pdf

-16.4 KB
Binary file not shown.

bitcoin/pres-bitcoin.tex

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ \section*{Preuve de travail - Minage}
205205

206206
\textbf{Exemple.}
207207

208-
soit la \ci{liste = [0,1,2,3,4,5]} et \ci{Max = [0,0,7]}. Quel bloc \ci{preuve} puis-je concaténer à \ci{liste} pour résoudre mon problème ?
208+
Soit la \ci{liste = [0,1,2,3,4,5]} et \ci{Max = [0,0,7]}. Quel bloc \ci{preuve} puis-je concaténer à \ci{liste} pour résoudre mon problème ?
209209

210210
\bigskip
211211

@@ -238,6 +238,10 @@ \section*{Preuve de travail - Minage}
238238

239239
\newpage
240240

241+
Variable globale \ci{Max = [0,0,7]}
242+
243+
\bigskip
244+
241245
\textbf{Vérification (facile).}
242246

243247
Programme une fonction \ci{verification_preuve_de_travail(liste,preuve)} qui renvoie vrai si la solution \ci{preuve} proposée convient pour \ci{liste}.
@@ -312,6 +316,27 @@ \section*{Tes \emph{bitcoins}}
312316

313317
Attention, pour pouvoir modifier \ci{Livre} il faut commencer la fonction par : \ci{global Livre}.
314318

319+
\newpage
320+
321+
\textbf{Phrase vers liste d'entiers.}
322+
323+
Écris une fonction \ci{phrase_vers_liste(phrase)} qui convertit une chaîne de caractères en liste d'entiers entre $0$ et $99$ et si besoin rajoute des zéros devant afin que la liste ait une longueur un multiple de $N=6$.
324+
325+
\bigskip
326+
327+
La formule à utiliser pour convertir un caractère en un entier strictement inférieur à $100$ est :\\
328+
\centerline{\ci{ord(c) \% 100}}
329+
330+
\bigskip
331+
332+
Exemple : \\
333+
\centerline{\ci{phrase = "Vive moi !"}}
334+
335+
la fonction renvoie :\\
336+
\centerline{\ci{[0, 0, 86, 5, 18, 1, 32, 9, 11, 5, 32, 33]}}
337+
338+
339+
315340
\newpage
316341

317342
\textbf{Calcul et ajout d'une preuve de travail.}
@@ -320,7 +345,7 @@ \section*{Tes \emph{bitcoins}}
320345

321346
Voici comment faire :
322347
\begin{itemize}
323-
\item On prend la dernière transaction \ci{transaction}, on la transforme en une liste d'entiers par une fonction \ci{phrase_vers_liste()} (on associe à un caractère sur ordre ASCII/unicode modulo $100$).
348+
\item On prend la dernière transaction \ci{transaction}, on la transforme en une liste d'entiers par la fonction \ci{phrase_vers_liste()}.
324349
\item On prend la preuve de travail \ci{prec_preuve} située juste avant cette transaction.
325350
\item On forme la liste \ci{liste} composée d'abord des éléments de \ci{prec_preuve}, puis des éléments de la liste d'entiers obtenue en convertissant la chaîne \ci{transaction}.
326351
\item On calcule une preuve de travail de cette liste.

chaines/pres-chaine.pdf

104 KB
Binary file not shown.

chaines/pres-chaine.tex

Lines changed: 213 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,213 @@
1+
\documentclass[12pt,class=report,crop=false]{standalone}
2+
\usepackage[screen]{../python}
3+
4+
\pagestyle{empty}
5+
6+
\begin{document}
7+
8+
%====================================================================
9+
\chapitre{Chaînes de caractères -- Analyse d'un texte}
10+
%====================================================================
11+
12+
\section*{Caractère et chaîne}
13+
14+
15+
\begin{itemize}
16+
\item Un \defi{caractère}\index{caractere@caractère} est un symbole unique, par exemple une lettre minuscule \codeinline{"a"}, une lettre majuscule \codeinline{"B"}, un symbole spécial \codeinline{"\&"}, un symbole représentant un chiffre \codeinline{"7"}, une espace \codeinline{" "} que l'on notera aussi \lstinline[showstringspaces=true]!" "!.
17+
18+
\bigskip
19+
20+
\item
21+
Pour désigner un caractère, il faut le mettre entre guillemets simples \codeinline{'z'} ou entre guillemets doubles \codeinline{"z"}.
22+
23+
\bigskip
24+
25+
\item Une \defi{chaîne de caractères}\index{chaine@chaîne} est une suite de caractères, comme un mot \codeinline{"Bonjour"}, une phrase \codeinline{'Il fait beau.'}, un mot de passe \codeinline{"N[w5ms\}e!"}.
26+
27+
\bigskip
28+
29+
\item Le type d'un caractère ou d'une chaîne est \codeinline{str}\index{str@\ci{str}} (pour \emph{string}).
30+
31+
32+
\end{itemize}
33+
34+
35+
36+
\newpage
37+
38+
\section*{Opérations sur les chaînes}
39+
40+
41+
\begin{itemize}
42+
\item La \defi{concaténation}\index{concatenation@concaténation}, c'est-à-dire la mise bout à bout de deux chaînes, s'effectue à l'aide de l'opérateur \codeinline{+}. Par exemple \ci{"para"+"pluie"} donne la chaîne \ci{"parapluie"}.
43+
44+
\bigskip
45+
46+
\item La chaîne vide \ci{""} est utile lorsque l'on veut initialiser une chaîne avant d'y ajouter d'autres caractères.
47+
48+
\bigskip
49+
50+
\item La \defi{longueur} d'une chaîne est le nombre de caractères qu'elle contient. Elle s'obtient par la fonction \ci{len()}\index{len@\ci{len}}.
51+
Par exemple \lstinline[showstringspaces=true]!len("Hello World")! renvoie $11$ (l'espace compte comme un caractère).
52+
\end{itemize}
53+
54+
\newpage
55+
56+
\section*{Opérations sur les chaînes}
57+
58+
Si \ci{mot} est une chaîne alors on peut récupérer chaque caractère par \ci{mot[i]}. Par exemple si
59+
\ci{mot = "avion"} alors :
60+
\begin{itemize}
61+
\item \ci{mot[0]} est le caractère \ci{"a"},
62+
\item \ci{mot[1]} est le caractère \ci{"v"},
63+
\item \ci{mot[2]} est le caractère \ci{"i"},
64+
\item \ci{mot[3]} est le caractère \ci{"o"},
65+
\item \ci{mot[4]} est le caractère \ci{"n"}.
66+
\end{itemize}
67+
68+
\bigskip
69+
70+
\begin{center}
71+
\begin{tabular}{|c||c|c|c|c|c|}
72+
\hline
73+
Lettre & a & v & i & o & n \\ \hline
74+
Rang & 0 & 1 & 2 & 3 & 4 \\ \hline
75+
\end{tabular}
76+
\end{center}
77+
78+
79+
\bigskip
80+
81+
Si \ci{mot} est une chaîne, les caractères s'obtiennent par \ci{mot[i]} pour \ci{i} variant de \ci{0} à \ci{len(mot)-1}.
82+
83+
84+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
85+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
86+
87+
88+
\newpage
89+
90+
\section*{Sous-chaînes}
91+
92+
93+
On peut extraire plusieurs caractères d'une chaîne à l'aide de la syntaxe \ci{mot[i:j]} qui renvoie une chaîne formée des caractères numéro $i$ à $j-1$ (attention le caractère numéro $j$ n'est pas inclus !).
94+
95+
\bigskip
96+
97+
Par exemple si \ci{mot = "vendredi"} alors :
98+
\begin{itemize}
99+
\item \ci{mot[0:4]} renvoie la sous-chaîne \ci{"vend"} formée des caractères de rang $0$, $1$, $2$ et $3$ (mais pas $4$),
100+
101+
\bigskip
102+
103+
\item \ci{mot[3:6]} renvoie \ci{"dre"} correspondant aux rangs $3$, $4$ et $5$.
104+
\end{itemize}
105+
106+
\bigskip
107+
108+
\begin{center}
109+
\begin{tabular}{|c||c|c|c|c|c|c|c|c|}
110+
\hline
111+
Lettre & v & e & n & d & r & e & d & i \\ \hline
112+
Rang & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7\\ \hline
113+
\end{tabular}
114+
\end{center}
115+
116+
\bigskip
117+
118+
Autre exemple : \ci{mot[1:len(mot)-1]} renvoie le mot privé de sa première et dernière lettre.
119+
120+
121+
\newpage
122+
123+
124+
\section*{Un peu plus sur les chaînes}
125+
126+
127+
\begin{itemize}
128+
\item Une boucle \ci{for ... in ...} permet de parcourir une chaîne, caractère par caractère :\index{boucle!pour}\index{for@\ci{for}}
129+
\begin{center}
130+
\begin{minipage}{0.4\textwidth}
131+
\ci{for carac in mot:}\\
132+
\indentation \ci{print(carac)}
133+
\end{minipage}
134+
\end{center}
135+
136+
\bigskip
137+
138+
\item On peut tester si un caractère appartient à une certaine liste de caractères. Par exemple : \\
139+
\centerline{\codeinline{if carac in ["a", "A", "b", "B", "c", "C"]:}}
140+
\index{in@\ci{in}}
141+
142+
permet d’exécuter des instructions si le caractère \ci{carac} est l'une des lettres a, A, b, B, c, C.
143+
144+
\bigskip
145+
146+
\item
147+
Pour éviter certaines lettres, on utiliserait : \\
148+
\centerline{\codeinline{if carac not in ["X", "Y", "Z"]:}}
149+
\index{not in@\ci{not in}}
150+
151+
\end{itemize}
152+
153+
\newpage
154+
155+
\section*{Codage des caractères}
156+
157+
\index{codage des caracteres@codage des caractères}
158+
159+
Un caractère est stocké par l'ordinateur sous la forme d'un entier.
160+
Pour le codage ASCII/unicode, la lettre majuscule \og{}A\fg{} est codé par $65$, la lettre minuscule \og{}h\fg{} est codée par $104$, le symbole \og{}\#\fg{} par $35$.
161+
162+
Voici la table des premiers caractères. Les numéros $0$ à $32$ ne sont pas des caractères imprimables. Cependant le numéro $32$ est le caractère espace \lstinline!" "!.
163+
164+
\index{ascii}
165+
\index{unicode}
166+
167+
\myfigure{0.8}{
168+
\small
169+
\tikzinput{chaines-unicode}
170+
}
171+
172+
173+
\newpage
174+
175+
\section*{Codage des caractères}
176+
177+
La fonction \ci{chr()}\index{chr@\ci{chr}} est une fonction \Python{} qui renvoie le caractère associé à un code.
178+
179+
\begin{fonctionpython}[\ci{python : chr()}]
180+
Usage : \ci{chr(code)}\\
181+
Entrée : un code (un entier)\\
182+
Sortie : un caractère
183+
184+
\medskip
185+
186+
Exemple :
187+
\begin{itemize}
188+
\item \ci{chr(65)} renvoie \ci{"A"}
189+
\item \ci{chr(123)} renvoie \ci{"\{"}
190+
\end{itemize}
191+
\end{fonctionpython}
192+
193+
\bigskip
194+
195+
196+
La fonction \ci{ord()}\index{ord@\ci{ord}} est une fonction \Python{} correspondant à l'opération inverse : elle renvoie le code associé à un caractère.
197+
198+
\begin{fonctionpython}[\ci{python : ord()}]
199+
Usage : \ci{ord(carac)}\\
200+
Entrée : un caractère (une chaîne de longueur $1$)\\
201+
Sortie : un entier
202+
203+
\medskip
204+
205+
Exemple :
206+
\begin{itemize}
207+
\item \ci{ord("A")} renvoie \ci{65}
208+
\item \ci{ord("*")} renvoie \ci{42}
209+
\end{itemize}
210+
\end{fonctionpython}
211+
212+
213+
\end{document}

cover/logo-python.png

29.5 KB
Loading

cover/python-logo.pdf

4.67 KB
Binary file not shown.

cover/python-logo.svg

Lines changed: 112 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)