CoursInformatique/OCInfoPres.tex.bak

3962 lines
138 KiB
TeX
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

\documentclass{beamer}
%\documentclass[hyperref={pdfpagelabels=false}]{beamer} % Provoque une erreur de compilation. Voir si nécessaire.
%\documentclass[hyperref={pdfpagelabels=false,notes}]{beamer} % Si on veut mettre des notes
%\usepackage[light]{kpfonts}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc} % écrire avec les accents
\usepackage[french]{babel}
\usepackage{multimedia}
\usepackage{graphicx}
\usepackage{color}
\usepackage{epsfig}
\usepackage{url}
\usepackage{breakurl}
\usepackage{endnotes}
\renewcommand{\notesname}{Crédits photographiques}
\renewcommand{\enotesize}{\tiny}
\usepackage{float}
%\usepackage{movie15} % pour mettre des animations
%\usepackage{hyperref} % en fait beamer inclut automatiquement hyperref
\graphicspath{{./Images/}{./Videos/}}
\title[Informatique]{Cours d'informatique (DF et OC)}
%\author{Des structures aux mouvements}
\institute{Lycée Blaise Cendrars}
\date{\today}
%\usetheme{Warsaw}
\usetheme{Copenhagen}
\definecolor{Fond}{rgb}{0.6,0.6,0.9}
\beamertemplatesolidbackgroundcolor{Fond}
\mode<presentation>
\usepackage{tabularx}
\usepackage{array}
\usepackage{amssymb}
\usepackage{textcomp}
\usepackage{verbatim}
\usepackage{listings}
\lstloadlanguages{HTML,TeX,XML}
\usepackage{fancybox}
\usepackage{multirow}
\usepackage{amsmath}
\usepackage{siunitx}
\sisetup{
per-mode = symbol-or-fraction,
exponent-product = \cdot,
output-decimal-marker = {,},
binary-units
}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{array}
\usepackage{textcomp}
%\usepackage{colorlinks=true,urlcolor=blue}{hyperref} % inutile car beamer le contient déjà
\usepackage{etex}
\usepackage[all,2cell]{xy}
\UseAllTwocells
\def\hilite<#1>{\temporal<#1>{\color{gray}}{\color{blue}}{\color{blue!25}}}
%-----
\setbeamertemplate{headline}
{%
\leavevmode
\begin{beamercolorbox}[wd=.5\paperwidth,ht=2.5ex,dp=1.125ex,leftskip=.3cm plus1fill,rightskip=.3cm]{section in head/foot}%
\insertsection
\end{beamercolorbox}%
\begin{beamercolorbox}[wd=.5\paperwidth,ht=2.5ex,dp=1.125ex,leftskip=.3cm,rightskip=.3cm plus1fil]{subsection in head/foot}%
\insertsubsection
\end{beamercolorbox}%
}
\addtobeamertemplate{headline}
{}
{%
\vskip-0.2pt
%\pgfuseshading{beamer@topshade}
\vskip-2pt
}
\setbeamertemplate{blocks}[rounded][shadow=false]
%----- Définition de l'environnement atelier
\newenvironment<>{atelier}[1][]{%
\setbeamercolor{block title}{fg=white,bg=green!30!black}
\setbeamercolor{block body}{fg=black,bg=teal!40}
\begin{block}{Au travail}%
}{%
\end{block}
}
%-----
\begin{document}
%\setbeamertemplate{headline}[default]
%\setbeamertemplate{headline}[split theme]
\begin{frame}
\titlepage
\end{frame}
%\AtBeginSubsection[]
\AtBeginSection[]
{
\begin{frame}
\frametitle{Table des matières}
\begin{columns}[t]
\begin{column}{5cm}
%\tableofcontents[sections={1},currentsection,currentsubsection]
\tableofcontents[sections={\insertsectionnumber},currentsection,currentsubsection]
\end{column}
\begin{column}{5cm}
\tableofcontents[sections={1-4},currentsection,hideallsubsections]
\end{column}
\end{columns}
\end{frame}
}
\begin{frame}
\vspace{5cm}
\begin{flushright}
\footnotesize{
Ce document est publié sous licences
GFDL sans sections invariantes et GPL
dernière version dans les deux cas.
Le texte de ces licences est disponible à la FSF.}
\end{flushright}
\end{frame}
\subsection{Introduction}
\begin{frame}{Évaluations\hypertarget{evaluationsretourDO}{}}
\begin{center}
\Large
Désagréables \(\longleftrightarrow\) agréables\endnote{Wikipedia : \url{http://commons.wikimedia.org/wiki/File:Notes.svg}} ?
\includegraphics[width=5cm]{Notes.eps}
\hyperlink{evaluationsDO}{\beamerbutton{Description des évaluations}}
\end{center}
\end{frame}
\begin{frame}
\centering
\Huge{\textsc{Discipline fondamentale}}
\end{frame}
\section{DF Systèmes numériques}
\subsection{Problématique}
\begin{frame}{Interdisciplinarité}
\begin{columns}
\begin{column}{3cm}
En quoi l'informatique est-elle une science interdisciplinaire ?
\end{column}
\begin{column}{7cm}
\begin{block}{Disciplines}
\begin{itemize}
\item Mathématiciens-physiciens.
\item Chimistes-biologistes.
\item Arts-visuels, musiciens, ...
\end{itemize}
\end{block}
\begin{block}{Nécessité}
\begin{description}[Base de donnée]
\item [Programmation] Pour le plaisir ?
\item [Base de donnée] Herbiers ou classifications d'espèces (biologie) ?
\item [Graphisme] Traitement de l'image, images 3D ?
\end{description}
\end{block}
\end{column}
\end{columns}
\note<1>{Ceci est ma première note.}
\end{frame}
%\begin{frame}{Qu'est-ce que l'univers ?}
%
%La réponse de Newton est :
%\begin{align*}
%MRU \Longleftrightarrow \sum{\overrightarrow{F}}&=0\\
%\sum{\overrightarrow{F}}&=m\cdot \overrightarrow{a}\\
%\overrightarrow{Action}&=-\overrightarrow{R\acute eaction}\\
%\overrightarrow{F}&=G\cdot \frac{M\cdot m}{r^3}\cdot \overrightarrow{r}
%\end{align*}
%
%La réponse d'Einstein est :
%\[R_{\mu\nu}-\frac{1}{2}\cdot g_{\mu\nu}\cdot R-\Lambda\cdot g_{\mu\nu}=\frac{8\cdot \pi\cdot G}{c^4}\cdot %T_{\mu\nu}\]
%
%%\href{run:galaxiesinterr.mpg}{\beamerbutton{Galaxies en interraction}}
%%\href{run:xine}{\beamerbutton{Galaxies en interraction}}
%%\movie{%\includegraphics[width=.25\textwidth]{ChiensChasse.eps}}{galaxiesinterr.mpg}
%%\movie[width=3cm,height=2cm,externalviewer]{%\includegraphics[width=.25\textwidth]{ChiensChasse.eps}}{galaxiesinterr.mpg}
%%\movie[width=3cm,height=2cm]{%\includegraphics[width=.25\textwidth]{ChiensChasse.eps}}{galaxiesinterr.mpg}
%
%\end{frame}
\begin{frame}{Machines}
\begin{columns}
\begin{column}{6cm}
\includegraphics[width=3cm]{Irobot.eps}\includegraphics[width=3cm]{Phoenix_on_the_Red_Planet.eps}\\
\includegraphics[width=3cm]{Irobot1.eps}\includegraphics[width=3cm]{Irobot2.eps}
\end{column}
\begin{column}{5cm}
{\Large Informatique-Robotique.}
\smallskip
Où s'arrêter ?
\medskip
{\scriptsize En haut à gauche :}
Ph\oe nix sur Mars\endnote{Wikipedia : \url{http://commons.wikimedia.org/wiki/File:Phoenix\_on\_the\_Red\_Planet.jpg}}.
{\scriptsize En bas :}
Aspirateur-récureur iRobot\up\textcopyright.
\end{column}
\end{columns}
\end{frame}
%\begin{frame}{IRobots : Moderne-ancien ?}
%\begin{columns}
%\begin{column}{0.4\textwidth}
%\begin{block}{Moderne}
%\begin{itemize}
%\item Robot
%\item Poli
%\item Utile
%(promène les chiens, vide les poubelles ; bras robotisé)
%\item Fiable
%\item Obéissant : trois lois
%\item Symbole de richesse
%\end{itemize}
%\end{block}
%\end{column}
%\begin{column}{0.6\textwidth}
%\begin{block}{Ancien}
%\begin{itemize}
%\item Chaussures Converses all star 2004
%\item ``Hors de ma vue tas de ferraille.''
%\item ``Les robots, cela n'a jamais rien rapporté aux hommes.''
%\item Non fiable, l'inspecteur se trompe
%\item ``Les lois sont faites pour qu'on leur désobéisse.''
%\item La mère de l'inspecteur doit gagner son NS5
%\end{itemize}
%\end{block}
%\end{column}
%\end{columns}
%\end{frame}
%\begin{frame}{IRobots : les problèmes}
%\begin{columns}
%\begin{column}{0.5\textwidth}
%\begin{block}{Intégration des machines}
%\small ``Votre père a été licencié au profit d'un robot''
%\tiny Voiture, ascenseur, machine à laver, machines outils, \dots{}
%\small ``De la conception à la fabrication aucune présence humaine : quelle idée stupide''
%\end{block}
%\begin{block}{Qu'est qu'une machine}
%\small Les robots doivent-ils ressembler aux humains ?
%\tiny ``C'est quoi ce regard ? C'est ma tête, c'est pas un regard !''
%Hair : ``Mes cheveux c'est moi, je ne veux pas qu'on les coupe.''
%Les robots ont tous un même regard, ont-ils une tête ?
%Ce qui fait l'homme, est-ce la différence ?
%\end{block}
%\end{column}
%\begin{column}{0.5\textwidth}
%\begin{block}{Artificiel-naturel}
%\small ``Vous n'aimez pas leur espèce''
%\smallskip
%Les émotions sont le propre de l'homme : la colère, le rêve, la confiance, \dots{} le rire ? (voir \emph{Le nom de la rose})
%\smallskip
%``Un robot peut-il écrire une symphonie ? Et vous inspecteur ?''
%\smallskip
%\scriptsize ``Il y a toujours eu des fantômes dans la machine, des segments aléatoires de code qui se sont regroupé pour former des protocoles imprévus. Ces radicaux libres posent le problème du libre arbitre et même de ce qu'on pourrait appeler l'âme.''
%\end{block}
%\end{column}
%\end{columns}
%\end{frame}
%\begin{frame}
%\begin{block}{Imprévu}
%L'imprévu existera toujours, autant chez les machines que chez l'homme.
%\end{block}
%\begin{block}{Responsabilité}
%La question de déterminer la responsabilité face à l'imprévu se pose donc.
%``Un meurtre peut-il être attribué à une machine ? Non, tout au plus s'agit-il d'un accident industriel !''
%Toutes les licences ``déclinent toute responsabilité \dots{}''
%\end{block}
%\end{frame}}
\begin{frame}{Variétés}
\begin{columns}
\begin{column}{5cm}
\includegraphics[width=2cm]{Davinci.eps}\\
\includegraphics[width=2cm]{smartphones-image.eps}
\includegraphics[width=2cm]{feux_circulation.eps}
\end{column}
\begin{column}{5cm}
Les domaines de l'informatique sont infinis :
\begin{itemize}
\item Téléphonie.
\item Paiements.
\item Gestion des billets.
\item Gestion des traffics.
\item Analyse de l'information.
\item \dots
\end{itemize}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{\large ``Rien n'est jamais acquis à l'homme\dots''.}
\begin{block}{}
Science des réseaux, toute informatique se situe dans un \emph{contexte}.
\end{block}
\begin{columns}
\begin{column}{5.1cm}
\begin{block}{Exemples}
\small
\begin{itemize}
\item Sauvegardes chez un particulier ou en entreprise.
\item Déploiement d'un ensemble de machines.
\item Installation en période de crise économique.
\item Pérénité d'un groupe de programmeurs.
\end{itemize}
\end{block}
\end{column}
\begin{column}{5.1cm}
\pause\begin{block}{Difficultés}
\small
\begin{itemize}
\item Coût du matériel.
\item Pérénité des solutions (obsolescence programmée...).
\item Stabilité du système (serveurs web).
\item Sécurisation matérielle et logicielle, protection des données.
\end{itemize}
\end{block}
\end{column}
\end{columns}
\end{frame}
\begin{comment}
\begin{frame}{Évolution}
\begin{block}{Informatique}
Le lièvre et la tortue ou le renard et le hérisson \dots
\end{block}
\begin{block}{Lièvre ou tortue}
\centering
Évolution technique très rapide
\(\downdownarrows\;\upuparrows\)
Besoins réels stables
\end{block}
\begin{block}{Renard ou hérisson}
\centering
Évolution inexorable
\(\downdownarrows\;\upuparrows\)
Stabilité nécessaire
\end{block}
\end{frame}
\end{comment}
\begin{frame}{Contexte historique}
\begin{columns}
\begin{column}{5.1cm}
\begin{enumerate}
\item
\begin{itemize}
\item Genève : Logiciels libres.
\item Vaud : MacOS\up\textcopyright.
\item Neuchatel : Windows\up\textcopyright.
\end{itemize}
\item Crise économique mondiale et cantonale \(\Rightarrow\) Crédits zéro en 2010.
\item Compétences présentes en informatiques au lycée : \textsc{linux et macOS\up\textcopyright}.
\item Contexte éducatif et coopératif.
\end{enumerate}
\end{column}
\(\Leftrightarrow\)\hspace{0.5cm}
\begin{column}{5cm}
\pause\begin{block}{Choix : logiciels libres}
Système d'exploitation : Linux.
Distribution : Debian ou LinuxMint.
Machines : récupération Dell ou machines montées par l'école d'ingénieurs.
Libre accès : sans risque légaux (piratage), utilisables sur toutes les plates-formes.
\end{block}
\end{column}
\end{columns}
\end{frame}
\subsection{Matériel}
\begin{frame}
\frametitle{Composants (signification)}
Un ordinateur est construit autour des composants suivants~:
\begin{description}
\item[Processeur] Un circuit électronique qui réalise les calculs,
\item[Mémoire vive] Une mémoire rapide qui stocke provisoirement les informations et s'efface quand on éteint l'ordinateur,
\item[Mémoire morte] Une mémoire lente qui stocke les informations et persiste quand l'ordinateur est éteint,
\item[Interfaces] Des ports permettant de faire entrer et sortir des informations~: ports réseau (RJ45, wifi, bluetooth), ports USB, port d'alimentation, entrée/sortie son, connecteurs souris et clavier, connecteurs d'écran (vga, dvi, hdmi).
\end{description}
\end{frame}
\begin{frame}
\frametitle{Composants (Visualisation)}
\begin{columns}
\begin{column}{6cm}
\includegraphics[scale=0.35]{Raspberry_Pi_4}
\tiny
Référence image\endnote{Wikipedia : \url{https://upload.wikimedia.org/wikipedia/commons/thumb/8/8b/Raspberry\_Pi\_4\%2C\_2\_GB\_RAM\_version.jpg/800px-Raspberry\_Pi\_4\%2C\_2\_GB\_RAM\_version.jpg?uselang=fr}}
\end{column}
\begin{column}{5cm}
\tiny
\begin{description}
\item[RAM] Random Access Memory : mémoire vive.
\item[POE] Power Over Ethernet : alimentation réseau.
\item[GPIO] General Purpose Input Output : électronique externe.
\item[SD] Secure Digital : mémoire morte.
\item[USB] Universal Serial Bus : communications périphériques.
\item[HDMI] High Definition Multimedia Interface : écrans.
\item[WIFI] WIreless FIdelity : marque de communication sans fils.
\item[Bluetooth] Harald à la dent bleue : norme de communication sans fils.
\item[Ethernet] Net dans l'ether : protocole de communication local.
\end{description}
\end{column}
\end{columns}
\end{frame}
\begin{frame}
\frametitle{Composants (Évaluation)}
Les grandeurs caractéristiques des composants sont les suivantes~:
\begin{description}
\item[Processeur] caractérisé par sa fréquence de calcul en GHz (Giga Hertz), soit en opérations par seconde~: 3 GHz = 3 milliards d'opération par seconde ; un nombre de coeur (2,4,6,\dots),
\item[Mémoire vive] caractérisée par sa capacité en Go (Giga octet)~: 3 Go = 3 milliards d'octets,
\item[Mémoire morte] caractérisée par sa capacité en Go (Giga octet)~: 500 Go = 500 milliards d'octets,
\item[Interfaces] caractérisés par leur débit en Go/s~: soit en Go par seconde~: 1 Go/s = un miliard d'octet transféré par seconde.
\end{description}
\end{frame}
\begin{frame}
\frametitle{Connecteurs}
\begin{tabular}{rcl}
\includegraphics[height=1.8cm]{VGA} & \includegraphics[height=1.8cm]{DVI} & \includegraphics[height=1.8cm]{HDMI} \\
VGA\endnote{Wikimedia : \url{https://upload.wikimedia.org/wikipedia/commons/thumb/6/61/VGA\_Stecker.jpg/274px-VGA\_Stecker.jpg}} & DVI\endnote{Wikimedia : \url{https://upload.wikimedia.org/wikipedia/commons/thumb/3/37/Dvi-cable.jpg/300px-Dvi-cable.jpg}} & HDMI\endnote{Wikimedia : \url{https://commons.wikimedia.org/wiki/File:HDMI.jpg}} \\
\includegraphics[height=1.8cm]{USB-2} & \includegraphics[height=1.8cm]{USB-c} & \includegraphics[height=1.8cm]{RJ45} \\
USB 2\endnote{Wikimedia : \url{https://upload.wikimedia.org/wikipedia/commons/thumb/f/f4/USB_types_2.jpg/320px-USB_types_2.jpg}} & USB C\endnote{Wikimedia : \url{https://upload.wikimedia.org/wikipedia/commons/thumb/c/c1/Usb\_type-c\_plug\_socket.jpg/320px-Usb\_type-c\_plug\_socket.jpg}} & RJ45\endnote{Wikimedia : \url{https://upload.wikimedia.org/wikipedia/commons/thumb/3/39/RJ45top.jpg/320px-RJ45top.jpg}}
\end{tabular}
\end{frame}
\begin{frame}
\frametitle{Atelier}
\begin{atelier}
\begin{enumerate}
\item \only<1>{Trouvez le nombre de processeur du Raspberrypi4,}\only<2->{quadcore, c'est-à-dire {\color{red}quatre processeurs} ou c\oe urs,}
\item \only<1-2>{trouvez la fréquence de chacun de ses processeurs,} \only<3->{une fréquence de {\color{red}1,5 GigaHertz (64 bits)},}
\item \only<1-3>{trouvez la mémoire vive dont il dispose,}\only<4->{sa mémoire vive peut être de {\color{red}2, 4, 6 ou 8 Go},}
\item \only<1-4>{trouvez le débit de sa sortie RJ45,}\only<5->{le {\color{red}Go/s},}
\item \only<1-5>{trouvez le minimum de mémoire morte que son système nécessite et}\only<6->{son système d'exploitation nécessite {\color{red}dix Go}.}
\item \only<1-6>{À la maison (si vous le voulez et avec précautions) : démontez votre smartphone et faites une reconnaissance de tous ses composants. Est-ce possible dans tous les cas ?}\only<7>{Certains smartphones ne permettent pas de retirer la batterie pour voir les composants, par exemple. Voyez le cas du Fairphone qui est entièrement démontable.}
\end{enumerate}
\end{atelier}
\end{frame}
\begin{frame}
\includegraphics[width=\textwidth]{Fairphone3}\endnote{Voir wikimedia commons~: \url{https://commons.wikimedia.org/wiki/File:Fairphone\_3\_modules\_on\_display.jpg}}
\end{frame}
\subsection{Systèmes d'exploitation}
\begin{frame}{Systèmes d'exploitations}
\begin{block}{OS : operating system}
Ce qui fait fonctionner l'ordinateur ; interface entre le matériel et l'utilisateur.
\end{block}
\begin{block}{Principaux OS}
\begin{tabular}{lll}
\color{red} Windows & \color{red}MacOS\up\textcopyright & \color{red}Linux\up\textcopyleft \\
Installé par défaut & Installé par défaut & De type Unix \\
ou acheté en pack & sur machine Apple & installable "partout"\\
Payant & Payant & Gratuit\\
\end{tabular}
\end{block}
\end{frame}
\begin{frame}{Systèmes d'exploitation propriétaires}
\begin{columns}
\begin{column}{0.5\textwidth}
\begin{block}{Mac OS\up\textcopyright}
Originalité : Concepteur d'ordinateur (hardware) et de système d'exploitation (software).
\medskip
Depuis Mac OS X, système de type UNIX très proche de Linux. Seule l'interface graphique est propre à Macintosh. Beaucoup des logiciels intégrés sont des logiciels libres : apache, samba, libreoffice, gimp, \dots{}
\end{block}
\end{column}
\begin{column}{0.5\textwidth}
\begin{block}{Windows\up\textcopyright}
Windows\up\textcopyright se décline en XP, Seven et 8, orientée pc-tablettes.
XP aurait du être abandonné, mais il a été récupéré pour investir le domaine des ultraportables et pour palier au peu de succès de Vista qui n'a pas été la réussite attendue.
\end{block}
\end{column}
\end{columns}
\end{frame}
\begin{comment}
\begin{frame}{Architectures}
L'ensemble des logiciels d'un ordinateur se décompose dans deux espaces : l'espace noyau -- l'espace utilisateur
\begin{columns}
\begin{column}{0.5\textwidth}
\begin{block}{Micronoyau}
\centering \includegraphics[width=5cm]{Architecture_micro-noyau.eps}
Noyau des système
Windows\up\textcopyright et MacOSX\up\textcopyright\endnote{\url{http://fr.wikipedia.org/wiki/Fichier:Architecture\_micro-noyau.png}}.
\end{block}
\end{column}
\begin{column}{0.5\textwidth}
\begin{block}{Noyau monolitique}
\centering \includegraphics[width=5cm]{Architecture_noyau-monolithique.eps}
Noyau du système Linux\endnote{\url{http://upload.wikimedia.org/wikipedia/fr/f/f9/Architecture\_noyau-monolithique.png}}.
\end{block}
\end{column}
\end{columns}
\end{frame}
\end{comment}
\subsection{Licences}
\begin{frame}[containsverbatim]{Binaire - Source\hypertarget{ouvertureducode}{}}
\begin{columns}
\begin{column}{0.5\textwidth}
\begin{block}{Binaire}
Un ordinateur ne comprend que les zéros et uns dont est composé un fichier binaire.
\smallskip
0100010 1001010 01010001 10010001010000101
\end{block}
\end{column}
\begin{column}{0.5\textwidth}
\begin{block}{Source}
Un programme s'écrit dans un langage compréhensible par l'homme et est traduit par un compilateur en binaire.
\begin{lstlisting}[basicstyle=\tiny]
if (argent = bonheur)
then (1/3 population = triste)
\end{lstlisting}
\end{block}
\end{column}
\end{columns}
\bigskip
Exemple de l'utilité de l'ouverture du code source : \hyperlink{projettelescopique}{\beamerbutton{Projet télescopique}}
\end{frame}
\begin{frame}{Licences}
\begin{columns}
\begin{column}{0.5\textwidth}
\begin{block}{Licences propriétaires}
Les logiciels peuvent uniquement être utilisés.
Ils ne peuvent pas être étudiés.
Ils restent la propriété de leur concepteurs.
\end{block}
\end{column}
\begin{column}{0.5\textwidth}
\begin{block}{Licences libres}
Le code des logiciels peut être étudié.
Il peut être modifié, amélioré et réutilisé.
Le code appartient à la communauté.
\end{block}
\end{column}
\end{columns}
\medskip
Propriétaires ou libres, il existe beaucoup de type de licences.
{ Dans le domaine du libre, les plus connues sont la GPL (licence publique générale) et les Creatives Commons. Relevons aussi que Windows\up\textcopyright et MacOS\up\textcopyright sont sous licence propriétaire, malgré l'utilisation par Mac d'un micronoyau Mach enrichi par un noyau BSD (licence BSD).}
\end{frame}
\begin{frame}{Free Software Foundation (FSF-GNU), licences libres}
\begin{block}{Quatre libertés}
\begin{description}
\item[Liberté 0] La liberté d'exécuter le programme — pour tous les usages ;
\item[Liberté 1] La liberté d'étudier le fonctionnement du programme — ce qui suppose l'accès au code source ;
\item[Liberté 2] La liberté de redistribuer des copies — ce qui comprend la liberté de vendre des copies ;
\item[Liberté 3] La liberté d'améliorer le programme et de publier ses améliorations — ce qui suppose, là encore, l'accès au code source.
\end{description}
\end{block}
\end{frame}
\begin{frame}{Libertés}
\begin{itemize}\small
\item La liberté 3 encourage la création d'une communauté de développeurs améliorant le logiciel et permet le fork.
\item « Libre » ne doit pas être compris comme « gratuit ». Chacun a le droit de redistribuer gratuitement ou non un logiciel libre.
\item Ces libertés doivent être irrévocables.
\begin{itemize}
\item possibilité d'en jouir sans devoir prévenir un tiers ;
\item possibilité de redistribuer le programme sous toute forme, notamment compilée ;
\item le code source doit être accessible pour jouir des libertés d'étude et d'amélioration ;
\item possibilité de fusionner des logiciels libres dont on n'est pas soi-même l'auteur\endnote{Wikipedia : \url{http://fr.wikipedia.org/wiki/Logiciels\_libres}}.
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}{GNU-Linux}
\begin{block}{}
\begin{description}
\item[GNU] Gnu is Not Unix. Richard Stallman crée la première licence libre. Il n'admettait pas de disposer d'une imprimante dont le logiciel ne fonctionnait pas, mais qu'il lui était interdit de corriger pour des raisons de licence.
\item[Linux] Linus Torvalds crée le noyau de ce qu'il nomme Lin-u-x. Il s'agit d'un noyau créé de tout pièces sur le modèle des systèmes d'exploitation UNIX de l'époque.
\item[GNU-Linux] est constitué d'un noyau monolitique et d'un ensemble de logiciels libres.
\end{description}
\end{block}
\end{frame}
\begin{frame}{Distributions Linux\up\textcopyleft}
\begin{columns}
\begin{column}{0.5\textwidth}
\begin{block}{Base .deb}
\begin{description}[Ubuntu]
\item[Debian] Système totalement libre : refus d'intégrer du code source sous licence non libre.
\item[Ubuntu] Système dérivé de Debian, mais se permettant si nécessaire d'intégrer du code non libre.
\item[LinuxMint] Système dérivé de Ubuntu.
\end{description}
\end{block}
\end{column}
\begin{column}{0.5\textwidth}
\begin{block}{Base .rpm}
\begin{description}[Mandriva]
\item[Redhat] Système orienté entreprises, payant.
\item[Mandrake] Système d'origine française.
\item[OpenSuSe] Système d'origine allemande.
\end{description}
\end{block}
\end{column}
\end{columns}
\end{frame}
\subsection{Applications}
\begin{frame}{Logiciels}
\emph{Quelques exemples multi-plateforme et libres}
\bigskip
\begin{columns}
\begin{column}{0.3\textwidth}
\begin{description}[Texte]
\item[Texte] OpenOffice (fork libreoffice), Scribus, Latex, \dots{}
\item[Image] Gimp, Digikam, ImageMagik, \dots{}
\end{description}
\end{column}
\begin{column}{0.3\textwidth}
\begin{description}[Code]
\item[Code] Perl, Python, C, \dots{}
\item[Web] Firefox, Apache, Wordpress, \dots{}
\item[Bases] MariaDB, \dots{}
\end{description}
\end{column}
\begin{column}{0.3\textwidth}
\begin{description}[Astro]
\item[Astro] Celestia, Kstar, Stellarium, \dots{}
\item[Mail] Thunderbird, Kmail, Evolution, \dots{}
\end{description}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Services}
\begin{columns}
\begin{column}{0.5\textwidth}
\begin{block}{Serveur}
Une machine allumée en permanence.
\end{block}
\end{column}
\begin{column}{0.5\textwidth}
\begin{block}{Services}
Des logiciels toujours accessibles comme~:
\begin{description}[aaaaaaaaaaaaaa]
\item[Serveur Web] Internet
\item[Serveur DNS] Nom et adresse
\item[Serveur de temps] Date et heure
\item[Serveur mail] Mails
\item[Serveur de fichiers] Fichiers
\item[Serveur de streaming] Films
\end{description}
\end{block}
\end{column}
\end{columns}
\end{frame}
\subsection{Réseau}
\begin{frame}{Réseau}
\begin{columns}
\begin{column}{0.5\textwidth}
\centering
\includegraphics[height=1.8cm]{Louvre_plan}\endnote{Wikimedia : \url{https://commons.wikimedia.org/wiki/File:Louvre\_plan.png?uselang=fr}}
\begin{block}{Réseau d'habitations}
\begin{description}[dddddddddd]
\item[Transport] Route, air, eau, carrefour
\item[Moyen] Voiture, vélo, pieds
\item[Lieu] Adresse, numéro
\item[Ouvertures] Porte, fenêtre, boite aux lettres
\end{description}
\end{block}
\end{column}
\begin{column}{0.5\textwidth}
\centering
\includegraphics[height=1.8cm]{Reseau_arborescent}\endnote{Wikimedia : \url{https://commons.wikimedia.org/wiki/File:Reseau\_arborescent.svg?uselang=fr}}
\begin{block}{Réseau de machines}
\begin{description}[dddddddddd]
\item[Transport] Ethernet, wifi, routeurs
\item[Protocole (Moyen)] Http, ftp, ssh, smb, \dots
\item[Lieu] Nom de domaine ou (DNS) adresse IPV4~: 192.168.0.1
\item[Ouvertures] Ports~:80, 22, \dots
\end{description}
\end{block}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Atelier}
\begin{atelier}
\begin{description}
\item[Adresse IP] \only<1>{Déterminez l'adresse IP de votre machine,}\only<2->{On utilise la commande {\color{red}ip addr}}
\item[Réseau] \only<1-2>{comparez votre adresse IP à celle de vos camarades,}\only<3->{les trois {\color{red}premier nombres sont identiques} ; ils définissent le réseau du lbc,}
\item[Transport] \only<1-3>{tracez la route de vos données vers Raspinoir,}\only<4->{On utilise la commande {\color{red}traceroute IP ou nom de domaine}}
\item[Protocole] \only<1-4>{connectez-vous en http à l'adresse de Raspinoir ; qu'obtenez-vous ?\\Connectez-vous en ssh à cette même adresse ; qu'obtenez-vous ?\\Connectez-vous sur le port FTP à cette adresse ; qu'obtenez-vous ?\\Connectez-vous au serveur de vidéo de la physique à l'aide de VLC et commencez à visionner un film. Quel est le protocole utilisé ?}\only<5>{Le {\color{red}site internet} principal de Raspinoir.\\Une {\color{red}interface de connexion} sur Rapinoir.\\{\color{red}Une erreur}, car aucun serveur FTP n'est présent.\\{\color{red}Une erreur, car il est éteint} mais le protocole est UPNP/DLNA}
\end{description}
\end{atelier}
\end{frame}
\subsection{Sécurité}
\begin{frame}{Notions générales de sécurité}
\begin{block}{}
\begin{description}
\item[Machines] Fermeture des ports inutilisés (fermeture des portes)
\item[Logiciels] Mises-à-jour régulières et utilisation des dépôts officiels
\item[Piratage] Hameçonnage : demande par mail de modif. de coordonnées bancaires, par exemple,\\ manipulation d'URL~:\\\url{https://www.lbc.ch/?lelbc.ch},\\ virus, pièces jointes, macros, javascript, html\\ mots de passe (principal navigateur), force brute, dictionnaires, \dots
\end{description}
\end{block}
\end{frame}
\begin{frame}{Chiffrage}
\begin{block}{Chiffrage - déchiffrage, cryptage, authentification : principes\endnote{Voir Wikimedia commons : \url{https://commons.wikimedia.org/wiki/File:Chiffrement_asymétrique.jpg}}}
\centering \includegraphics[width=\textwidth]{Chiffrement_asymetrique.eps}
\end{block}
\end{frame}
\begin{frame}{Chiffrage}
\begin{block}{Chiffrage - déchiffrage : PGP}
\centering \includegraphics[width=\textwidth]{EmailDefense92pppCoupe1}
\end{block}
\end{frame}
\begin{frame}{Chiffrage}
\begin{block}{Chiffrage - déchiffrage : PGP}
\centering \includegraphics[width=\textwidth]{EmailDefense92pppCoupe2}
Voir l'excellent mode d'emploi d'\og Autodéfense courriel\fg\endnote{Voir le mode d'emploi « Autodéfense courriel » : \url{https://emailselfdefense.fsf.org/fr/}}.
\end{block}
\end{frame}
\begin{frame}{Chiffrage}
\begin{block}{Application : communications client-serveur}
\begin{description}
\item[web] : https
\item[terminal] : ssh
\item[mails] : pops, imaps : ssl/tls ; gpg
\item[fichiers] : scp, sftp
\end{description}
\end{block}
\begin{block}{Application : navigateur sécurisé-anonyme}
\centering
Navigateur TOR : recommandé par Edward Snowden.
Principe des poupées russes.
Un excellent article pour comprendre avec des mots http, https et Tor~: \url{https://docs.framasoft.org/fr/comprendre/https-vpn.html}
\end{block}
\end{frame}
\section{DF Informations et données}
\subsection{Stockage : binaire}
\begin{frame}{Représentation d'un nombre}
Comment un ordinateur comprend-il les nombres ?
\medskip
\onslide<2->Représentation décimale :
\[\onslide<2->127=\onslide<3->100 +20 +7=\onslide<4->1\cdot 100 +2\cdot 10 +7\cdot 1=\onslide<5->1\cdot 10^2 +2\cdot 10^1 +7\cdot 10^0\]
\onslide<6->Représentation binaire :
\[\onslide<7->1101=\onslide<8->1\cdot 2^3+1\cdot 2^2+0\cdot 2^1+1\cdot 2^0=\onslide<9>8+4+0+1=13\]
\end{frame}
\begin{frame}{A l'envers ? Première méthode.}
Il s'agit de passer du nombre décimal 13 à son correspondant binaire 1101. Deux méthodes sont possibles.
\medskip
La première est intuitive :
\begin{enumerate}
\item On trouve la plus grande puissance de 2 inférieure ou égale au nombre décimal, ici \(2^3\) car \(2^3=8<13\),
\item On calcule le reste, ici \(13-8=5\) et on reprend le premier point pour celui-ci et les suivants.
\end{enumerate}
On obtient alors \(2^2=4\) et il reste \(1=2^0\). Le nombre binaire cherché se factorise donc ainsi :
\[13=1\cdot 2^3+1\cdot 2^2+0\cdot 2^1+1\cdot 2^0\]
Le résultat est donc donné par les facteurs de chaque puissance de deux : 1101.
\end{frame}
\begin{frame}{A l'envers ? Seconde méthode.}
Il s'agit de passer du nombre décimal 13 à son correspondant binaire 1101.
\medskip
La seconde méthode est plus ''mécanique`` :
elle consiste à diviser le nombre par deux successivement.
Les restes constituent le nombre binaire \textit{à l'envers}.
Par exemple, 13/2=6 reste 1. Puis, 6/2=3 reste 0. Puis, 3/2=1 reste 1 et enfin, 1/2=0 reste 1.
Les restes sont successivement 1011. En inversant, on obtient le nombre binaire 1101 qui correspond au nombre décimal 13.
\end{frame}
\begin{frame}{Exercices}
Convertissez les nombres suivants :
\begin{itemize}
\item \onslide<1->8 en binaire \onslide<2->\(\;=1000\) car \(1\cdot 2^3+0\cdot 2^2+0\cdot 2^1+0\cdot 2^0=8\)
\item \onslide<1->21 en binaire \onslide<3->\(\;=10101\) car \(1\cdot 2^4+0\cdot 2^3+1\cdot 2^2+0\cdot 2^1+1\cdot 2^0=21\)
\item \onslide<1->1001101 en décimal \onslide<4->\(\;=77\) car \(1\cdot 2^6+0\cdot 2^5+0\cdot 2^4+1\cdot 2^3+1\cdot 2^2+0\cdot 2^1+1\cdot 2^0=77\)
\item \onslide<1->1101,101 en décimal \onslide<5->\(\;=13,625\) car \(1\cdot 2^3+1\cdot 2^2+0\cdot 2^1+1\cdot 2^0+1\cdot 2^{-1}+0\cdot 2^{-2}+1\cdot 2^{-3}=13,625\)
\item \onslide<1->14,25 en binaire \onslide<6->\(\;=1110,01\) car \(1\cdot 2^3+1\cdot 2^2+1\cdot 2^1+0\cdot 2^0+0\cdot 2^{-1}+1\cdot 2^{-2}=14,25\)
\end{itemize}
\end{frame}
\begin{frame}{Byte, bit et octet}
\transdissolve<3>
\begin{columns}
\begin{column}{0.5\textwidth}
\begin{block}<1->{Décimal}
\begin{description}[23, 45, 234, \dots]
\item[0, 1, 2, \dots, 9] : chiffres.
\item[23, 45, 234, \dots] : nombres.
\end{description}
\end{block}
\end{column}
\begin{column}{0.5\textwidth}
\begin{block}<2->{Binaire}
\begin{description}[101, 11, 10, \dots]
\item[0 et 1] : \textbf{bits}.
\item[101, 11, 10, \dots] : nombres.
\end{description}
\end{block}
\end{column}
\end{columns}
\medskip
\uncover<3>{(Attention, 101 binaire ne se lit pas ''cent un`` et ne correspond pas à la valeur décimale 101. En réalité, on a :
\[0_b=0_d\,;\,1_b=1_d\,;\,10_b=2_d\,;\,11_b=3_d\,;\,100_b=4_d\,;\,101_b=5_d\, \dots)\]}
\end{frame}
\begin{frame}{Byte, bit et octet}
\begin{itemize}
\item<1-> Avec un \emph{bit}, on a les nombres 0 et 1, soit deux nombres.
\item<2-> Avec deux \emph{bits}, on a les nombres 00, 01, 10 et 11, soit quatre nombres.
\item<3-> Avec trois \emph{bits}, on a les nombres 000, 001, 010, 011, 100, 101, 110 et 111, soit huit nombres.
\item<4-> Avec quatre \emph{bits}, on a \dots ?
\item<5-> Avec n \emph{bits}, on a un \textbf{arrangement avec répétition de k éléments choisis parmi deux} (0 ou 1). Les mathématiques donnent alors le nombre de ces arrangements :
\[\bar A_k^2=2^k\]
\end{itemize}
\end{frame}
\begin{frame}{Byte, bit et octet}
Avec huit bits, on a donc :
\[\bar A_8^2=2^8=256\,\text{possibilités}\]
On peut donc représenter 256 nombres.
\medskip
\begin{center}
\fbox{\parbox{6cm}{Un \textbf{octet} est un nombre de huit bits.
Un \emph{octet} est aussi nommé \textbf{byte}.}}
\end{center}
\end{frame}
\begin{frame}{kilobyte, Megabyte, Gigabyte, \dots}
\begin{columns}
\begin{column}{0.5\textwidth}
\begin{block}<1->{Décimal}
kilo \(\equiv\) nombre de possibilités de réaliser un nombre à l'aide de 3 chiffres :
\[\bar A_3^{10}=10^3=1000\,\text{possibilités}\]
\end{block}
\end{column}
\begin{column}{0.5\textwidth}
\begin{block}<2->{Binaire}
kilo \(\equiv\) nombre de possibilités de réaliser un nombre à l'aide de 10 bits :
\[\bar A_{10}^2=2^{10}=1024\,\text{possibilités}\]
\end{block}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{kilobyte, Megabyte, Gigabyte, \dots}
\begin{enumerate}
\item Un kilobyte ou kilooctet, noté ko, correspond à 1024 octets.
\item Un Megabyte ou Megaoctet, noté Mo, correspond à 1024 kilooctet, soit 1'048'576 bytes ou octets.
\item Un Gigabyte ou Gigaoctet, noté Go, correspond à 1024 Megaoctet, soit 1'048'576 kilobyte ou 1'073'741'824 bytes.
\end{enumerate}
L'ordre de grandeur correspond à la notation décimale :
\begin{enumerate}
\item kilo pour milliers.
\item Mega pour millons.
\item Giga pour milliards.
\end{enumerate}
\end{frame}
\begin{frame}
Un processeur peut être comparé à une machine à calculer dont l'affichage comporte un nombre limité de chiffres.
\begin{block}{En décimal}
Pour prendre un exemple simple, supposons que notre calculette ne peut calculer qu'avec trois chiffres.
\smallskip
Le nombre de nombres entiers positifs différents qu'elle peut afficher est de \num{e3}. En effet, on comprend bien que ceux-ci varient de 000 à 999. Ils sont donc au nombre de 1000. Le plus petit est 000 et le plus grand 999.
\smallskip
Si une place est réservée au signe, alors le nombre de nombres possible est de \num{e2} nombres positifs (de +00 à +99) et de \num{e2}-1 nombres négatifs (de -01 à -99), soit au total 100 + 99 = 199.
\end{block}
\end{frame}
\begin{frame}
Un processeur peut être comparé à une machine à calculer dont l'affichage comporte un nombre limité de chiffres.
\begin{block}{En binaire}
\begin{center}
Entiers positifs sur trois bits~: \_ \_ \_
\end{center}
\begin{columns}
\begin{column}{0.2\textwidth}
000 → 0\\
001 → 1\\
010 → 2\\
011 → 3\\
100 → 4\\
101 → 5\\
110 → 6\\
111 → 7\\
\smallskip
\end{column}
\begin{column}{0.6\textwidth}
Au total \(2^3\)=8 chiffres
Mininum~: 000 -> 0
Maximum~: 111 ->
\(1\cdot 2^2+1\cdot 2^1+1\cdot 2^0=4+2+1=7\)
\end{column}
\end{columns}
\end{block}
\end{frame}
\begin{frame}
Un processeur peut être comparé à une machine à calculer dont l'affichage comporte un nombre limité de chiffres.
\begin{block}{En binaire}
\begin{center}
Entiers signé sur trois bits~: \_ \_ \_
\end{center}
\begin{columns}
\begin{column}{0.2\textwidth}
000 → 0\\
001 → 1\\
010 → 2\\
011 → 3\\
100 → -0\\
101 → -1\\
110 → -2\\
111 → -3\\
\smallskip
\end{column}
\begin{column}{0.6\textwidth}
Premier bit~: signe
\((-1)^0=+1=+\;\) ; \(\;(-1)^1=-1=-\)
Au total \(2^3\)=8 chiffres
4 chiffres positifs, 3 chiffres négatifs
Mininum~: 111 -> -3
Maximum~: 011 -> 3
\end{column}
\end{columns}
\end{block}
\end{frame}
\begin{frame}{Exercices}
\small
\only<1-2>{Sur un processeur 16 bits, combien de nombres entiers non signés peut on représenter ?\\
(un processeur 16 bits peut manipuler des ``mots'' de 16 bits, exemple 1110110000110110)}
\only<2>{\\\smallskip On a \(2^{16}=65'536\) possibilités, soit autant de nombres.}
\only<3-4>{Sur le même processeur, quels sont les plus petits et plus grands nombres entiers signés qui puissent être représentés ?\\
(c'est à dire avec la possibilité de faire des nombres positifs et négatifs)}
\only<4>{\\\smallskip On a un bit de signe (0 ou 1) et 15 bits pour le nombre, soit \(2^{15}=32'768\) possibilités. On peut donc représenter des nombres de -32'768 à 32'767 (à cause du zéro).
En effet, le nombre le plus élevé est 0111111111111111, soit \(2^{15}+2^{14}+...+2^1+2^0=32'767\) et le plus faible 1111111111111111, soit \(-32'767\).
Mais le nombre 1000000000000000 pourrait être utilisé pour -32'768 à la place de -0.}
\only<5-6>{Sur un processeur 32 bits, si on met dans un fichier une fois tous les nombres entiers non signés, quel sera en Go la taille du fichier ?}
\only<6>{\\\smallskip Avec un tel processeur on a \(2^{32}=4'294'967'296\) nombres possibles (avec le zéro). Chaque nombre est codé sur 32 bits, soit au total \(4'294'967'296\cdot 32=1,37\cdot 10^{11}\) bits.
\medskip
Cela représente \(1,37\cdot 10^{11}/8=1,71\cdot 10^{10}\) octets ou \(1,71\cdot 10^{11}/1024=16'777'216\) ko, ou encore \(16'777'216/1024=16'384\) Mo, c'est-à-dire 16 Go.}
\end{frame}
\begin{frame}{Supports de données}
\begin{block}{}
\centering
\includegraphics[width=0.15\textwidth]{BandesMagnetiques}\endnote{Voir Wikimedia commons~: \url{https://commons.wikimedia.org/wiki/File:Computer\_tapes.jpg}}
\includegraphics[width=0.15\textwidth]{dd}\endnote{Voir Wikimedia commons~: \url{https://commons.wikimedia.org/wiki/File:Disque_dur\_0004.JPG}}
\includegraphics[width=0.15\textwidth]{ssd}\endnote{Voir Wikimedia commons~: \url{https://commons.wikimedia.org/wiki/File:Vertex_2_Solid_State_Drive_by_OCZ-top_oblique_PNr\%C2\%B00307.jpg}}
\includegraphics[width=0.15\textwidth]{cleusb}\endnote{Voir Wikimedia commons~: \url{https://commons.wikimedia.org/wiki/File:16\_USB\_flash\_drives.jpg}}
\includegraphics[width=0.15\textwidth]{cartesd}\endnote{Voir Wikimedia commons~: \url{https://commons.wikimedia.org/wiki/File:Bildverarbeitung\_blob\_sdcard.png}}
\begin{description}
\item[Bande magnétique] plastique et oxyde magnétique (oxyde ferrique) (haute capacité, accès très lent)
\item[Disque dur] disque magnétique (haute capacité, accès lent)
\item[Disque dur ssd] mémoire EEPROM (moyenne capacité, accès rapide)
\item[Clé USB] mémoire EEPROM (moyenne capacité, accès moyen)
\item[Carte SD] mémoire EEPROM (faible capacité, accès varié)
\end{description}
\end{block}
\end{frame}
\subsection{Texte, codage, encodage}
\begin{frame}[containsverbatim]{Texte et codage}
\centering Caractères \(\leftrightarrows\) table des caractères
\begin{columns}
\begin{column}{0.5\textwidth}
\begin{block}{\small Norme ISO \tiny (International Organization for Standardization)}
\tiny Dérivée des 128 caractères codés de 0 à 127, soit en binaire de 0000000 à 1111111 du codage ASCII (merican Standard Code for Information Interchange).
\smallskip
\fbox{
\begin{minipage}{5cm}
\scriptsize Huit bit, soit un octet ; correspond à l'ISO-8859-1 ou latin 1. Codage jusqu'à 256 caractères.
\end{minipage}
}
\smallskip
\tiny Le latin-0 et le latin-1, ISO 8859-1 et ISO 8859-15, décrivent les caractères de l'Europe de l'ouest, avec ou sans le carcatère de l'euro.
\end{block}
\end{column}
\begin{column}{0.5\textwidth}
\begin{block}{\small Norme UTF \tiny (Universal coded character set Transformation Format)}
\small \color{red} Table de codage unique : ``Unicode''.
\tiny \color{black} Elle sépare la représentation du caractère du codage lui-même par l'intermédiaire d'un index numérique nomé \emph{point de code}. Celui-ci s'écrit \verb=U+nombre_hexadécimal=. Les caractères correspondant au latin de base se trouvent entre les points de code 0000 et 007F, ce qui correspond en décimal à un index de 0 à 127, c'est-à-dire aux caractères ASCII.
\end{block}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Codage et glyphes}
A un caractère correspond un seul point de code, mais peut correspondre plusieurs glyphes.
\smallskip
\begin{columns}
\begin{column}{0.5\textwidth}
\centering \includegraphics[width=5.5cm]{Libertine.eps}
\end{column}
\begin{column}{0.5\textwidth}
\centering \includegraphics[width=4.5cm]{Glyphe.eps}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Fontes -- bésier -- bitmap}
\centering Fontes vectorielles -- Fontes bitmap
Postscript, truetype -- bdf
\tiny Un fichier, plusieurs fontes anti-aliasées -- Un fichier, une seule fonte non anti-aliasée
\small
\medskip
\begin{columns}
\begin{column}{0.3\textwidth}
Courbe de bésier
\smallskip
\centering \includegraphics[width=3.5cm]{BesierM.eps}
\end{column}
\begin{column}{0.3\textwidth}
Représentation bitmap
\smallskip
\centering \includegraphics[width=3.5cm]{BitmapM.eps}
\end{column}
\begin{column}{0.3\textwidth}
Anti-aliasing et hinting
\smallskip
\centering \includegraphics[width=3.5cm]{AntiAliasingM.eps}
\end{column}
\end{columns}
Autres problèmes rencontrés : gestion des crénages (ex.: Tc).
\end{frame}
\begin{frame}{Moteur de rendu de fontes}
\Large Le rendu des fontes se fait automatiquement au moment de la frappe de chaque caractère !!!
\bigskip
\normalsize Reste à créer vos propre glyphes :
\small avec ou sans empattement -- avec ou sans serif -- à taille fixe ou pas
\begin{center}\LARGE \sffamily AaBbCcFcTeFi \rmfamily AaBbCcFcTeFi \ttfamily AaBbCcFcTeFi\end{center}
\end{frame}
\subsection{Formats de fichier}
\begin{frame}{Structure d'un fichier LibreOffice~: odt}
\begin{atelier}
\begin{enumerate}
\item Faites une maquette de documentation de projet avec LibreOffice : titre, entête, pied de page, pagination, table des matières, sections, sous-sections, images \dots
\item Enregistrez celle-ci dans un répertoire nommé \emph{Maquette} avec le nom de fichier \emph{maMaquette.odt}.
\item Faites une copie de ce fichier.
\item Renommez ce fichier (pas la copie) \emph{maMaquette.zip}.
\item Par un clic droit sur ce dernier, sélectionnez \emph{Extraire ici}.
\item Rendez-vous dans le répertoire ou dossier créé.
\item Que contient-il ? En déduire ce qu'est un fichier zip.
\end{enumerate}
\end{atelier}
\end{frame}
\begin{frame}{Structure d'un fichier LibreOffice~: odt \hyperlink{LOstyles}{\beamerbutton{LibreOffice avec styles}} \hypertarget{LOstylesDO}{}}
\begin{atelier}
\begin{enumerate}
\item Que contient le répertoire \emph{images}
\item Trouvez le fichier \emph{content.xml}. Ouvrez-le avec un éditeur de texte simple (pas LibreOffice). Que contient-il ?
\item Trouvez-y une phrase que vous avez écrite et changez là, sans rien toucher d'autre. Enregistrez.
\item Sélectionnez tous les fichiers du répertoire, à l'exception du fichier \emph{maMaquette.zip} et cliquez-droit sur ceux-ci.
\item Sélectionnez \emph{Compresser} et dans la boite de dialogue spécifiez \emph{zip} comme format de fichier et enregistrez ce fichier sur le bureau, sous le nom \emph{maSecondeMaquette.zip}.
\item Changez l'extension de ce dernier fichier en odt et ouvrez-le avec LibreOffice. Que constatez-vous ?
\end{enumerate}
\end{atelier}
\end{frame}
\begin{frame}{types de fichiers}
Il existe trois types de fichiers~:
\begin{description}
\item[les fichiers binaires] Il faut un utilitaire spécial pour voir le contenu binaire. Il s'agit de 0 ou 1 ou éventuellement de caractères hexadécimaux.
\item[les fichiers types] Plusieurs applications peuvent les ouvrir et les lire. Par exemple, jpg pour les images, mp3 pour les sons, ogg pour les vidéos.
\item[les fichiers d'application] Seul l'application ayant créé le fichier peut l'ouvrir. Par exemple, xcf pour Gimp ou psd pour Photoshop : dans les deux cas c'est une image, mais les modifications faites dans ces logiciels sont stockées de manière particulière à ceux-ci.
\end{description}
\end{frame}
\subsection{Bases de données}
\begin{frame}{Tableur LibreOffice : classification d'espèces d'arbres}
\begin{atelier}
Avec le tableur de LibreOffice (Calc), réalisez un système qui permet de dénombrer le nombre d'individus (arbres) de plusieurs espèces (Érable, Hêtre, Chêne, sapin, épicia, \dots) sur une région donnée à une date donnée, pour deux observateurs référencés, chacun ayant son propre tableau de remplissage sur la même feuille.
\smallskip
Dans un autre tableau doit se trouver la présentation des espèces et le nombre d'individus total recensés, le nombre total d'individus et le pourcentage d'individus par espèce. Enfin, un tableau supplémentaire doit permettre de voir le nombre d'arbres comptabilisé par chaque observateur.
\end{atelier}
\end{frame}
\begin{frame}{Résultat}
\includegraphics[width=\textwidth]{RecensementArbres}
\end{frame}
\begin{frame}
\begin{block}{Tableur -> base de donnée}
Différents problèmes se présentent~:
\begin{itemize}
\item Ajout d'espèces à plusieurs places, ajout d'observateurs, ajout de régions ?
\item Redondance des deux tableaux des observateurs.
\item Présentation complexe.
\item Accès à distance avec présentation interface d'acquisition propre à chaque utilisateur, centralisation des données et visualisation de certaines d'entre elles.
\end{itemize}
\end{block}
\end{frame}
\begin{frame}
\begin{block}{Bases de donnée}
Une base de donnée est constituée de deux éléments~:
\begin{enumerate}
\item un ensemble d'informations et
\item un structure permettant leur accès.
\end{enumerate}
\end{block}
\begin{block}{Exemples}
\begin{description}
\item[Fichier texte CSV] Ficher très simple, structuré en colonnes délimitées par des séparateurs de différents types : tabulations, espaces, virgules, ...
\item[Tableaux associatifs (NoSQL)] Structure très simple composée de paires clé \(\rightarrow\) valeur, permettant des recherches très efficaces.
\item[Relationnelles] MariaDB, PostgreSQL, SQLite, \dots
\end{description}
\end{block}
\end{frame}
\begin{frame}{Systèmes d'Information Géographique : QGIS}
\includegraphics[width=\textwidth]{Jointure}
\end{frame}
\section{DF Algo. et programmation}
\subsection{Introduction}
\begin{frame}[containsverbatim]{Binaire - Source\hypertarget{ouvertureducode}{}}
\begin{columns}
\begin{column}{0.5\textwidth}
\begin{block}{Binaire}
Un ordinateur ne comprend que les zéros et uns dont est composé un fichier binaire.
\smallskip
0100010 1001010 01010001 10010001010000101
\end{block}
\end{column}
\begin{column}{0.5\textwidth}
\begin{block}{Source}
Un programme s'écrit dans un langage compréhensible par l'homme et est traduit par un compilateur en binaire.
\begin{lstlisting}[basicstyle=\small]
if (argent = bonheur)
then
(1/3 population = triste)
\end{lstlisting}
\end{block}
\end{column}
\end{columns}
\bigskip
Exemple de l'utilité de l'ouverture du code source : \hyperlink{projettelescopique}{\beamerbutton{Projet télescopique}}
\end{frame}
\begin{frame}{Everything as code}
\begin{block}{Biologie - Informatique}
Tout comportement du vivant peut-il être traité comme le résultat d'un code complexe ?\footnote{Voir le film IROBOT.}
\end{block}
\begin{block}{Hardware - software}
Qu'est-ce que le software par opposition à l'hardware ?
\end{block}
\end{frame}
\subsection{Langages}
\begin{frame}[containsverbatim]{Langages de programmation}
\begin{columns}
\begin{column}{0.5\textwidth}
\begin{block}{Scratch, codeblock}
\includegraphics[width=\textwidth]{scratchargentbonheur}
\end{block}
\end{column}
\begin{column}{0.5\textwidth}
\begin{block}{Javascript, Python, C++, \dots}
\begin{lstlisting}[basicstyle=\footnotesize]
if (argent == bonheur)
{1/3 population = triste}
else
{La rose du cantonnier}
\end{lstlisting}
\begin{lstlisting}[basicstyle=\footnotesize]
if argent == bonheur :
1/3 population = triste
else :
La rose du cantonnier
\end{lstlisting}
\end{block}
\end{column}
\end{columns}
\end{frame}
\subsection{Programmation}
\begin{frame}{Scratch : \url{https://scratch.mit.edu/}}
L'éditeur de code se trouve à l'adresse :
\begin{center}
\url{https://scratch.mit.edu/projects/editor/}
\end{center}
\includegraphics[width=\textwidth]{scratch}
\end{frame}
\begin{frame}{Éléments de base de la programmation}
\begin{columns}
\begin{column}{0.65\textwidth}
\includegraphics[width=\textwidth]{elementsBaseProg}
\end{column}
\begin{column}{0.35\textwidth}
\begin{itemize}
\item Entrée, sortie
\item Variable ; liste
\item Condition logique
\item Test, boucle
\item Événement
\item Commentaires
\item Procédure, fonction (voir suite)
\end{itemize}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Procédures et fonctions}
\begin{columns}
\begin{column}{0.5\textwidth}
\includegraphics[width=0.5\textwidth]{Procedure}\\
\includegraphics[width=0.5\textwidth]{Fonction}
\end{column}
\begin{column}{0.5\textwidth}
\begin{enumerate}
\item[Procédure] Un code nommé qu'on peut appeler à plusieurs reprises et qui ne retourne rien.
\item[Fonction] Un code nommé qu'on peut appeler à plusieurs reprises et qui retourne quelque chose.
\end{enumerate}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Arguments}
\begin{columns}
\begin{column}{0.5\textwidth}
\includegraphics[width=\textwidth]{Fonction}
\end{column}
\begin{column}{0.5\textwidth}
Un argument est un élément qu'on transmet à une procédure ou une fonction, comme dans le cas ci-contre.
\smallskip
L'argument transmis à la fonction est ici le rayon permettant de calculer l'aire d'un cercle.
\smallskip
Il peut y avoir plusieurs arguments, de différentes natures, comme des nombres, du texte, \dots
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Algorithmique et langages}
\begin{columns}
\begin{column}{0.45\textwidth}
\includegraphics[width=\textwidth]{Algorithmique}
\end{column}
\begin{column}{0.5\textwidth}
Sur la figure ci-contre se trouvent :
\begin{description}
\item[L'algorithme] Un énoncé en mots de la solution d'un problème.
\item[Scratch] Une présentation dans un langage de blocs.
\item[Python] Une solution sous forme de code.
\end{description}
\footnotesize{La suite de la comparaison : \url{https://www.carnets.info/formation/tableau_AlgoScratch3Python.pdf} en remerciant son auteur qui a rendu libre sa documentation.}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Projet SCRATCH}
\begin{atelier}
\begin{center}
Votre projet SCRATCH
\begin{itemize}
\item Par groupe de deux (même note)
\item Avalisé (par votre professeur)
\item Bien documenté (la doc. est aussi importante que le code !)
\end{itemize}
\end{center}
\end{atelier}
\end{frame}
\section{DF Informatique et société}
\begin{frame}{L'informatique est-elle un progrès ?}
\begin{block}{\color{red}{La technique est-elle vraiment neutre ?}}
\begin{description}
\item[Consommation d'énergie vs utilité] Dix pourcent de la consommation électrique mondiale (2018), soit quatre pourcent des émissions à effet de serre, avec cinq pourcent d'augmentation tous les ans\footnote{Voir CNRS~: \url{https://lejournal.cnrs.fr/articles/numerique-le-grand-gachis-energetique}}.
\item[Sécurité vs vie privée] Rançons, cyberharcellement, \dots
\item[Traçage et informations personnelles] Internet est le lieu d'un espionnage systématique. Les logiciels des smartphones sont bourrés de traceurs.
\item[Droit et libertés] Respect du droit sur internet, en particulier respect du droit d'auteur, licences libres.
\item[Information et secrets] Droit à l'information et droit à l'oubli.
\end{description}
\end{block}
\end{frame}
\begin{frame}{L'informatique est-elle un progrès ?}
\begin{block}{\color{red}{La technique est-elle vraiment neutre ?}}
\begin{description}
\item[Robotique] Film Irobot : les robots sont-ils nos amis ? Anecdote des chocolats \dots
\item[Intelligence artificielle] Sélection intelligente des meilleurs enseignants \dots
\item[Big data] Apple et son intelligence raciste \dots
\item[Outils de suivi : reconnaissance faciale, géopositionnement] Être toujours sur ses gardes \dots
\item[Outils de propagande] Fakes news, cambridge analytica (Facebook), résultats américains du moteur de recherche de Google \dots
\end{description}
\end{block}
\end{frame}
\begin{frame}{L'informatique est-elle un progrès ?}
\begin{block}{\color{red}{La technique est-elle vraiment neutre ?}}
\begin{description}
\item[Exploitation humaine] « La machine est ton seigneur et maître Analyses, [\dots] témoignages sur la vie des ouvriers des usines de Foxconn qui la perdent à fabriquer iPhone, [\dots] » (Yang, Jenny Chan, Xu Lizhi)
\item[Transports] L'immense majorité des déplacement en voiture se fait sur moins de cinq kilomètre et ne déplace qu'une seule personne. L'immense majorité des messages électroniques ne sert à rien.
\item[Santé] Opérer à distance. Un bon choix de connaissances ?
\item[Machinisme] Des ordinateurs surpuissants pour faire quoi ? Des tronçonneuses pour couper les branchettes des haies ?
\item[Histoire luditte] « Techno-critiques Du refus des machines à la contestation des technosciences » François Jarrige
\end{description}
\end{block}
\end{frame}
\begin{frame}{Un nuage de gouttes d'énergie : fleuve sans raisons ?}
Voiture~: contenant deux tonnes pour 80 kg d'humain ; distance moyenne journalière env. 5 km (pour les croissants :-); inefficacité énergétique, pollution sonore, pollution atmosphérique, infrastructure pétrolière polluante \dots
\begin{block}{informatique}
Smartphones~: terres rares, infrastructure d'extraction et de livraison importante, exploitation de travailleurs\footnote{Voir~: « La machine est ton seigneur et ton maître », Yang, Jenny Chan, Xu Lizhi, nov. 2015, Agone} consommation énergétique très importante (24h/24 pour une utilisation faible ; qui éteint son smartphone ?), infrastructure de communication faite de routeurs incroyablement nombreux, smog électromagnétique, \dots{} pour « Bon, t'es où ? », « Juste là, je te vois ».
\end{block}
\end{frame}
\begin{frame}{Vie privée \color{red}{(Affaire Pegasus (2021)}}
\begin{block}{Affaire des fiches (1989)}
{\tiny \og En novembre, cette commission denquête annonce ses résultats. [\dots] Elle critique également la prévention de la Police fédérale contre les contestataires usant de moyens démocratiques et ses méthodes de récolte dinformation et annonce qu'elle a découvert que le Ministère public de la Confédération était en possession de fiches contenant des rapports d'observations effectuées sur des personnes et des groupes particuliers en Suisse. Ce qui deviendra \og le scandale des fiches \fg{} \dots{} \fg{} Wikipedia~: \url{https://fr.wikipedia.org/wiki/Scandale\_des\_fiches}}
\end{block}
\begin{columns}
\begin{column}{0.8\textwidth}
\begin{block}{Edward Snowden (2013)}
{\tiny \og Snowden rend publiques, par lintermédiaire des médias, des informations classées top-secrètes de la NSA concernant la captation des métadonnées des appels téléphoniques aux États-Unis, ainsi que les systèmes découte sur Internet des programmes de surveillance PRISM, XKeyscore, Boundless Informant et Bullrun du gouvernement américain et les programmes de surveillance Tempora, Muscular et Optic Nerve du gouvernement britannique.\fg{} Voir~: wikipedia~: \url{https://fr.wikipedia.org/wiki/Edward\_Snowden}}
\end{block}
\end{column}
\begin{column}{0.2\textwidth}
\includegraphics[width=\textwidth]{Snowden}\endnote{Voir wikimedia commons~: \url{https://commons.wikimedia.org/wiki/File:Edward\_Snowden.jpg}}
\end{column}
\end{columns}
\end{frame}
\begin{frame}
\begin{atelier}
\begin{enumerate}
\item Ouvrez Firefox.
\item Désactivez les plugins.
\item Ouvrez le débogueur (F12).
\item Sélectionnez l'onglet réseau.
\item Naviguez sur \url{https://www.laposte.net}
\item Observez l'activité réseau pendant une minute.
\item Qu'en déduisez-vous ?
\end{enumerate}
\end{atelier}
\end{frame}
\begin{frame}
\centering
\Huge{\textsc{Option complémentaire}}
\end{frame}
\section{OC Notions complémentaires}
\subsection{Introduction}
\begin{frame}{Évaluations\hypertarget{evaluationsretour}{}}
\begin{center}
\Large
Désagréables \(\longleftrightarrow\) agréables\endnote{Wikipedia : \url{http://commons.wikimedia.org/wiki/File:Notes.svg}} ?
\includegraphics[width=5cm]{Notes.eps}
\hyperlink{evaluations}{\beamerbutton{Description des évaluations}}
\end{center}
\end{frame}
\subsection{Le texte}
\begin{frame}[containsverbatim]{Traitements de texte}
Objectifs : mettre en forme du texte.
Moyens dépendant du contexte :
\begin{itemize}
\item \textbf{Traitements de texte Wysiwyg} (What You See Is What You Get) (Word\up\textcopyright, LibreOffice, Scribus, \dots) : soulignés, gras, italique, etc.
\smallskip
\emph{Affiches et petits documents.}
\item \textbf{Traitements de texte balisés} (xhtml, latex, XML, \dots) : \verb|<p align=``center''> texte </p>|, \verb=\begin{center} texte \end{center}=, etc.
\smallskip
\emph{Internet, long documents, documentation.}
\end{itemize}
\end{frame}
\begin{frame}{Scribus}
\begin{description}
\item[Domaine :] arts graphiques, affiches, revues, journaux.
\item[Idée :] aide au positionnement des images, répartition du texte dans des blocs dépendants.
\end{description}
\begin{columns}
\begin{column}{0.5\textwidth}
\centering \includegraphics[width=5.5cm]{Scribus.eps}
\end{column}
\begin{column}{0.5\textwidth}
\centering \includegraphics[width=5.5cm]{aqua.eps}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{LibreOffice\hypertarget{LOstylesretour}{}}
Traitement de texte classique. Bien que \dots{}
\begin{center}
\includegraphics[width=6cm]{writerLO}
\end{center}
Gestion avancée des styles, références, bibliographie, index, \dots{}
\begin{flushright}
\hyperlink{LOstyles}{\beamerbutton{LibreOffice avec styles}}
\end{flushright}
\end{frame}
\begin{frame}{Latex}
Traitement de texte haute qualité :
gestion professionnelle automatique de la typographie.
\smallskip
\begin{columns}
\begin{column}{0.55\textwidth}
\includegraphics[width=6cm]{kile.eps}
\end{column}
\begin{column}{0.45\textwidth}
Exemples :
\smallskip
\emph{\tiny ``L'astrolabe, histoire théorie et pratique'' et\\ "Loxodromie et projection de Mercator``}.
\smallskip
\includegraphics[width=2cm]{Loxodromie.eps}\qquad \includegraphics[width=2cm]{Astrolabe.eps}
\end{column}
\end{columns}
Autre exemple connu : votre``formulaire et tables''...
\end{frame}
\begin{frame}{Xhtml et Css}
\begin{center}Orientation web -- séparation du contenu et de la forme.\end{center}
\small Langages balisés sans boucles, fortement normalisés et strict.
\smallskip
\begin{columns}
\begin{column}{0.5\textwidth}
\centering \includegraphics[width=5cm]{Xhtml.eps}
\end{column}
\begin{column}{0.5\textwidth}
\centering \includegraphics[width=5cm]{css.eps}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Publication multi-support}
Aujourd'hui les supports d'édition sont multiples.
\smallskip
\includegraphics[width=10cm]{DiagTexte.eps}
\end{frame}
\begin{frame}{Publication multi-support}
Et les langages nécessaires aussi (\small{\LaTeX et MySQL ne sont pas XML}).
\smallskip
\includegraphics[width=10cm]{DiagTexteLang.eps}
\end{frame}
\begin{frame}{XML (eXtensible Markup Language)}
{\centering Idée : structurer du contenu à l'aide de balises : {\color{red}<} et {\color{red}>}.
\smallskip
{\scriptsize Exemple : {\color{red}<title>}Le XML (eXtensible Markup Language){\color{red}</title>}.}
\smallskip
Le XML n'impose aucun contenu aux balises {\color{red}< >}.
\medskip
Chaque langage va définir lui-même ses propres balises.
{\scriptsize Ainsi, en Xhtml, on trouve la balise ''title`` qui peut ne pas apparaître dans un autre langage XML.}
}
\end{frame}
\begin{frame}[containsverbatim]{DocBook}
Un autre exemple de XML est donné par DocBook dont voici un exemple :
\medskip
\scriptsize
{\color{blue}\verb#<?xml version="1.0" encoding="UTF-8"?>#}
{\color{green}\verb=<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN">=}
{\color{yellow}\verb#<article lang="">#}
{\color{red}\verb=<para>=}\verb=PROPOSITION XXV PROBLEME VI={\color{red}\verb=</para>=}
{\color{red}\verb=<para>=}\verb=Trouver les forces du Soleil.={\color{red}\verb=</para>=}
{\color{red}\verb=<para>=}
\verb#<inlinegraphic fileref="embedded:Image1" width="12.78cm" depth="4.922cm"/>#
\verb=Que S représente le Soleil, T la Terre, P la Lune={\color{red}\verb=</para>=}
{\color{red}\verb=<para>=}\verb=FIG 3.={\color{red}\verb=</para>=}
{\color{yellow}\verb=</article>=}
\end{frame}
\begin{frame}[containsverbatim]{WAP}
Un autre exemple de XML est donné par le WAP (Wireless Application Protocol).
Le language utilisé est le WML (Wireless Markup Language).
\medskip
\scriptsize
{\color{blue}\verb#<?xml version="1.0"?>#}
{\color{green}\verb=<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"=}
{\color{green}\verb="http://www.wapforum.org/DTD/wml_1.1.xml">=}
{\color{yellow}\verb=<wml>=}
{\color{red}\verb#<card id="cours" title="||cours de physique||">#}
\verb#<p align="left">#
\verb=Ma première <br/>page WML=
\verb=</p>=
{\color{red}\verb=</card>=}
{\color{yellow}\verb=</wml>=}
\end{frame}
\begin{frame}{Nombres à virgule flottante}
L'écriture d'un nombre est facilitée si elle se fait sous la forme :
\begin{center}
\fbox{$\displaystyle nombre=(-1)^{signe}\cdot mantisse\cdot base^{exposant}$}
\end{center}
avec $1\leq mantisse<10$
Par exemple le nombre décimal $-234$ peut s'écrire :
$-2,34\cdot 10^2$
où le signe vaut 1, la mantisse 2,34, la base 10 et l'exposant 2.
\medskip
Un nombre binaire peut être représenté de la même manière en base deux à l'aide du signe 0 ou 1, d'une mantisse et d'un exposant.
\end{frame}
\begin{frame}{Représentation d'un nombre sur 32 bits}
La représentation d'un nombre binaire à virgule flottante :
\begin{center}
\fbox{$\displaystyle nombre=(-1)^{signe}\cdot mantisse\cdot base^{exposant}$}
\end{center}
avec $1\leq mantisse<2$
est déterminée par le nombre de bits qui lui sont associés. Couramment on utilise 32 bits répartis ainsi :
\begin{description}
\item[Le signe] 1 bit, 0 (positif) ou 1 (négatif).
\item[L'exposant] 8 bits, soit 256 nombres. Biaisé de 127 pour permettre des exposants négatifs, soit de $-127$ à $+127$.
\item[La mantisse] 23 bits, sans compter le 1 précédant toujours la virgule.
\end{description}
\end{frame}
\begin{frame}{Exemple numérique}
\begin{align*}
Nombre&=10101000000000000000000000000110\\
&=1\;\big|\;00000110\;\big|\;01010000000000000000000\\
&=signe\;\big|\;exposant\;\big|\;mantisse
\end{align*}
Ce nombre peut être traduit en décimal de la manière suivante :
\begin{itemize}
\item Le signe \(= 1\;\Rightarrow\;\) nombre négatif.
\item L'exposant vaut : \(0\cdot 2^0+1\cdot 2^1+1\cdot 2^2=6\), c'est-à-dire en réalité \(6-127=-121\) à cause du biais.
\item La mantisse \(= 1+0\cdot 2^{-1}+1\cdot 2^{-2}+0\cdot 2^{-3}+1\cdot 2^{-4}=1,3125\)
\end{itemize}
Soit le nombre : \(-1,3125\cdot 2^{-121}=-4,937\cdot 10^{-37}\)
\end{frame}
\begin{frame}{Exercices}
Convertissez les nombres suivants :
\begin{itemize}
\item \only<1,5->{\(01000000001100000000000000000000\)}\only<1>{ en décimal }\only<5->{=}\only<2-4>{\(0\;\big|\;10000000\;\big|\;01100000000000000000000\;\)}
\only<3-4>{\(+\;\big|\;2^7-127=1\;\big|\;1+2^{-2}+2^{-3}=1,375\;\Rightarrow\;\)}\only<4->{\\\(+1,375\cdot 2^1=2,75\)}
\item \only<1-5,9->{\(01100000001110000000000000000000\)}\only<1-5>{ en décimal }\only<9->{=}\only<6-8>{\(0\;\big|\;11000000\;\big|\;01110000000000000000000\)}
\only<7-8>{\(+\;\big|\;2^7+2^6-127=65\;\big|\;1+2^{-2}+2^{-3}+2^{-4}=1,4375\;\Rightarrow\;\)}\only<8->{\(+1,4375\cdot 2^{65}=5,3\cdot 10^{19}\)}
\item \only<1-9,13->{\(01010000001010000000000000000000\)}\only<1-9>{ en décimal }\only<13->{=}\only<10-12>{\(0\;\big|\;10100000\;\big|\;01010000000000000000000\)}
\only<11-12>{\(+\;\big|\;2^7+2^5-127=33\;\big|\;1+2^{-2}+2^{-4}=1,3125\;\Rightarrow\;\)}\only<12->{\(+1,3125\cdot 2^{33}=1,1\cdot 10^{10}\)}
\item \only<1-13,17->{\(10101000001100000000000000000000\)}\only<1-13>{ en décimal }\only<17->{=}\only<14-16>{\(1\;\big|\;01010000\;\big|\;01100000000000000000000\)}
\only<15-16>{\(-\;\big|\;2^6+2^4-127=-47\;\big|\;1+2^{-2}+2^{-3}=1,375\;\Rightarrow\;\)}\only<16->{\(-1,375\cdot 2^{-47}=-9,8\cdot 10^{-15}\)}
\end{itemize}
\end{frame}
\subsection{L'image}
\begin{frame}{Byte, bit et octet}
\transdissolve<3>
\begin{columns}
\begin{column}{0.5\textwidth}
\begin{block}<1->{Décimal}
\begin{description}[23, 45, 234, \dots]
\item[0, 1, 2, \dots, 9] : chiffres.
\item[23, 45, 234, \dots] : nombres.
\end{description}
\end{block}
\end{column}
\begin{column}{0.5\textwidth}
\begin{block}<2->{Binaire}
\begin{description}[101, 11, 10, \dots]
\item[0 et 1] : \textbf{bits}.
\item[101, 11, 10, \dots] : nombres.
\end{description}
\end{block}
\end{column}
\end{columns}
\medskip
\uncover<3>{(Attention, 101 binaire ne se lit pas ''cent un`` et ne correspond pas à la valeur décimale 101. En réalité, on a :
\[0_b=0_d\,;\,1_b=1_d\,;\,10_b=2_d\,;\,11_b=3_d\,;\,100_b=4_d\,;\,101_b=5_d\, \dots)\]}
\end{frame}
\begin{frame}{Byte, bit et octet}
\begin{itemize}
\item<1-> Avec un \emph{bit}, on a les nombres 0 et 1, soit deux nombres.
\item<2-> Avec deux \emph{bits}, on a les nombres 00, 01, 10 et 11, soit quatre nombres.
\item<3-> Avec trois \emph{bits}, on a les nombres 000, 001, 010, 011, 100, 101, 110 et 111, soit huit nombres.
\item<4-> Avec quatre \emph{bits}, on a \dots ?
\item<5-> Avec n \emph{bits}, on a un \textbf{arrangement avec répétition de k éléments choisis parmi deux} (0 ou 1). Les mathématiques donnent alors le nombre de ces arrangements :
\[\bar A_k^2=2^k\]
\end{itemize}
\end{frame}
\begin{frame}{Byte, bit et octet}
Avec huit bits, on a donc :
\[\bar A_8^2=2^8=256\,\text{possibilités}\]
On peut donc représenter 256 nombres.
\medskip
\begin{center}
\fbox{\parbox{6cm}{Un \textbf{octet} est un nombre de huit bits.
Un \emph{octet} est aussi nommé \textbf{byte}.}}
\end{center}
\end{frame}
\begin{frame}{kilobyte, Megabyte, Gigabyte, \dots}
\begin{columns}
\begin{column}{0.5\textwidth}
\begin{block}<1->{Décimal}
kilo \(\equiv\) nombre de possibilités de réaliser un nombre à l'aide de 3 chiffres :
\[\bar A_3^{10}=10^3=1000\,\text{possibilités}\]
\end{block}
\end{column}
\begin{column}{0.5\textwidth}
\begin{block}<2->{Binaire}
kilo \(\equiv\) nombre de possibilités de réaliser un nombre à l'aide de 10 bits :
\[\bar A_{10}^2=2^{10}=1024\,\text{possibilités}\]
\end{block}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{kilobyte, Megabyte, Gigabyte, \dots}
\begin{enumerate}
\item Un kilobyte ou kilooctet, noté ko, correspond à 1024 octets.
\item Un Megabyte ou Megaoctet, noté Mo, correspond à 1024 kilooctet, soit 1'048'576 bytes ou octets.
\item Un Gigabyte ou Gigaoctet, noté Go, correspond à 1024 Megaoctet, soit 1'048'576 kilobyte ou 1'073'741'824 bytes.
\end{enumerate}
L'ordre de grandeur correspond à la notation décimale :
\begin{enumerate}
\item kilo pour milliers.
\item Mega pour millons.
\item Giga pour milliards.
\end{enumerate}
\end{frame}
\begin{frame}{Exercices}
\small
\only<1-2>{Sur un processeur 16 bits, combien de nombres entiers non signés peut on représenter ?\\
(un processeur 16 bits peut manipuler des ``mots'' de 16 bits, exemple 1110110000110110)}
\only<2>{\\\smallskip On a \(2^{16}=65'536\) possibilités, soit autant de nombres.}
\only<3-4>{Sur le même processeur, quels sont les plus petits et plus grands nombres entiers signés qui puissent être représentés ?\\
(c'est à dire avec la possibilité de faire des nombres positifs et négatifs)}
\only<4>{\\\smallskip On a un bit de signe (0 ou 1) et 15 bits pour le nombre, soit \(2^{15}=32'768\) possibilités. On peut donc représenter des nombres de -32'768 à 32'767 (à cause du zéro).}
\only<5-6>{Sur un processeur 32 bits, si on met dans un fichier un fois tous les nombres entiers non signés, quel sera en Go la taille du fichier ?}
\only<6>{\\\smallskip Avec un tel processeur on a \(2^{32}=4'294'967'296\) nombres possibles (avec le zéro). Chaque nombre est codé sur 32 bits, soit au total \(4'294'967'296\cdot 32=1,37\cdot 10^{11}\) bits. Cela représente \(1,71\cdot 10^{10}\) octets ou \(16'777'216\) ko, ou encore \(16'384\) Mo, c'est-à-dire 16 Go.}
\only<7-8>{Quelle plage de nombres réels couvre la représentation d'un réel (1 bit pour le signe, 23 bits pour la mantisse et 8 bits pour l'exposant).}
\only<8>{\\\smallskip Le nombre maximum codé par la mantisse est \[1+\sum_{i=-1}^{-23} 2^i=1,99999988079071\cong2\] Comme l'exposant est codé sur 8 bits, on a \(2^8=256\) possibilités. Pour coder les négatifs on biaise de 127. Cela signifie que le nombre maximum codé par l'exposant est \[2^{127}=1,7\cdot 10^{38}\] Au total, on a donc le nombre maximal \[1,9999\cdot 1,7\cdot 10^{38}=3,4\cdot 10^{38}\]}
\end{frame}
\begin{frame}{Image matricielle ou bitmap}
\begin{columns}
\begin{column}{0.5\textwidth}
Capteur ccd\endnote{Voir wikipedia : \url{http://commons.wikimedia.org/wiki/File:CCD\_in\_camera.jpg}} : niveaux de gris.
\smallskip
\includegraphics[height=4.5cm]{CCD.eps}
\end{column}
\begin{column}{0.5\textwidth}
Grille de pixels\endnote{Voir wikipedia : \url{http://commons.wikimedia.org/wiki/File:Pixel.jpg}}
\smallskip
\includegraphics[height=4.5cm]{Pixel.eps}
\end{column}
\end{columns}
\end{frame}
%\begin{frame}{Effet photoélectrique}
%\begin{columns}
%\begin{column}{0.6\textwidth}
%Éclairage \(\rightarrow\) production de charges
%\medskip
%\includegraphics[width=5cm]{PhotoElectrique.eps}
%La flèche verte montre le transfert de charges\endnote{Wikicommon : \url{http://fr.wikibooks.org/wiki/Fichier:CCD\_3Phases\_3D-Layout.png}}.
%\smallskip
%Voir aussi ci-contre\endnote{Wikicommon : \url{http://commons.wikimedia.org/wiki/File:CCD\_Zeile\_Belichtung\_Transport.gif}}.
%\end{column}
%\begin{column}{0.4\textwidth}
%\includegraphics[width=3cm]{CCD_Transport1.eps}\\
%\includegraphics[width=3cm]{CCD_Transport2.eps}\\
%\includegraphics[width=3cm]{CCD_Transport3.eps}
%\end{column}
%\end{columns}
%\end{frame}
\begin{frame}{Numérisation sur deux bits}
\begin{columns}
\begin{column}{0.5\textwidth}
Sur deux bits, on a quatre niveaux de gris possibles :
\begin{description}
\item[00] blanc,
\item[01] gris clair,
\item[10] gris foncé et
\item[11] noir.
\end{description}
Sur huit bits, on aurait 256 niveaux de gris, mais la forme de l'image resterait identique car elle dépend de la résolution.
\end{column}
\begin{column}{0.5\textwidth}
\smallskip
\includegraphics[width=5cm]{Numerisation.eps}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Résolution}
\includegraphics[width=10cm]{Resolution.eps}
\smallskip
Unités de la résolution\endnote{Voir wikipedia : \url{http://fr.wikipedia.org/wiki/Fichier:Resolution\_test.jpg}} : dpi (dot per inch) ou ppp (point par pouce).
Exemples typiques : écran 75-100 dpi, photocopieuse 360 dpi, imprimante 700 dpi, scanner 2000 dpi.
\end{frame}
\begin{frame}{Image en couleur : codage RVB.}
\begin{columns}
\begin{column}{0.5\textwidth}
\small
\begin{description}[Norme :]
\item[Idée :] masquer les photosites par une couche mince d'oxyde de silicium filtrant les trois couleurs de base : rouge (R), vert (V) et bleu (B).
\item[Norme :] par la Commission Internationnale de l'éclairage aux longueurs d'ondes de 546,1 nanomètre pour le rouge, 700,0 nanomètre pour le vert et 435,8 nanomètre pour le bleu.
\end{description}
\end{column}
\begin{column}{0.5\textwidth}
Filtre de Bayer\endnote{Voir wikipedia : \url{http://commons.wikimedia.org/wiki/File:BayerPatternFiltration.png}}.
\smallskip
\includegraphics[width=5cm]{BayerRVB.eps}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Filtre de Bayer}
\begin{columns}
\begin{column}{0.4\textwidth}
Filtre de Bayer.
\smallskip
\includegraphics[width=5cm]{FiltreBayer.eps}
\end{column}
\begin{column}{0.6\textwidth}
\small
\begin{itemize}
\item Pavage privilégiant le vert (\oe il plus sensible),
\item Couleur pixel central :
Bleu = 200
Rouge = (237+63+255+150)/4=176
Vert = (133+80+255+160)/4=157
\item Codage en 24 bits : 8 bits / couleur.
Soit 256 niveaux de luminosité pour chaque couleur, c'est-à-dire \(256\cdot 256\cdot 256=16'777'216\) couleurs différentes. La palette comporte plus de 16 millions de couleurs.
\end{itemize}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Palette de couleur}
Autres manière de coder les images : la palette de couleur.
\smallskip
\begin{columns}
\begin{column}{0.65\textwidth}
\includegraphics[width=8cm]{PaletteTux.eps}
\end{column}
\begin{column}{0.35\textwidth}
\begin{itemize}
\item Choix : \textbf{256} couleurs
\item Indexation de chaque pixel par l'une de celle-ci.
\end{itemize}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Taille et poids d'une image}
\begin{columns}
\begin{column}{0.5\textwidth}
\begin{block}<1->{Couleurs vraies : 24 bits / pixel}
Image 252 x 256 pixels =
64'512 pixels
\medskip
Couleurs vraies : 3 octets / pixel
3\(\cdot\) 64'512 = 193'536 octets
\medskip
193'536 octets = 189 ko
\smallskip
Total : \textbf{189 ko}
En réalité : 65,2 ko (compression)
\end{block}
\end{column}
\begin{column}{0.5\textwidth}
\begin{block}<2->{Couleurs indexées}
Image 252 x 256 pixels =
64'512 pixels
\medskip
Index sur 8 bits : 1 octet/pixel
64'512 octets = 63 ko
\medskip
Palette 256 x 24 bits = 6'144 bits
6'144 bits = 768 octets = 0,75 ko
\medskip
Total : \textbf{63,75 ko}
En réalité : 18 ko (compression)
\end{block}
\end{column}
\end{columns}
\end{frame}
\begin{frame}[containsverbatim]{Formats d'image : fichier .bmp (bitmap)}
\begin{minipage}{12cm}
\begin{minipage}{1.5cm}
\scriptsize Éditeur\\texte
\begin{Verbatim}[frame=single,label=\fbox{Fichier texte},framesep=7mm,labelposition=bottomline]
BMF.....
..6...(.
........
........
........
........
......ÿ.
.ÿÿÿ....
ÿ.ÿ...
\end{Verbatim}
\end{minipage}
\begin{minipage}{10.5cm}
\scriptsize Éditeur binaire
\tiny
\begin{Verbatim}[fontsize=\relsize{-1},frame=single,label=\fbox{Fichier binaire},framesep=7mm,labelposition=bottomline]
01000010 01001101 01000110 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00110110 00000000 00000000 00000000 00101000 00000000
00000000 00000000 00000010 00000000 00000000 00000000 00000010 00000000
00000000 00000000 00000001 00000000 00011000 00000000 00000000 00000000
00000000 00000000 00010000 00000000 00000000 00000000 00010011 00001011
00000000 00000000 00010011 00001011 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 11111111 00000000
00000000 11111111 11111111 11111111 00000000 00000000 00000000 00000000
11111111 00000000 11111111 00000000 00000000 00000000
\end{Verbatim}
\end{minipage}
\end{minipage}
\end{frame}
\begin{frame}[containsverbatim]{Codage hexadécimal (fichier .bmp)}
\begin{minipage}{6cm}
\scriptsize Hexadécimal
\tiny
\begin{Verbatim}[fontsize=\relsize{-0.9},frame=single,label=\fbox{Fichiers hexadécimal et texte},framesep=7mm,labelposition=topline]
42 4d 46 00 00 00 00 00 00 00 36 00 00 00 28 00 BMF.......6...(.
00 00 02 00 00 00 02 00 00 00 01 00 18 00 00 00 ................
00 00 10 00 00 00 13 0b 00 00 13 0b 00 00 00 00 ................
00 00 00 00 00 00 ff 00 00 ff ff ff 00 00 00 00 ......ÿ..ÿÿÿ....
ff 00 ff 00 00 00 ÿ.ÿ...
\end{Verbatim}
\end{minipage}
\hfill
\begin{minipage}{4cm}
L'image correspondante :
\centering
\includegraphics[width=2cm]{QuatrePixelsGrand.eps}
\end{minipage}
\end{frame}
\begin{frame}[containsverbatim]{Structure du ficher .bmp}
\begin{table}
\tiny
\begin{center}
\caption{Format d'un bitmap}
% use packages: array
\renewcommand{\multirowsetup}{\centering}
\begin{tabular}[t]{|l|l|l|}\hline
\multirow{4}{2ex}{\rotatebox{90}{fichier}}& 42 4D & Caractère B et M pour désigner un bitmap \\
& 46 00 00 00 & Taille du fichier 46 = 70 octets \\
& 00 00 00 00 & Réservé toujours à 0 \\
& 36 00 00 00 & Position (offset) de l'image 36 = 54 octets \\ \hline
\multirow{11}{2ex}{\rotatebox{90}{Entêtes image}}& 28 00 00 00 & Taille de l'entête du fichier 28 = 40 octets \\
& 02 00 00 00 & Largeur de l'image : 2 pixels \\
& 02 00 00 00 & Hauteur de l'image : 2 pixels \\
& 01 00 & nombre de plans utilisés \\
& 18 00 & nombre de bits par pixel 18 = 24 bits/pixel (3 octets) \\
& 00 00 00 00 & Méthode de compression (0 pas de compression) \\
& 10 00 00 00 & Taille de l'image 10 = 16 octets \\
& 13 0b 00 00 & Résolution horizontale 0b13 = 2835 pixel par mètre \\
& 13 0b 00 00 & Résolution verticale 0b13 = 2835 pixel par mètre \\
& 00 00 00 00 & Nombre de couleurs de la palette : 0 palette complète \\
& 00 00 00 00 & Nombre de couleurs importantes de la palette \\ \hline
\multirow{6}{2ex}{\rotatebox{90}{Image}}& ff 00 00 & B=255,V=0,R=0 : bleu \\
& ff ff ff & B=255, V=255, R=255 : blanc \\
& 00 00 & Pour que la ligne ait un nb d'octets multiple de 4 \\
& 00 00 ff & B=0, V=0, R=255 : rouge \\
& 00 ff 00 & B=0, V=255, R=0 : vert \\
& 00 00 & Pour que la ligne ait un nb d'octets multiple de 4 \\ \hline
\end{tabular}
\end{center}
\end{table}
\end{frame}
\begin{frame}{Hexadécimal}
Un nombre hexadécimal est constitué de 16 chiffres différents. La correspondance avec le décimal est la suivante :
\begin{center}
\begin{tabular}{cccccccccccccccc}
0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 15\\
\textdownarrow&\textdownarrow&\textdownarrow&\textdownarrow&
\textdownarrow&\textdownarrow&\textdownarrow&\textdownarrow&
\textdownarrow&\textdownarrow&\textdownarrow&\textdownarrow&
\textdownarrow&\textdownarrow&\textdownarrow&\textdownarrow\\
{\color{red} 0} & {\color{red} 1} & {\color{red} 2} & {\color{red} 3} & {\color{red} 4} & {\color{red} 5} & {\color{red} 6} &
{\color{red} 7} & {\color{red} 8} & {\color{red} 9} & {\color{red} A} & {\color{red} B} & {\color{red} C} & {\color{red} D} & {\color{red} E} & {\color{red} F}
\end{tabular}
\end{center}
A l'instar de la base 10, le correspondant décimal d'un nombre hexadécimal se caclule de la manière suivante :
\begin{align*}
\text{Décimal : } 930&=9\cdot 10^2+3\cdot 10^1+0\cdot 10^0\\
\text{Hexadécimal : } 3A2&=3\cdot 16^2+A\cdot 16^1+2\cdot 16^0\\
&=768+10\cdot 16+2=930
\end{align*}
\end{frame}
\begin{frame}{Exercices {\tiny 1\textrightarrow 1 \dots{} 9\textrightarrow 9 / 10\textrightarrow A / 11\textrightarrow B / 12\textrightarrow C / 13\textrightarrow D / 14\textrightarrow E / 15\textrightarrow F}}
\begin{itemize}
\only<1-4>{\item Convertissez les nombres hexadécimaux suivants en décimal : 5F, 12, 5, A1, DD, F, 4E, 3B et 43.\\}
\only<2>{\(5F_{hex}=_{dec}5\cdot 16+F=80+15=95\)}
\only<3>{\(12_{hex}=_{dec}1\cdot 16+2=18\)}
\only<4>{\(5_{hex}=_{dec}5\), \(A1_{hex}=_{dec}10\cdot 16+1=161\), \(DD_{hex}=_{dec}221\),\\ \(F_{hex}=_{dec}15\), \(4E_{hex}=_{dec}78\), \(3B_{hex}=_{dec}59\) et \(43_{hex}=_{dec}67\)}
\only<1,5-10>{\item Convertissez les nombres décimaux suivants en hexadécimal : 4, 9, 12, 15, 22, 24, 33, 102, 250, 4343 et 3853.\\}
\only<6>{\(4_{dec}=_{hex}4\), \(9_{dec}=_{hex}9\), \(12_{dec}=_{hex}C\), \(15_{dec}=_{hex}F\)}
\only<7>{\(22_{dec}=_{hex}1\cdot 16+6=16\), \(24_{dec}=_{hex}1\cdot 16+8=18\), \(33_{dec}=_{hex}2\cdot 16+1=21\)}
\only<8>{\(102_{dec}=_{hex}6\cdot 16+6=66\), \(250_{dec}=_{hex}15\cdot 16+10=FA\)}
\only<9>{\(4343_{dec}=_{hex}1\cdot 16^3+0\cdot 16^2+15\cdot 16^1+7\cdot 16^0=10F7\)}
\only<10>{\(3853_{dec}=_{hex}15\cdot 16^2+0\cdot 16^1+13\cdot 16^0=F0D\)}
\only<1,11-12>{\item En vraie couleur, donnez le code hexadécimal du rouge, du bleu et du vert.\\}
\only<12>{FF0000, pour le rouge car on a 8 bits / couleur, soit 256 niveaux de couleur : deux chiffres hexadécimaux = \(16\cdot 16=256\)\\
0000FF, pour le bleu et 00FF00 pour le vert, car le codage est RVB.}
\only<1,13-14>{\item En vraie couleur, donnez le code hexadécimal de la couleur comprenant 30\% de rouge, 20\% de vert et 10\% de bleu.\\}
\only<14>{30\% R : \(0,3\cdot 256=77_{dec}=_{hex}4D\), 20\% V : \(51_{dec}=_{hex}33\), 10\% B : \(26_{dec}=_{hex}1A\), soit 4D331A}
\only<1,15-16>{\item En vraie couleur, donnez le code hexadécimal de la couleur comprenant 50\% de rouge, 80\% de vert et 3\% de bleu.\\}
\only<16>{50\% R : \(0,5\cdot 256=128_{dec}=_{hex}80\), 80\% V : \(205_{dec}=_{hex}CD\), 3\% B : \(8_{dec}=_{hex}08\), soit 80CD08}
\end{itemize}
\end{frame}
\begin{frame}{Gimp}
\begin{center}Les deux couleurs définies dans l'exercice précédent sont :\end{center}
\begin{columns}
\begin{column}{0.5\textwidth}
\includegraphics[width=5cm]{4d331a.eps}
\end{column}
\begin{column}{0.5\textwidth}
\includegraphics[width=5cm]{80cd08.eps}
\end{column}
\end{columns}
\end{frame}
\begin{frame}[containsverbatim]{Exercice : ceci est une image \dots}
\begin{columns}
\begin{column}{0.6\textwidth}
\scriptsize
\begin{Verbatim}[fontsize=\relsize{-0.9}]
42 4d de 00 00 00 00 00 00 00 36 00 00 00 28 00
00 00 07 00 00 00 07 00 00 00 01 00 18 00 00 00
00 00 a8 00 00 00 13 0b 00 00 13 0b 00 00 00 00
00 00 00 00 00 00 ff ff ff ff ff ff ff ff ff 00
00 ff ff ff ff ff ff ff ff ff ff 00 00 00 ff ff
ff ff ff ff 00 00 ff 00 00 ff 00 00 ff ff ff ff
ff ff ff 00 00 00 ff ff ff 00 00 ff ff 00 00 ff
00 00 ff 00 00 00 00 ff ff ff ff 00 00 00 00 00
ff ff ff ff ff 00 00 ff 00 00 ff ff ff ff ff ff
00 00 ff 00 00 00 00 00 ff ff ff ff ff 00 00 00
00 ff ff 00 00 ff ff ff 00 00 ff 00 00 00 ff ff
ff 00 00 ff 00 00 ff ff ff ff 00 00 ff ff 00 00
ff ff ff 00 00 00 ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff 00 00 00 00 00
\end{Verbatim}
\end{column}
\begin{column}{0.4\textwidth}
\begin{itemize}
\item Type d'image ?
\item Nb d'octets ?
\item Offset ?
\item Largeur ?
\item Hauteur ?
\item Nb octets/pixel ?
\item Taille image ?
\item Que représente-elle ?
\item Taille (en ko) ?
\end{itemize}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Exercice : ceci est une image \dots}
\begin{columns}
\begin{column}{0.5\textwidth}
\tiny\ttfamily
\only<1>{{\color{red}42 4d }}\only<2->{42 4d }\only<2>{{\color{red}de}}\only<1,3->{de} 00 00 00 00 00 00 00 \only<3>{{\color{red}36}}\only<1-2,4->{36} 00 00 00 28 00\\
00 00 \only<4>{{\color{red}07}}\only<1-3,5->{07} 00 00 00 \only<5>{{\color{red}07}}\only<1-4,6->{07} 00 00 00 01 00 \only<6>{{\color{red}18}}\only<1-5,7->{18} 00 00 00\\
00 00 \only<7>{{\color{red}a8}}\only<1-6,8->{a8} 00 00 00 13 0b 00 00 13 0b 00 00 00 00\\
00 00 00 00 00 00\only<8>{ {\color{red} ff ff ff ff ff ff ff ff ff 00\\
00 ff ff ff ff ff ff ff ff ff ff 00 00 00 ff ff\\
ff ff ff ff 00 00 ff 00 00 ff 00 00 ff ff ff ff\\
ff ff ff 00 00 00 ff ff ff 00 00 ff ff 00 00 ff\\
00 00 ff 00 00 00 00 ff ff ff ff 00 00 00 00 00\\
ff ff ff ff ff 00 00 ff 00 00 ff ff ff ff ff ff\\
00 00 ff 00 00 00 00 00 ff ff ff ff ff 00 00 00\\
00 ff ff 00 00 ff ff ff 00 00 ff 00 00 00 ff ff\\
ff 00 00 ff 00 00 ff ff ff ff 00 00 ff ff 00 00\\
ff ff ff 00 00 00 ff ff ff ff ff ff ff ff ff ff\\
ff ff ff ff ff ff ff ff ff 00 00 00 00 00 }}
\only<1-7,9->{ff ff ff ff ff ff ff ff ff 00\\
00 ff ff ff ff ff ff ff ff ff ff 00 00 00 ff ff\\
ff ff ff ff 00 00 ff 00 00 ff 00 00 ff ff ff ff\\
ff ff ff 00 00 00 ff ff ff 00 00 ff ff 00 00 ff\\
00 00 ff 00 00 00 00 ff ff ff ff 00 00 00 00 00\\
ff ff ff ff ff 00 00 ff 00 00 ff ff ff ff ff ff\\
00 00 ff 00 00 00 00 00 ff ff ff ff ff 00 00 00\\
00 ff ff 00 00 ff ff ff 00 00 ff 00 00 00 ff ff\\
ff 00 00 ff 00 00 ff ff ff ff 00 00 ff ff 00 00\\
ff ff ff 00 00 00 ff ff ff ff ff ff ff ff ff ff\\
ff ff ff ff ff ff ff ff ff 00 00 00 00 00 }
\end{column}
\begin{column}{0.5\textwidth}
\scriptsize
\begin{itemize}
\item \only<1>{{\color{red}BM car \(42_H=66_D=B_{ASCII}\) et\\ \(4d_H=77_D=M_{ASCII}\)}}\only<2->{BM car \(42_H=66_D=B_{ASCII}\) et\\ \(4d_H=77_D=M_{ASCII}\)}
\item \only<1>{Nb d'octets ?}\only<2>{{\color{red}\(de_H=222_D\) octets}}\only<3->{\(de_H=222_D\) octets}
\item \only<1-2>{Offset ?}\only<3>{{\color{red}\(36_H=54_D\) octets}}\only<4->{\(36_H=54_D\) octets}
\item \only<1-3>{Largeur ?}\only<4>{{\color{red}\(07_H=7\) pixels}}\only<5->{\(07_H=7\) pixels}
\item \only<1-4>{Hauteur ?}\only<5>{{\color{red}\(07_H=7\) pixels}}\only<6->{\(07_H=7\) pixels}
\item \only<1-5>{Nb octets/pixel ?}\only<6>{{\color{red}\(18_H=24_D\) bits/pixel,soit 3 octets/pixel}}\only<7->{\(18_H=24_D\) bits/pixel,soit 3 octets/pixel}
\item \only<1-6>{Taille image ?}\only<7>{{\color{red}\(a8_H=168_D\) octets}}\only<8->{\(a8_H=168_D\) octets}
\item \only<1-7>{Que représente-elle ?}\only<8>{{\color{red}Un c\oe ur percé.}}\only<9->{Un c\oe ur percé.}
\item \only<1-8>{Taille (ko) ?}\only<9>{{\color{red}222 octets, soit 0,217 ko}}\only<10>{222 octets, soit 0,217 ko}
\end{itemize}
\end{column}
\end{columns}
\end{frame}
\begin{frame}[containsverbatim]{Une autre interprétation de cette image}
\begin{columns}
\begin{column}{0.5\textwidth}
\includegraphics[width=5cm]{Coeur.eps}
\end{column}
\begin{column}{0.5\textwidth}
C'est plus naturel.
\end{column}
\end{columns}
\end{frame}
\begin{frame}[containsverbatim]{Une autre image \dots{} corrompue.}
\begin{columns}
\begin{column}{0.6\textwidth}
\scriptsize
\begin{Verbatim}[fontsize=\relsize{-0.9}]
42 4d e1 00 00 00 00 00 00 00 36 00 00 00 28 00
00 00 07 00 00 00 07 00 00 00 01 00 17 00 00 00
00 00 aa 00 00 00 13 0b 00 00 13 0b 00 00 00 00
00 00 00 00 00 00 00 ff 00 00 87 00 ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff 00 00 10 00 ff
00 00 87 00 ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff 00 00 00 00 ff 00 00 83 00 00 87 00 ff
ff ff ff ff ff ff ff ff ff ff ff 00 00 00 00 ff
00 00 ff 00 00 ff 00 00 ff 00 ff ff ff ff ff ff
ff ff ff 00 00 00 00 ff 00 00 86 00 ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff 00 00 00 00 ff
00 00 87 00 00 87 00 00 87 00 00 87 00 00 87 00
ff ff ff 00 00 00 00 ff 00 00 ff 00 00 ff 00 00
ff 00 00 ff 00 00 ff 00 00 ff 00 00 00 00
\end{Verbatim}
\end{column}
\begin{column}{0.4\textwidth}
Ce fichier bichrome en couleurs vraies a été corrompu.
\smallskip
Que représente-t-il ? Pouvez-vous le corriger ?
\smallskip
Quel est le poids de cette image en Mo ?
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Le fichier une fois corrigé.}
\begin{columns}
\begin{column}{0.5\textwidth}
\tiny\ttfamily
42 4d {\color{red}de} 00 00 00 00 00 00 00 36 00 00 00 28 00\\
00 00 07 00 00 00 07 00 00 00 01 00 {\color{red}18} 00 00 00\\
00 00 {\color{red}a8} 00 00 00 13 0b 00 00 13 0b 00 00 00 00\\
00 00 00 00 00 00 00 ff 00 00 87 00 ff ff ff ff\\
ff ff ff ff ff ff ff ff ff ff ff 00 00 {\color{red}00} 00 ff\\
00 00 87 00 ff ff ff ff ff ff ff ff ff ff ff ff\\
ff ff ff 00 00 00 00 ff 00 00 {\color{red}87} 00 00 87 00 ff\\
ff ff ff ff ff ff ff ff ff ff ff 00 00 00 00 ff\\
00 00 ff 00 00 ff 00 00 ff 00 ff ff ff ff ff ff\\
ff ff ff 00 00 00 00 ff 00 00 {\color{red}87} 00 ff ff ff ff\\
ff ff ff ff ff ff ff ff ff ff ff 00 00 00 00 ff\\
00 00 87 00 00 87 00 00 87 00 00 87 00 00 87 00\\
ff ff ff 00 00 00 00 ff 00 00 ff 00 00 ff 00 00\\
ff 00 00 ff 00 00 ff 00 00 ff 00 00 00 00
\centering
\includegraphics[width=2.5cm]{F.eps}
\end{column}
\begin{column}{0.6\textwidth}
\scriptsize
Nombre total d'octet (deux chiffres hexadécimaux) :\[14\cdot 16-2=222_D={\color{red}de}_H\]
Nombre de bits par pixel en vraie couleurs :\[24_D={\color{red}18}_H\]
Taille image 7 pixel sur 7 pixel (3 octets par pixel avec un nombre d'octets multiple de 4 par ligne \(\Rightarrow\) 3 octets suppl. par ligne):\[7\cdot 7+3\cdot 7=168_D={\color{red}a8}_H\]
{\color{red}00} dans les octets suppémentaires par ligne.\\
{\color{red}87} pour la couleur verte sombre (bichromie).
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Le modèle RVB}
\begin{columns}
\begin{column}{0.4\textwidth}
\includegraphics[width=6cm]{RVBTSVGimp.eps}
\end{column}
\begin{column}{0.6\textwidth}
\begin{description}
\item[R] 8 bits, 1 octet \(\rightarrow\) 256 niveaux de rouge\\{\tiny(0 pas de rouge, 255 rouge pur)}
\item[V] 8 bits, 1 octet \(\rightarrow\) 256 niveaux de vert\\{\tiny(0 pas de vert, 255 vert pur)}
\item[B] 8 bits, 1 octet \(\rightarrow\) 256 niveaux de bleu\\{\tiny(0 pas de bleu, 255 bleu pur)}
\end{description}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Le modèle Teinte-Saturation-Valeur}
\begin{columns}
\begin{column}{0.4\textwidth}
\includegraphics[width=5cm]{TSVRVBGimp.eps}
\end{column}
\begin{column}{0.6\textwidth}
\begin{description}\scriptsize
\item[Teinte] correspond à la couleur sur 360\(^\circ\). Le rouge se situe à 0\(^\circ\), le vert à 120\(^\circ\) et le bleu à 240\(^\circ\) selon un angle trigonométrique.
\item[Saturation] correspond à la quantité de couleur ''dans`` le blanc.
\item[Valeur] correspond, quant à elle, à la quantité de couleur ''dans`` le noir.
\end{description}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Exemples}
\begin{columns}
\begin{column}{0.5\textwidth}
\includegraphics[width=4cm]{SatVal.eps}
Bleu peu saturé
\includegraphics[width=4cm]{BleuPeuSat.eps}
\end{column}
\begin{column}{0.5\textwidth}
\includegraphics[width=4cm]{ValSat.eps}
Bleu peu valorisé
\includegraphics[width=4cm]{BleuPeuVal.eps}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Mathématiquement}
\small
Si on considère M et m, respectivement, comme le maximum et le minimum des valeurs de l'ensemble (R,V,B), les valeurs T, S et V sont données par l'ensemble des relations ci-dessous où \(T\in[0,360]\).
\begin{align*}\label{rvbtsv}%\tiny
T&=\left\{
\begin{array}{ll}
0 & \text{si } M=m \\
60\cdot \frac{V-B}{M-m}+ 0^\circ & \text{si } M=R \text{ et } V\geqslant B\\
60\cdot \frac{V-B}{M-m}+ 360^\circ & \text{si } M=R \text{ et } V< B\\
60\cdot \frac{B-R}{M-m}+ 120^\circ & \text{si } M=V\\
60\cdot \frac{R-V}{M-m}+ 240^\circ & \text{si } M=B
\end{array}
\right.\\
S&=\left\{
\begin{array}{ll}
0 & \text{si } M=0\\
(1-\frac{m}{M})\cdot 100 & \text{sinon}
\end{array}
\right.\\
V&=\frac{M}{255}\cdot 100
\end{align*}
\end{frame}
\begin{frame}{Exercices}
\definecolor{monbleu}{rgb}{0.13,0.22,0.94}
\definecolor{monbleuvert}{rgb}{0.09,0.94,0.78}
\definecolor{monorange}{rgb}{1,0.91,0.69}
Trouvez les valeurs TSV des couleurs en RVB suivantes et décrivez la couleur :
\medskip
\only<1>{(34,56,239) ;
(22,240,200) ;
(255,231,176). }
\medskip
\only<2>{(34,56,239) \(\rightarrow\) (234,86,94) {\color{monbleu}bleu très saturé et valorisé} ;
(22,240,200) \(\rightarrow\) (169,91,94) {\color{monbleuvert}bleu-vert très saturé et vlorisé} ;
(255,231,176) \(\rightarrow\) (42,31,100) {\color{monorange}orange peu saturé et très valorisé}.}
\end{frame}
\begin{frame}{L'outils courbe}
\begin{columns}
\begin{column}{0.45\textwidth}
\includegraphics[width=4.6cm]{OutilCourbes.eps}
\end{column}
\begin{column}{0.55\textwidth}
Description :
\textbf{Abscisse} : Niveaux de gris pour la valeur d'entrée.
\textbf{Ordonnée} : Nombre de pixels de la valeur donnée.
La valeur de sortie correspond à la valeur d'entrée si la courbe est une droite diagonale.
A gauche se trouve le \emph{point noir} et à droite le \emph{point blanc}.
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Outil courbe : correction d'une dominante \(\rightarrow\) pointer un pixel devant être gris, puis imposer RVB identiques}
\begin{columns}
\begin{column}{0.25\textwidth}
Original
\includegraphics[width=3cm]{TourBleue.eps}
\end{column}
\begin{column}{0.25\textwidth}
Répartition des tons bleus
\includegraphics[width=2.6cm]{TourCourbeB.eps}
\end{column}
\begin{column}{0.25\textwidth}
Répartition des tons verts
\includegraphics[width=2.6cm]{TourCourbeV.eps}
\end{column}
\begin{column}{0.25\textwidth}
Répartition des tons rouges
\includegraphics[width=2.6cm]{TourCourbeR.eps}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Original et correction de dominante}
\begin{columns}
\begin{column}{0.5\textwidth}
\includegraphics[width=5cm]{TourBleue.eps}
\end{column}
\begin{column}{0.5\textwidth}
\includegraphics[width=5cm]{Tour.eps}
\end{column}
\end{columns}
\end{frame}
\begin{frame}[containsverbatim]{Compression RLE : non destructive}
\textsc{\LARGE Codage par plage ou Run-Length Encoding.}
\medskip
Chaque octet (deux nombres hexadécimaux) est codé par le nombre de ses occurences successives et sa valeur.
\begin{block}{La chaine \dots}
00 00 00 0A 12 00 00 23 23 23 23 12 12 AB AB AB AB AB
\end{block}
\begin{block}{est alors codée de la manière suivante :}
03 00 01 0A 01 12 02 00 04 23 02 12 05 AB
\end{block}
On a en effet, 03 octets 00, 01 octet 0A, 01 octet 12, 02 octets 00, 04 octets 23, 02 octets 12 et 05 octets AB.
\end{frame}
\begin{frame}[containsverbatim]{RLE : inconvénients}
Plus il existe de plages identiques, plus la compression est importante.
Par contre, pour des images très détaillées, ce codage peut augmenter la taille de l'image :
\begin{block}{Un effet regrettable}
01 00 AE AB 1C 3F \(\rightarrow\) 01 01 01 00 01 AE 01 AB 01 1C 01 3F
\end{block}
Adapté à de grands aplats de couleurs identiques et aux images monochrome ou en un nombre restreint de couleurs (256 par exemple). Utilisé pour les icones ou les documents au trait.
\end{frame}
\begin{frame}{Compression de Huffmann : non destructive}
{\color{red} Idée : coder les lettres fréquentes par des bits de poids faibles.}
\begin{block}{Une chaine comprenant cinq lettres}
ssionnansnni \(\leftarrow\) oaisn
\end{block}
Pour coder cinq lettres, il faut au minimum trois bits : \(2^3=8\).
\begin{block}{Un codage peu intelligent}
\(o\,\rightarrow\,000\; ; \;a\,\rightarrow\,001\; ; \;i\,\rightarrow\,010\; ; \;s\,\rightarrow\,011\; ; \;n\,\rightarrow\,100\)
\end{block}
Le résultat est une chaine de \(12\cdot 3=36\,\text{bits}\) pour douze caractères.
\begin{block}{La chaine encodée}
011|011|010|000|100|100|001|100|011|100|100|010
\end{block}
\end{frame}
\begin{frame}{Méthode : éléments de plus basse fréquence 2 à 2.}
\begin{block}{Arbre de Huffman : {\color{red} construction}}
\[\xymatrix @=5mm {
& {\color{red} 12\times}\\
n \ar[-1,1]^{\color{red} 5\times} & & {\color{red} 7\times} \ar[-1,-1] \\
& s \ar[-1,1]^{\color{red} 3\times} & & {\color{red} 4\times} \ar[-1,-1] \\
& & i \ar[-1,1]^{\color{red} 2\times} & & {\color{red} 2\times} \ar[-1,-1] & \\
& & & a \ar[-1,1]^{\color{red} 1\times} & & o \ar[-1,-1]_{\color{red} 1\times}
}\]
\end{block}
\end{frame}
\begin{frame}{Méthode : 1 sur bit fort pour éléments basse fréquence.}
\begin{block}{Arbre de Huffman : {\color{red} codage}}
\[\xymatrix @=4mm {
& 12\times \ar[1,-1]_{\color{red} 0} \ar[1,1]^{\color{red} 1}\\
(0)\,n & & 7\times \ar[1,-1]_{\color{red} 0} \ar[1,1]^{\color{red} 1} \\
& (10)\,s & & 4\times \ar[1,-1]_{\color{red} 0} \ar[1,1]^{\color{red} 1} \\
& & (110)\,i & & 2\times \ar[1,-1]_{\color{red} 0} \ar[1,1]^{\color{red} 1} & \\
& & & (1110)\,a & & o\,(1111)
}\]
\end{block}
\end{frame}
\begin{frame}{Codage de Huffmann}
Selon l'arbre de Huffmann, la lettre n est codée 0, la lettre s est codée 10, la lettre i est codée 110, la lettre a est codée 1110 et la lettre o codée 1111
\begin{block}{Codage de Huffmann}
ssionnansnni \(\rightarrow\) 10|10|110|1111|0|0|1110|0|10|0|0|110
\end{block}
soit 25 bits au lieu de 36 ! Une compression de 30\% !
De plus, le codage permet la suppression des bits nuls de poids fort. Le codage est UNIVOQUE.
\end{frame}
\begin{frame}{Méthode : on lit simplement en suivant l'arbre.}
\begin{block}{Arbre de Huffman : {\color{red} décodage} {\color{red} 10}10110\dots}
\[\xymatrix @=4mm {
& {\color{red} 12\times} \ar[1,-1]_{0} \ar[1,1]^{1}\\
(0)\,n & & {\color{red} 7\times} \ar[1,-1]_{0} \ar[1,1]^{1} \\
& {\color{red} (10)\,s} & & 4\times \ar[1,-1]_{0} \ar[1,1]^{1} \\
& & (110)\,i & & 2\times \ar[1,-1]_{0} \ar[1,1]^{1} & \\
& & & (1110)\,a & & o\,(1111)
}\]
\end{block}
\end{frame}
\begin{frame}{Exercices}
Déterminez le poids de l'image du double F précédemment présentée, mais codée selon RLE puis selon Huffmann.
\end{frame}
\begin{frame}[containsverbatim]{Compression RLE pour le double F}
\begin{columns}
\begin{column}{0.5\textwidth}
\tiny
\begin{Verbatim}[fontsize=\relsize{-0.4}]
42 4d de 00 00 00 00 00 00 00 36 00 00 00 28 00
00 00 07 00 00 00 07 00 00 00 01 00 18 00 00 00
00 00 a8 00 00 00 13 0b 00 00 13 0b 00 00 00 00
00 00 00 00 00 00 00 ff 00 00 87 00 ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff 00 00 00 00 ff
00 00 87 00 ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff 00 00 00 00 ff 00 00 87 00 00 87 00 ff
ff ff ff ff ff ff ff ff ff ff ff 00 00 00 00 ff
00 00 ff 00 00 ff 00 00 ff 00 ff ff ff ff ff ff
ff ff ff 00 00 00 00 ff 00 00 87 00 ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff 00 00 00 00 ff
00 00 87 00 00 87 00 00 87 00 00 87 00 00 87 00
ff ff ff 00 00 00 00 ff 00 00 ff 00 00 ff 00 00
ff 00 00 ff 00 00 ff 00 00 ff 00 00 00 00
\end{Verbatim}
\scriptsize
16 x 14 - 2 = 222 octets
\end{column}
\begin{column}{0.5\textwidth}
\tiny
\begin{Verbatim}[fontsize=\relsize{-0.4}]
01 42 01 4d 01 de 07 00 01 36 03 00 01 28 03 00
01 07 03 00 01 07 03 00 01 01 01 00 01 18 05 00
01 a8 03 00 01 13 01 0b 02 00 01 13 01 0b 0B 00
01 FF 02 00 01 87 01 00 0F FF 04 00 01 FF 02 00
01 87 01 00 0F FF 04 00 01 FF 02 00 01 87 02 00
01 87 01 00 0C FF 04 00 01 FF 02 00 01 FF 02 00
01 FF 02 00 01 FF 01 00 09 FF 04 00 01 FF 02 00
01 87 01 00 0F FF 04 00 01 FF 02 00 01 87 02 00
01 87 02 00 01 87 02 00 01 87 02 00 01 87 01 00
03 FF 04 00 01 FF 02 00 01 FF 02 00 01 FF 02 00
01 FF 02 00 01 FF 02 00 01 FF 02 00 01 FF 04 00
\end{Verbatim}
\scriptsize
16 x 11 = 176 octets
\end{column}
\end{columns}
\[\text{compression : } c=\frac{222-176}{222}\cdot 100=20,7\,\%\]
\end{frame}
\begin{frame}[containsverbatim]{Compression de Huffmann pour le double F}
\begin{columns}
\begin{column}{0.4\textwidth}
\tiny
\begin{Verbatim}[fontsize=\relsize{-0.4}]
42 4d de 00 00 00 00 00 00 00 36 00 00 00 28 00
00 00 07 00 00 00 07 00 00 00 01 00 18 00 00 00
00 00 a8 00 00 00 13 0b 00 00 13 0b 00 00 00 00
00 00 00 00 00 00 00 ff 00 00 87 00 ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff 00 00 00 00 ff
00 00 87 00 ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff 00 00 00 00 ff 00 00 87 00 00 87 00 ff
ff ff ff ff ff ff ff ff ff ff ff 00 00 00 00 ff
00 00 ff 00 00 ff 00 00 ff 00 ff ff ff ff ff ff
ff ff ff 00 00 00 00 ff 00 00 87 00 ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff 00 00 00 00 ff
00 00 87 00 00 87 00 00 87 00 00 87 00 00 87 00
ff ff ff 00 00 00 00 ff 00 00 ff 00 00 ff 00 00
ff 00 00 ff 00 00 ff 00 00 ff 00 00 00 00
\end{Verbatim}
\scriptsize
16 x 14 - 2 = 222 octets
\end{column}
\begin{column}{0.6\textwidth}
\begin{center}
\begin{tabular}{l|l}
Octets & Fréquence \\ \hline
42, 4d, de, 36, & \\
28, 01, 18, a8 & 1\\
07, 13, 0b & 2 \\
87 & 10 \\
ff & 85 \\
00 & 113
\end{tabular}
\end{center}
\[\text{14 symboles : } 2^4=16 \Rightarrow \text{4 bits}\]
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Arbre de Huffmann}
\[\xymatrix @C=0pt @R=7pt {
& 00 & & 222\times \ar[0,-2]_{0} \ar[1,1]^{1} \\
& & ff & & 109\times \ar[0,-2]_{0} \ar[1,1]^{1} \\
& & & 87 & & 24\times \ar[0,-2]_{0} \ar[1,3]^{1} \\
& & 6\times \ar[1,-1]_{0} \ar[1,1]^{1} & & & & & & 14\times \ar[0,-6]_{0} \ar[1,0]^{1}\\
& 4\times \ar[1,-1]_{0} \ar[1,1]^{1} & & 0b & & & & & 8\times \ar[1,-4]_{0} \ar[1,4]^{1}\\
13 & & 07 & & 4\times \ar[1,-2]_{0} \ar[1,2]^{1} & & & & & & & & 4\times \ar[1,-2]_{0} \ar[1,2]^{1} \\
& & 2\times \ar[1,-1]_{0} \ar[1,1]^{1} & & & & 2\times \ar[1,-1]_{0} \ar[1,1]^{1} & & & & 2\times \ar[1,-1]_{0} \ar[1,1]^{1} & & & & 2\times \ar[1,-1]_{0} \ar[1,1]^{1} & \\
& a8 & & 18 & & 01 & & 28 & & 36 & & de & & 4d & & 42
}\]
\end{frame}
\begin{frame}{Codage de Huffmann}
Arbre binaire => 14 symboles sur 7 bits !
\begin{center}
\begin{tabular}{lll|l}
Octets & Fréquence & codage & Total \\ \hline
42, 4d, de, 36, & & & \\
28, 01, 18, a8 & 1 & 7 bits \(\Rightarrow 8\cdot 7 =\) & 56 bits \\
07, 13, 0b & 2 & 6 bits \(\Rightarrow 3\cdot 2\cdot 6 =\) & 36 bits \\
87 & 10 & 3 bits \(\Rightarrow 10\cdot 3 =\) & 30 bits \\
ff & 85 & 2 bits \(\Rightarrow 85\cdot 2 =\) & 170 bits \\
00 & 113 & 1 bits \(\Rightarrow 113\cdot 1 =\) & 113 bits \\ \hline
& & total : 405 bits = & 51 octets
\end{tabular}
\end{center}
\[\text{Compression : } c = \frac{222-51}{222}\cdot 100 = 77 \%\]
\end{frame}
\begin{frame}{Principaux formats d'image : TIFF}
\begin{itemize}
\item \textbf{TIFF ou Tag Image File Format} : professionnels de l'image.
\item Non compressé : images sans perte de qualité.
\item Compressé (LZW (Lempel-Ziv-Welch) pour images ayant peu de couleurs ou d'autres \dots) sans perte de définition (non destructif).
\item Taille importante : pas recommandé pour une utilisation sur le web.
\item Format propriétaire (Adlus, Adobe). Avec le JPG et malgré qu'il soit propriétaire, c'est le format de numérisation du ministère de la culture en France.
\end{itemize}
\end{frame}
\begin{frame}{Principaux formats d'image : JPG}
\begin{itemize}
\item \textbf{JPG ou Joint Photographic Expert Group} : format du web.
\item Compressé en fonction de la qualité de l'image finale désirée (RLE, Huffmann et transformée de fourier).
\item Pas un format propriétaire mais plutôt une norme publique, même si certains en revendiquent la paternité.
\item Utilisé communément par les appareils photographique numérique.
\item C'est LE format le plus utilisé aujourd'hui.
\end{itemize}
\end{frame}
\begin{frame}{Principaux formats d'image : GIF}
\begin{itemize}
\item \textbf{GIF ou Graphics Interchange Format} : format 8 bits, c'est-à-dire avec au maximum 256 couleurs.
\item Images sont donc de petite taille adaptées au web.
\item Images de type logo ou dessin animés. Banderoles et autres petits dessins animés égayant les pages web.
\item Ce format totalement propriétaire (Compuserve) est maintenant dans le domaine publique depuis peu.
\end{itemize}
\end{frame}
\begin{frame}{Principaux formats d'image : PNG}
\begin{itemize}
\item \textbf{PNG ou Portable Network Graphics} : destiné à remplacer progressivement le format GIF sur internet.
\item Meilleur taux de compression (compression png) que le GIF.
\item Format totalement libre.
\end{itemize}
\end{frame}
\begin{frame}{Principaux formats d'image : EPS}
\begin{itemize}
\item \textbf{EPS ou Encapsuled PostScript} directement à une imprimante postscript.
\item Gère des images de type bitmap (ensemble de points) ou vectorielle (des courbes et lignes).
\item Comprend le RVB ou le CMJN.
\item Pas un format propriétaire.
\item Format d'image. Ne pas confondre avec le PostScript qui n'est pas à proprement parlé un format d'image, mais un langage d'instruction d'impression.
\end{itemize}
\end{frame}
\begin{frame}{Principaux formats d'image : PDF}
\begin{itemize}
\item \textbf{PDF ou Portable Document Format} visualisation et l'impression d'un document indépendamment de la plate-forme.
\item Peu gourmand en espace et est donc intéressant pour le web.
\item Non compressé ou compressé non destructif.
\item Format propriétaire (Adobe), mais ouvert et parfaitement documenté.
\end{itemize}
\end{frame}
\subsection{Le son}
\begin{frame}{La physique du son}
\begin{columns}
\begin{column}{0.5\textwidth}
\begin{block}{Décomposition de Fourrier\endnote{Voir Wikicommon : \url{http://commons.wikimedia.org/wiki/File:Fourier\_d\%27un\_carr\%C3\%A9.svg}}}
\begin{center}
\includegraphics[width=5cm]{Images/Fourier_dun_carre.eps}
\end{center}
\end{block}
\end{column}
\begin{column}{0.5\textwidth}
\begin{block}{Onde sinusoidale\endnote{Voir Wikicommon : \url{http://commons.wikimedia.org/wiki/File:Onde\_endroit\_fixe.png}}}
\begin{center}
\includegraphics[width=5cm]{Images/Onde_endroit_fixe.eps}
\end{center}
\end{block}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Échantillonnage}
\input{GNUplot/Echantillonage}
\end{frame}
\begin{frame}{Quantification}
\input{GNUplot/Quantification}
\end{frame}
\begin{frame}{Numérisation du signal : histogramme et codage sur 3 bits}
Attention, un codage sur trois bits introduit un fort bruit. Il faut, pour avoir un rendu correct de la musique, au minimum 16 bits de dynamique (quantification). Le codage hexadécimal est alors adéquat.
\medskip
\begin{tabular}{l|llllllllllll}
V(k) & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 \\ \hline
déc & 0 & 1 & 3 & 4 & 4 & 4 & 4 & 3 & 2 & 0 & 0 & -2 \\
bin & 0 & 1 & 11 & 100 & 100 & 100 & 100 & 11 & 10 & 0 & 0 & 110\\
hex & 0 & 1 & 3 & 4 & 4 & 4 & 4 & 3 & 2 & 0 & 0 & ?
\end{tabular}
\end{frame}
\begin{frame}{Grandeurs importantes}
Plusieurs grandeurs sont à considérer :
\begin{itemize}
\item durée du morçeau,
\item fréquence maximale du signal
\item fréquence d'échantillonage (thm de Shannon) : double de la fréquence maximale suffit
\item dynamique, nombre de bit de quantification
\item nombre de canaux (2.0 : stéréo, pas de caisson de basse ; 5.1 : trois haut-parleurs avant, deux arrières et un caisson de basse)
\end{itemize}
\end{frame}
\begin{frame}{Formats audio-numériques}
La gamme des fréquences audibles se situe entre 20 Hz et 20 kHz. Shannon implique donc : \(f_e\geqslant40'000\,Hz\) (44'100 car une ligne PAL 294 points de trois couleurs à 50 images par seconde, soit \(294\cdot 3\cdot 50=44'100\)).
Le flux ou ''bitrate`` se calcule par la multiplication de l'échantillonage par la quantification (en kilobits/s ou kbps) et le nombre de canaux.
\medskip
\begin{tabular}{l|lllll}
Support & Phone & DV & CD aud & DVD vid & DVD HD \\ \hline
Échant. (Hz) & 8'000 & 48'000 & 44'100 & 48'000 & 96'000 \\
Quantif. (bits) & 8 & 16 & 16 & 16 & 24 \\
Canaux & 1 & 2 & 2 & 6 & 8 \\
Flux (kbits/s) & 62,5 & 1500 & 1378,1 & 4500 & 18000
\end{tabular}
\end{frame}
\begin{frame}{Fichiers, conteneurs, formats, extension, codecs et encodeur}
\includegraphics[width=11cm]{Format_mp3.eps}
\end{frame}
\begin{frame}{Principaux formats et codecs audio}
\begin{block}{WAV}
Conteneur : mp3, pcm, wma \dots, mais par référence non compressé : 10 Mo/min \(= 44'100\cdot 16\cdot 2\cdot 60/8/1024/1024\)
\end{block}
\begin{columns}
\begin{column}{0.5\textwidth}
\begin{block}{MP3}
Compression destructive (ds hautes fréquences)
Rapport 1/10 wav ; débit fixe 1Mo/min (CD)
Tag ID3
\end{block}
\end{column}
\begin{column}{0.5\textwidth}
\begin{block}{OGG/VORBIS}
Compression destructive ; mieux mp3
Rapport 1/10 wav ; débit variable
Tag ID3 ; libre ; encodeur oggenc
\end{block}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Suite}
\begin{columns}
\begin{column}{0.5\textwidth}
\begin{block}{FLAC}
Free Lossless Audio
Compression sans pertes
Rapport 1/7 wav
Libre
\end{block}
\begin{block}{AAC}
Advanced Audio Coding
Compression destructive
Rapport 1/10 wav ; Ipod, Itune
Meilleur car MPEG-4 ; encodeur faac
\end{block}
\end{column}
\begin{column}{0.5\textwidth}
\begin{block}{WMA}
Windows Media Audio
Compression destructive
Rapport variable
Dispositifs anticopie
\end{block}
\end{column}
\end{columns}
\end{frame}
\subsection{Programmation}
\section{Annexes}
\subsection{Motorisation télescope}
\begin{frame}{Exemple : ``Un projet télescopique''\hypertarget{projettelescopique}{}}
\begin{description}[Moyens matériels]
\item[Objectif] Réaliser le suivi d'une étoile guide par la motorisation du télescope du lycée.
\item[Moyens matériels] Deux moteurs, une carte de commande sur port parallèle, un ordinateur portable.
\item[Moyens logiciels] Aucun driver, un logiciel libre de suivi et de photographie astronomique pour webcam.
\item[Rejetés] Iris (fantastique logiciel gratuit de traitement d'images astro) car seuls les montures motorisées de type LX200 sont prévues. Code source fermé \(\Rightarrow\) accord et implication du développeur.
\end{description}
\end{frame}
\begin{frame}
\begin{columns}
\begin{column}{0.4\textwidth}
\includegraphics[width=5cm]{cartes.eps}
\smallskip
\includegraphics[width=4cm]{comiop.eps}
\end{column}
\begin{column}{0.1\textwidth}
\centering C++
\(\Leftrightarrow\)
\end{column}
\begin{column}{0.5\textwidth}
\includegraphics[width=5cm]{qastrocam.eps}
\end{column}
\end{columns}
\end{frame}
\begin{frame}[containsverbatim]{Intégration du code}
\begin{columns}
\begin{column}{0.4\textwidth}
Qastrocam
\tiny \url{http://3demi.net/astro/qastrocam/doc/}
\medskip
\centering \includegraphics[width=2cm]{mascote-noir-med.eps}
\end{column}
\begin{column}{0.6\textwidth}
Code source ajouté à qastrocam :
\lstset{language=C,basicstyle=\tiny,frame=none,numbers=left,numberstyle=\tiny,stepnumber=1,numbersep=5pt,showstringspaces=false,breaklines=true,keywordstyle=\color{blue},commentstyle=\color{vert},stringstyle=\color{red},identifierstyle=\ttfamily}
\begin{lstlisting}
#ifndef _QTelescopeLBC_hpp_
#define _QTelescopeLBC_hpp_
#include "QTelescope.hpp"
class PPort;
void *runEW(void *arg);
void *runSN(void *arg);
class QTelescopeLBC : public QTelescope {
Q_OBJECT;
public:
QTelescopeLBC(PPort * pport);
void goE(float shift);
void goW(float shift);
void goS(float shift);
void goN(float shift);
void stopE();
void stopW();
void stopS();
void stopN();
void threads_start();
void threads_stop();
double setSpeed(double speed);
bool setTracking(bool activated);
};
#endif
\end{lstlisting}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Limites du projet}
Critiques importantes :
\begin{itemize}
\item Ouverture du code : bien \(\Rightarrow\) adaptation spécifique au télescope du lycée.
Mais cette adaptation est versatile à cause des mises-à-jour \(\Rightarrow\) nécessité d'une documentation précise permettant la recompilation du logiciel modifié (impossible sans code source !).
\item Pérénité de l'adaptation \(\Rightarrow\) soutient des développeurs (déchargés de produire l'adaptation).
\item Reste toujours la possibilité de fork (projet indépendant).
\end{itemize}
\medskip
\hyperlink{ouvertureducode}{\beamerbutton{retour licences libres}}
\end{frame}
\subsection{LibreOffice}
\begin{frame}{Le contexte de LibreOffice\hypertarget{LOstyles}{}}
\begin{columns}
\begin{column}{0.5\textwidth}
\begin{block}<+->{\small Microprojet}
Récupérer la page ``informatique'' de Wikipedia pour impression.
\end{block}
\end{column}
\begin{column}{0.5\textwidth}
\begin{block}<+->{\small Problèmes rencontrés}
\begin{itemize}
\item Copier--coller : plantage OO-2.4.
\item Copier--coller-texte : pas de structure.
\item Table des matières incorrecte.
\item Liens soulignés et en bleu.
\item Notes de fin non actives.
\item Références non actives.
\item Image non référencée.
\end{itemize}
\end{block}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Pas de problèmes, que des solutions}
\begin{columns}
\begin{column}{0.5\textwidth}
\begin{block}{\small Problèmes rencontrés}
\begin{itemize}
\hilite<1> \item Copier--coller : plantage OO-2.4.
\hilite<2> \item Copier--coller-texte : pas de structure.
\hilite<3> \item Table des matières incorrecte.
\hilite<4> \item Liens soulignés et en bleu.
\hilite<5> \item Notes de fin non actives.
\hilite<6> \item Références non actives.
\hilite<7> \item Image non référencée.
\end{itemize}
\end{block}
\end{column}
\begin{column}{0.5\textwidth}
\begin{block}{\small Solutions}
\begin{itemize}
\item<1-> OO-3 ; découper le document.
\item<2-> Utiliser les styles.
\item<3-> Styles et index.
\item<4-> Styles de liens.
\item<5-> Pénible ou XML.
\item<6-> Base de donnée OO
\item<7-> Légende : table des illustrations.
\end{itemize}
\end{block}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{LibreOffice, Xhtml, XML}
Background de la mise en forme sous OO.
\begin{columns}
\begin{column}{0.25\textwidth}
\begin{block}<+->{\small OO et XML}
\Large OO -- XML
.odt \(\leftrightarrows\) .zip
\end{block}
\end{column}
\begin{column}{0.75\textwidth}
\begin{block}<+->{\small Structure archive zip}
\begin{description}[settings.xml]
\item[meta.xml] donne des informations générales sur le document : auteur, dates \dots
\item[styles.xml] contient les styles utilisés,
\item[content.xml] contient le contenu du document,
\item[settings.xml] qui contient des informations relatives aux applications utilisées (imprimantes, \dots).
\end{description}
\end{block}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Exemple}
\begin{columns}
\begin{column}{0.4\textwidth}
Une structure classique :
titres hiérarchisés.
\end{column}
\begin{column}{0.3\textwidth}
\centering \includegraphics[width=2cm]{TitresOO.eps}
\end{column}
\end{columns}
\end{frame}
\begin{frame}[containsverbatim]{Traduction en XML}
\tiny
\begin{lstlisting}[language=XML,breaklines=true]
<office:body>
<office:text>
</text:sequence-decls>
<text:h text:style-name="Heading_20_1" text:outline-level="1">Les transports</text:h>
<text:p text:style-name="Standard"/>
<text:h text:style-name="Heading_20_2" text:outline-level="2">Pour les jeunes</text:h>
<text:h text:style-name="Heading_20_3" text:outline-level="3">Le skate</text:h>
<text:p text:style-name="Standard">Planche a roulette</text:p>
<text:h text:style-name="Heading_20_3" text:outline-level="3">Le roller</text:h>
<text:p text:style-name="Standard">Patins a roulette</text:p>
<text:h text:style-name="Heading_20_3" text:outline-level="3">le velo</text:h>
<text:p text:style-name="Standard">Deux roues</text:p>
<text:h text:style-name="Heading_20_2" text:outline-level="2">Pour les vieux</text:h>
<text:h text:style-name="Heading_20_3" text:outline-level="3">La voiture</text:h>
<text:p text:style-name="Text_20_body">Quatre roues</text:p>
<text:h text:style-name="Heading_20_3" text:outline-level="3">Le bateau</text:h>
<text:p text:style-name="Text_20_body">Une coque</text:p>
</office:text>
</office:body>
\end{lstlisting}
\begin{flushright}
\hyperlink{LOstylesretour}{\beamerbutton{Retour LibreOffice}} \hyperlink{LOstylesDO}{\beamerbutton{Retour LibreOffice DO}}
\end{flushright}
\end{frame}
\subsection{Évaluations}
\begin{frame}{Trois évaluations pour quatre notes\hypertarget{evaluationsDO}{}}
\begin{description}[Projet présentation]
\item[TE \textsc{connaissances générales}]
\begin{itemize}
\item Début décembre, impérativement avant Noël.
\item La matière vue jusque là.
\end{itemize}
\item[Projet \textsc{Programmation} (compte double)]
\begin{itemize}
\item Validation,
\item Rendre à date spécifiée,
\item À deux (même note),
\item Application particulière imposée,
\item Documentation conséquente,
\item Licence, respect du RGPD et du droit d'auteur (images et code),
\end{itemize}
\item[Projet informatique et société]
\begin{itemize}
\item Par groupe de deux.
\item Une page recto-verso de texte.
\end{itemize}
\end{description}
\begin{flushright}
\hyperlink{evaluationsretourDO}{\beamerbutton{Retour cours}}
\end{flushright}
\end{frame}
\subsection{Évaluations}
\begin{frame}{Trois évaluations pour quatre notes\hypertarget{evaluations}{}}
\begin{description}[Projet présentation]
\item[Projet \textsc{texte}]
\begin{itemize}
\item Validation par l'enseignant
\item Rendre avant Noël,
\item À deux (même note),
\item Un site en HTML,
\item Une page expliquant les problèmes rencontrés, tout compte,
\item Une licence expliquée.
\end{itemize}
\item[Projet \textsc{Javascript} (compte double)]
\begin{itemize}
\item Validation,
\item Rendre à date spécifiée,
\item À deux (même note),
\item Site ou application javascript,
\item Documentation conséquente,
\item Licence, respect du RGPD et du droit d'auteur (images et code),
\end{itemize}
\item[Projet libre] Une page recto-verso de texte. \hyperlink{evaluationsretour}{\beamerbutton{Retour cours}}
\end{description}
\end{frame}
\subsection{\LaTeX}
\begin{frame}[containsverbatim]{Structure générale}
\begin{columns}
\begin{column}{0.2\textwidth}
Fichier d'extension {\color{red}.tex}
\medskip
Structure identique au fichier source d'un programme d'informatique.
\end{column}
\begin{column}{0.8\textwidth}
\begin{block}{Préambule}
\begin{lstlisting}[language=tex,breaklines=true]
\documentclass[a4paper,10pt]{book}
\usepackage[options]{nom du paquet}
\end{lstlisting}
\end{block}
\begin{block}{Corps}
\begin{lstlisting}[language=tex,breaklines=true]
\begin{document}
...
\end{document}
\end{lstlisting}
\end{block}
\end{column}
\end{columns}
\medskip
Attention, \LaTeX n'est pas un language XML !
\end{frame}
\begin{frame}[containsverbatim]{Le préambule}
Voici un exemple de préambule commenté
(en \LaTeX les commentaires commencent par \%).
\begin{lstlisting}[language=tex,basicstyle=\tiny,breaklines=true]
\documentclass[a4paper,10pt]{book}
\usepackage[T1]{fontenc} % Pour les accents
\usepackage[utf8]{inputenc} % Pour la gestion de l'encodage
\usepackage[french]{babel} % Pour la gestion de la typo francaise
\usepackage{verbatim} % Pour mettre des commentaires etendus
\usepackage{graphicx} % Pour mettre des images
\graphicspath{{./Images/}} % Pour eviter de mettre le chemin des images
\usepackage{fancyhdr} % Pour des entetes
\fancyhead[RE,LO]{Lycee Blaise Cendrars\\La Chaux-de-Fonds}
\fancyhead[LE,RO]{\thepage}
\lfoot{} \cfoot{} \rfoot{}
\pagestyle{fancy} % Pour un style de page particulier
\title{Galilee (savant)} % A mettre dans le titre
\author{Un article de Wikipedia, l'encyclopedie libre.}
\setlength{\headheight}{22.6pt} % pour elargir un peu l'entete
\end{lstlisting}
\end{frame}
\begin{frame}[containsverbatim]{Le corps}
Voici un exemple de structure du corps du document.
\begin{lstlisting}[language=tex,basicstyle=\tiny,breaklines=true]
\begin{document} % Debut du corps du document
\maketitle % Cree une page de titre
\begin{comment} % Pour un commentaire long
...
\end{comment}
...
\tableofcontents{} % Cree une table des matieres
\chapter{Premier chapitre} % Premier chapitre
\section{Sous-titre} % Premiere section
...
\section{Sous-titre} % Seconde section
...
\end{document} % Fin du corps du document
\end{lstlisting}
\end{frame}
\begin{frame}[containsverbatim]{Quelques commandes de base}
Évidemment, la richesse de \LaTeX tient dans celle de ses commandes.
En voici quelques-unes :
\bigskip
\begin{columns}
\begin{column}[t]{4cm}
Maths hors ligne :
\begin{lstlisting}[language=tex,basicstyle=\tiny,breaklines=true]
\[E=m\cdot c^2\]
\end{lstlisting}
Maths en ligne :
\begin{lstlisting}[language=tex,basicstyle=\tiny,breaklines=true]
\(E=m\cdot c^2\)
\end{lstlisting}
\end{column}
\begin{column}[t]{4cm}
\[E=m\cdot c^2\]
\(E=m\cdot c^2\)
\end{column}
\end{columns}
\begin{columns}
\begin{column}[t]{4cm}
Liste :
\begin{lstlisting}[language=tex,basicstyle=\tiny,breaklines=true]
\begin{itemize}
\item Truc
\item Chose
\end{itemize}
\end{lstlisting}
\end{column}
\begin{column}[t]{4cm}
Le résultat :
\begin{itemize}
\item Truc
\item Chose
\end{itemize}
\end{column}
\end{columns}
\end{frame}
\section{Internet}
\transdissolve
\subsection{Constituants des pages}
\begin{frame}{Constituants des pages}
\begin{block}{Un site web est constitué de :}
\begin{itemize}
\pause
\item Structure et contenu HTML ou XHTML
\pause
\item Présentation avec les feuilles de style CSS
\pause
\item Graphisme et intégration des images GIF, JPG, PNG, MNG.
\pause
\item Anciennement, animation en Flash, aujourd'hui avec attributs CSS3 ou SVG et javascript.
\pause
\item Incorporation de multimédias (sons, vidéos...).
\pause
\item Dynamisme au niveau de la gestion de contenu (coté serveur) avec des langages de développement de type PHP, Java ... fonctionnant avec un serveur Web.
\pause
\item Des bases de données de type SQL ou XML.
\end{itemize}
\end{block}
\end{frame}
\begin{frame}{Côté client}
La notion de client-serveur désigne un mode de communication dans un réseau, comme par exemple un réseau internet.
\pause
\begin{block}{Le client}
Le client envoie des requêtes. Exemple, l'utilisateur internaute clique sur un lien. Il envoie donc une requête au serveur sur lequel le site est installé. Il passe par un navigateur qui envoie la requête, puis interprète les pages HTML que lui retourne le serveur pour les afficher.
\end{block}
\end{frame}
\begin{frame}{Côté serveur}
\begin{block}{Le serveur}
\begin{columns}
\begin{column}{0.45\textwidth}
Le serveur attend les requêtes de l'utilisateur (serveur web), réunit ce qu'il est nécessaire pour composer une réponse (base de donnée), la construit (php) et la retourne au client.
\end{column}
\begin{column}{0.45\textwidth}
\centering
\includegraphics[scale=0.2]{Images/Html_serveur.eps}
\end{column}
\end{columns}
\end{block}
\end{frame}
\subsection{Les CMS : Systèmes de Management de Contenu}
\begin{frame}{Beaucoup de choix}
\textbf{Ne pas refaire le monde. Dynamique en php et javascript déjà présente.}
Différents niveaux de pré-fabriqué, en fonction des besoins :
\begin{enumerate}
\item CMS déjà installé sur site. Un panneau de configuration \(\rightarrow\) quelques interactions aspects visuels - contenu. Problème : publicités.
\item CMS à installer. Le contôle du code \(\rightarrow\) adaptation aux spécificités. Sécurité et mise-à-jour prises en charge par les développeurs du CMS.
\item CMS sans structure php. HTML, CSS et javascript \(\rightarrow\) compatibilité navigateurs - mobiles. Problèmes : sécurité - mises-à-jour. Exemples : Initializr ou boilerplate (template).
\end{enumerate}
\end{frame}
\begin{frame}{Un cms parmi d'autres : GetSimple}
\begin{itemize}
\item libre et gratuit, sous licence GPL3,
\item un code propre en HTML5 et CSS3,
\item une gestion privée des utilisateurs par interface graphique,
\item une gestion privée des documents,
\item différents modèles de sites pré-faits,
\item la création de pages, via un éditeur simple,
\item des mises-à-jour régulières, ...
\end{itemize}
Tout cela nécessitant un serveur web, le langage php, mais pas de base de donnée SQL. Celle-ci est remplacée par un traitement XML des données.
\end{frame}
\begin{frame}{Installation}
Installation simple par dépôt ftp (sous filezilla par exemple).
\begin{block}{FTP : File Transfert Protocol}
Il s'agit d'un ensemble de règles de transfert d'information sur le réseau par copie de fichiers. On peut parler des outils nécessaires pour gérér des opérations de navigateur de fichiers sur des machines distantes.
\end{block}
\end{frame}
\begin{frame}{Résultat}
\begin{columns}
\begin{column}{0.5\textwidth}
Une page d'accueil
\smallskip
\includegraphics[width=5cm]{AccueilGetSimple.eps}
\end{column}
\begin{column}{0.5\textwidth}
Une zone d'administration
\smallskip
\includegraphics[width=5cm]{AdminGetSimple.eps}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Structure template}
\end{frame}
\subsection{HTML}
\begin{frame}{Langages de programmation pour internet}
\begin{center}
\Huge{HTML, CSS,\\Javascript et PHP}
\end{center}
\end{frame}
\begin{frame}{HTML5}
\begin{center}
\huge{HTML5}
\end{center}
\medskip
La création d'un site internet nécessite du contenu. Pour définir celui-ci, un langage, HTML pour Hyper Text Markup Language ou langage de balises hypertexte, est nécessaire. HTML est donc un langage de balisage du contenu, on dit aussi du fond, d'un site.
\smallskip
Aujourd'hui, la norme \emph{HTML5} est en vigueur. C'est donc sur celle-ci qu'on va se baser. Il s'agit d'une norme où les balises ont du sens, c'est-à-dire qu'elles signifient quelque chose, contrairement aux balises d'HTML4. On parlera de la sémantique d'HTML5.
\end{frame}
\begin{frame}{Structure de balisage}
Attention, HTML 5 est moins strict que XHTML !
Bonne pratique : fermer les balises.
\begin{block}{Ouverture - fermeture}
{\small<nom\_balise> texte </nom\_balise>}
\end{block}
\begin{block}{Hiérarchie}
{\small{\color{red}<balise1>}{\color{blue}<balise2>}{\color{black} { }texte }{\color{blue}</balise2>}{\color{red}</balise1>}}
\end{block}
\end{frame}
\begin{frame}{Balisage}
\textbf{Structure :}
{\small<html>, <head>, <body>}
\textbf{Head :}
{\small <title>, <meta>, <style>, <link>, <script>}
\textbf{Body :}
{\small <div>, <header>, <article>, <nav>, <aside>, <footer>, <h1>, <h2-5>, <p>, <a> (lien internet), <table>, <tr> (ligne), <td> (colonne), <hr /> (ligne), <img />, <audio />, <video />, <br /> (saut ligne), <b>, <strong>, <i>, <em>, <span>, <button>, \dots}
\end{frame}
\begin{frame}{Attributs}
Les balises peuvent avoir des attributs ou propriétés :
\smallskip
\fbox{<balise {\color{red}attribut1=``valeur1'' attribut2=``valeur2''}> \dots{} </balise>}
\smallskip
Exemples :
\textbf{Liens internet :}
{\small<a {\color{red}href=``http://www.wikipedia.org''}> Wikipedia</a>}
\textbf{Ligne horizontale :}
{\small<hr {\color{red}width='150px' align='left'}/>}
\textbf{Image :}
{\small<img {\color{red}src=``/repertoire/image.jpg''}/>}
\textbf{Image - lien :}
{\small<a href=``http://www.google.ch''>Google</a>}
\end{frame}
\begin{frame}[containsverbatim]{Structure générale}
La structure générale d'une page HTML est la suivante :
\begin{columns}
\begin{column}{0.3\textwidth}
\begin{lstlisting}[language=HTML,basicstyle=\scriptsize,breaklines=true]
<!DOCTYPE html>
<html>
<head>
...
</head>
<body>
...
</body>
</html>
\end{lstlisting}
\end{column}
\begin{column}{0.7\textwidth}\scriptsize
--> la déclaration du type HTML5 du document\\
--> balise d'ouverture du document\\
--> balise d'ouverture de l'entête\\
...\\
--> balise de fermeture de l'entête\\
--> balise d'ouverture du corps du document\\
...\\
--> balise de fermeture du corps du document\\
--> balise de fermeture du document
\end{column}
\end{columns}
\end{frame}
\begin{frame}[containsverbatim]{Structure générale}
La structure générale de l'entête est la suivante :
\begin{columns}
\begin{column}{0.55\textwidth}
\begin{lstlisting}[language=HTML,basicstyle=\scriptsize,breaklines=true]
<head>
<meta charset="UTF-8" />
<meta name="description"
content="Description page" />
<meta name="author"
content="mon nom" />
<title>Titre de la fenetre</title>
<link rel="stylesheet"
href="style.css" />
<style> ... </style>
<script> ... </script>
</head>
\end{lstlisting}
\end{column}
\begin{column}{0.45\textwidth}\scriptsize
--> balise d'ouverture de l'entête\\
--> Codage des caractères utilisés\\
--> balise de description de la page\\
...\\
--> balise de déclaration de l'auteur\\
...\\
--> balise de titre de la fenêtre\\
--> balise de feuille de style externe\\
...\\
--> balise de feuille de style interne\\
--> balise de script\\
--> balise de fermeture de l'entête
\end{column}
\end{columns}
\end{frame}
\begin{frame}[containsverbatim]{Structure générale}
La structure générale du corps est la suivante :
\smallskip
\begin{columns}
\begin{column}{0.5\textwidth}
\begin{lstlisting}[language=HTML,basicstyle=\scriptsize,breaklines=true]
<body>
<header> ... </header>
<nav> ... </nav>
<aside> ... </aside>
<article> ... </article>
...
<footer> ... </footer>
</body>
\end{lstlisting}
\end{column}
\begin{column}{0.5\textwidth}\scriptsize
--> balise d'ouverture du corps\\
--> balise de l'entête (logo, titre, \dots)\\
--> balise de la barre de navigation\\
--> balise de colonne latérale droite\\
--> balises des articles \\
--> \dots\\
--> balise du pied de page (copyright, \dots)\\
--> balise de fermeture du corps
\end{column}
\end{columns}
\end{frame}
\begin{frame}{CSS3}
\begin{center}
\huge{CSS3}
\end{center}
\medskip
Les feuilles de style permettent de gérer la forme qu'on veut donner au contenu d'un site. Cette forme peut dépendre des appareils (smartphone, écrans, beamer, ...) utilisés. Pour la gérer au mieux, on utilise généralement une feuille de style par appareil.
\smallskip
Un langage, CSS pour Cascading Style Sheet ou feuilles de style en cascade, est nécessaire pour cela. Aujourd'hui, la norme \emph{CSS3} est en vigueur. C'est donc sur celle-ci qu'on va se baser.
\end{frame}
\begin{frame}[containsverbatim]{Intégration des feuilles de styles}
Trois cas sont envisageables :
\begin{block}{Dans la balise.}
\begin{lstlisting}[language=HTML,basicstyle=\small,breaklines=true]
<p style=``color:red;font-size:100''>Texte</p>
\end{lstlisting}
\end{block}
\begin{columns}
\begin{column}{0.5\textwidth}
\begin{block}{Feuille interne}
\begin{lstlisting}[language=HTML,basicstyle=\scriptsize,breaklines=true]
<head>
<style type="text/css">
</style>
</head>
\end{lstlisting}
\end{block}
\end{column}
\begin{column}{0.5\textwidth}
\begin{block}{Feuille externe}
\begin{lstlisting}[language=HTML,basicstyle=\small,breaklines=true]
<head>
<link rel="stylesheet" type="text/css" href="feuille.css" />
</head>
\end{lstlisting}
\end{block}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Feuilles de styles : CSS}
Idée : séparer le contenu de la forme. Syntaxe :
\begin{center}
\fbox{sélecteur \{propriété:valeur\}}
\end{center}
\begin{columns}
\begin{column}{0.4\textwidth}
\small
\textbf{Exemples :}
\medskip
h1 \{font-size:120;\}
\smallskip
p \{font-family:``sans serif''; font-size:90\%; color:red\}
\end{column}
\begin{column}{0.6\textwidth}
\small
\textbf{Meilleure indentation :}
\smallskip
h1, h2 \{
\begin{tabbing}
font-family: ``sans serif'';\\
color: red;
\end{tabbing}
\}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Feuilles de styles : sélecteurs}
\begin{columns}
\begin{column}{0.5\textwidth}
\small
\textbf{Sélecteurs imbriqués :}
Toutes les sélections (span) de chaque paragraphes (p) sont passées en rouge.
\bigskip
<p>La voiture est <span>très</span> petite</p>
\medskip
p span \{color: red;\}
\smallskip
La voiture est {\color{red} très} petite
\end{column}
\begin{column}{0.5\textwidth}
\small
\textbf{Sélecteur identifié :}
Attention le sélecteur identifié est unique ! En d'autres termes, on ne peut mettre plusieurs identifiants identiques.
\bigskip
<p id=``cetexte''>Un pti texte</p>
\medskip
\#cetexte \{color: red\}
\smallskip
{\color{red} Un ptit texte}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Feuilles de styles : CSS}
\begin{columns}
\begin{column}{0.5\textwidth}
\small
\textbf{Sélecteurs de classe :}
Il s'agit d'appliquer un style à un ensemble d'éléments donnés.
\bigskip
<h1 class=``laclass''>La </h1>
<em class=``laclass''>deux chevaux, </em>
<p class=``laclass''>sa puissance </p>
<p>c'est la lenteur.</p>
\medskip
.laclass \{color:red\}
\medskip
{\color{red}\smallskip
\textbf{La }
\emph{deux chevaux, }
sa puissance}
c'est la lenteur.
\end{column}
\begin{column}{0.5\textwidth}
\small
\textbf{Sélecteur contextuel :}
Il s'agit d'appliquer un style suivant le contexte.
\bigskip
<div>Le vélo, c'est bien</div>
\medskip
div:hover \{background-color: red;\}
\medskip
Ici, en passant la souris sur le div, il devient rouge.
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Feuilles de styles : CSS}
\begin{columns}
\begin{column}{0.5\textwidth}
\small
\textbf{Plusieurs sélecteurs :}
Il s'agit d'appliquer le même style à plusieurs sélecteurs différents.
\bigskip
<h1>La </h1>
<em>deux chevaux, </em>
<p>sa puissance </p>
<p>c'est la lenteur.</p>
\medskip
h1, em, p \{color:red\}
\medskip
{\color{red}\smallskip
\textbf{La }
\emph{deux chevaux, }
sa puissance
c'est la lenteur.}
\end{column}
\begin{column}{0.5\textwidth}
\small
\textbf{Et d'autre encore \dots}
A découvrir.
\end{column}
\end{columns}
\end{frame}
\begin{comment}
%\begin{frame}[containsverbatim]{Structure générale}
\begin{frame}{Ancienne structure générale}
%\lstset{keywordstyle=\color{red},emph={body},emphstyle=\color{pink},emph=[2]head,emphstyle=[2]\color{yellow},emph=[3]html,emphstyle=[3]\color{blue}}
%\begin{lstlisting}[language=HTML,basicstyle=\tiny,breaklines=true]
%\end{lstlisting}
\begin{footnotesize}
\begin{itemize}
\item \only<1>{Prologue XML, nécessaire que pour une utilisation XML de XHTML.\\}\only<1>{\color{red}<?xml version="1.0" encoding="utf-8"?>}\only<2->{<?xml version="1.0" encoding="utf-8"?>}
\item \only<2>{Déclaration de DOCTYPE ou DTD (Définition de Type de Document) : vocabulaire, grammaire et règles de mise en forme.\\}\only<2>{\color{red}<!DOCTYPE html PUBLIC\\"-//W3C//DTD XHTML 1.0 Strict//EN"\\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">}\only<3->{<!DOCTYPE html PUBLIC\\"-//W3C//DTD XHTML 1.0 Strict//EN"\\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">}
\item \only<3>{Espaces de nommage : XML name space et evt. langue.\\}\only<3>{\color{red}<html xmlns="http://www.w3.org/1999/xhtml"\\xmlns:svg="http://www.w3.org/2000/svg"\\xmlns:xlink="http://www.w3.org/1999/xlink">}\only<4->{<html xmlns="http://www.w3.org/1999/xhtml"\\xmlns:svg="http://www.w3.org/2000/svg"\\xmlns:xlink="http://www.w3.org/1999/xlink">}
\item \only<4>{Entête : titre, informations, déclaration de styles, scripts javascript \dots{}\\}\only<4>{\color{red}<head>
<title>Titre</title>\\
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />\\
<style type="text/css"> ... </style>\\
<script type="text/javascript" src="Script.js"/>\\
</head>}\only<5->{<head>
<title>Titre</title>\\
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />\\
<style type="text/css"> ... </style>\\
<script type="text/javascript" src="Script.js"/>\\
</head>}
\item \only<5>{Corps du document.\\}\only<6>{\color{red}<body>
...
</body>\\
</html>}\only<7->{<body>
...
</body>\\
</html>}
\end{itemize}
\end{footnotesize}
\end{frame}
\end{comment}
\subsection{Animation javascript}
\begin{frame}{Javascript}
\begin{center}
\huge{Javascript}
\end{center}
\medskip
Javascript est un langage de programmation complet du côté client, c'est-à-dire que c'est le navigateur qui va l'utiliser pour enrichir les pages web d'une interactivité manquant à HTML et CSS.
\smallskip
L'utilisation de Javascript peut être problématique pour deux raisons. Premièrement, tournant du côté client, il ne permet pas l'accès aux bases de données se trouvant sur le serveur, par exemple. Secondement, il peut avoir accès au client et est donc potentiellement dangereux.
\end{frame}
\begin{frame}{Bonnes pratiques}
\begin{columns}
\begin{column}{0.5\textwidth}
\begin{block}{Appel de JS}
Pour éviter de bloquer le site si JS n'est pas activé, il faut le charger en dernier. On parle de JS non intrusif.
\smallskip
L'instruction suivante est à placer juste après la fermeture de la balise body~:
\begin{lstlisting}[language=HTML,basicstyle=\tiny,breaklines=true]
</body>
<script src='js/monjs.js'></script>
\end{lstlisting}
\end{block}
\end{column}
\begin{column}{0.5\textwidth}
\begin{block}{Séparation du JS}
Comme pour CSS, il faut placer le code JS dans un fichier séparé du HTML.
\smallskip
Généralement, on le place dans le répertoire js/ avec pour nom mon
\end{block}
\end{column}
\end{columns}
\end{frame}
\begin{frame}[containsverbatim]{Animation javascript 1 : image, gif animé}
\begin{columns}
\begin{column}{0.37\textwidth}
\begin{block}{Première idée :}
\begin{lstlisting}[language=HTML,basicstyle=\tiny,breaklines=true]
<img src='tux.png'/>
\end{lstlisting}
\end{block}
\begin{block}{... avec un gif animé ...}
\begin{lstlisting}[language=HTML,basicstyle=\tiny,breaklines=true]
<img src='robot.gif'/>
\end{lstlisting}
\end{block}
\end{column}
\begin{column}{0.6\textwidth}
\begin{block}{Déplacement du gif animé en javascript}
\begin{lstlisting}[language=HTML,basicstyle=\tiny,breaklines=true]
function deplace(){
identification = document.getElementById('robot')
position = parseInt(identification.style.left)
position = position + 10
identification.style.left = position+"px"
}
\end{lstlisting}
\end{block}
\end{column}
\end{columns}
\begin{center}
\href{run:Javascript/AnimationJavascript1.html}{\beamerbutton{Résultat}}
\href{run:Javascript/AnimationJavascript1.txt}{\beamerbutton{Code}}
\end{center}
\end{frame}
\begin{frame}[containsverbatim]{Animation javascript 2 : tableau d'images}
\begin{columns}
\begin{column}{0.5\textwidth}
On crée un tablau de références d'images :
\begin{block}{Tableau}
\begin{lstlisting}[language=HTML,basicstyle=\tiny,breaklines=true]
var imgFiles = new Array (
"Cours/Cours_e0000.gif",
"Cours/Cours_e0001.gif",
"Cours/Cours_e0002.gif",
"Cours/Cours_e0003.gif",
"Cours/Cours_e0004.gif",
"Cours/Cours_e0005.gif",
"Cours/Cours_e0006.gif",
"Cours/Cours_e0007.gif"
)
\end{lstlisting}
\end{block}
\end{column}
\begin{column}{0.5\textwidth}
On appelle à intervalle régulier la fonction :
\begin{block}{Animation}
\begin{lstlisting}[language=HTML,basicstyle=\tiny,breaklines=true]
function animate(){
frame += 1
if (frame > imgFiles.length){
frame = 0
}
spriteImage.src = imgFiles[frame]
}
\end{lstlisting}
\end{block}
\end{column}
\end{columns}
\begin{center}
\href{run:Javascript/AnimationJavascript2.html}{\beamerbutton{Résultat}}
\href{run:Javascript/AnimationJavascript2.txt}{\beamerbutton{Code}}
\end{center}
\end{frame}
\begin{frame}[containsverbatim]{Animation javascript 3 : une seule image}
\begin{columns}
\begin{column}{0.5\textwidth}
\begin{block}{Frames juxtaposées en css}
\begin{lstlisting}[language=HTML,basicstyle=\tiny,breaklines=true]
#contenant {
background-image: url("Cours/Cours_8.gif");
height: 128px;
width: 128px;
background-position: 0px 0px;}
\end{lstlisting}
\end{block}
\begin{block}{Tableau des décalages}
\begin{lstlisting}[language=HTML,basicstyle=\tiny,breaklines=true]
var offsetList = new Array(0, -128, -256, -384, -512, -640, -768, -896)
\end{lstlisting}
\end{block}
\end{column}
\begin{column}{0.5\textwidth}
\begin{block}{Parcours de l'image}
\begin{lstlisting}[language=HTML,basicstyle=\tiny,breaklines=true]
function cours(){
frame++
if (frame >= offsetList.length){
frame = 0
}
offset = offsetList[frame] + "px 0px"
contenant.style.backgroundPosition = offset
}
\end{lstlisting}
\end{block}
\end{column}
\end{columns}
\begin{center}
\href{run:Javascript/AnimationJavascript3.html}{\beamerbutton{Résultat}}
\href{run:Javascript/AnimationJavascript3.txt}{\beamerbutton{Code}}
\end{center}
\end{frame}
\begin{frame}[containsverbatim]{Animation javascript 4 : le déplacement}
\begin{columns}
\begin{column}{0.5\textwidth}
\begin{block}{Gestion du clavier}
\begin{lstlisting}[language=HTML,basicstyle=\tiny,breaklines=true]
document.onkeypress = keyListener
\end{lstlisting}
\end{block}
\begin{block}{Détection des touches}
\begin{lstlisting}[language=HTML,basicstyle=\tiny,breaklines=true]
function keyListener(e){
if (e.keyCode == 37){
moveContenant(-10, 0)
} // gauche
if (e.keyCode == 38){
moveContenant(0, -10)
} // haut ... }
\end{lstlisting}
\end{block}
\end{column}
\begin{column}{0.5\textwidth}
\begin{block}{Déplacement de l'image}
\begin{lstlisting}[language=HTML,basicstyle=\tiny,breaklines=true]
function moveContenant(dx, dy){
x = parseInt(contenant.style.left)
y = parseInt(contenant.style.top)
x += dx
y += dy
contenant.style.left = x + "px"
contenant.style.top = y + "px"
}
\end{lstlisting}
\end{block}
\end{column}
\end{columns}
\begin{center}
\href{run:Javascript/AnimationJavascript4.html}{\beamerbutton{Résultat}}
\href{run:Javascript/AnimationJavascript4.txt}{\beamerbutton{Code}}
\end{center}
\end{frame}
\begin{frame}[containsverbatim]{Animation javascript 5 : le tout}
\begin{columns}
\begin{column}{0.5\textwidth}
\begin{block}{Un joli résultat}
\href{run:Javascript/AnimationJavascript5.html}{\beamerbutton{Résultat}}
\end{block}
\end{column}
\begin{column}{0.5\textwidth}
\begin{block}{Un joli ``petit'' programme}
\href{run:Javascript/AnimationJavascript5.txt}{\beamerbutton{Code}}
\end{block}
\end{column}
\end{columns}
\end{frame}
\appendix
\section*{Références}
\begin{frame}[allowframebreaks]{Crédits photographiques}\label{notes}
\tiny{L'ensemble des illustrations utilisées dans cette présentation sont publiées sur le net soit sous licence GFDL, soit dans le domaine publique. Ci-dessous se trouvent les liens permettant de vérifier les licences. Ils donnent aussi accès aux auteurs que je remercie tout particulièrement pour leur travail sans lequel cette présentation n'aurait pas pu exister.}
\medskip
\theendnotes
\end{frame}
\end{document}