\documentclass[a4paper,10pt]{/media/documents/Cours/Prof/Enseignements/Archive/2012-2013/tools/style/classDS}
\usepackage{url}
\usepackage{fancybox}

% Title Page
\title{Programmation Python 2}
\author{}
\date{04 avril 20013}

\fancyhead[L]{$2^{\mbox{nd}}12$ : \Thetitle}

\begin{document}
\maketitle
\thispagestyle{fancy}

Cela fait maintenant 3 semaines qui vous avez été introduit à Python, il serai bon de se rafraichir la mémoire! N'hésitez pas à ressortir vos notes de la dernière fois elles pourront vous être utiles.

\section{Rappels}
\subsection{Deux façons de parler à un ordinateur}
Commencez par lancer Python. Un fenêtre avec le signe \texttt{>>>} doit s'ouvrir. On rappel que cette fenêtre permet de tester étape par étape un programme.

Si l'on veux faire plusieurs choses d'un coup, il faut alors aller dans \texttt{files > New windows}. Une nouvelle fenêtre s'ouvre. Tout ce que vous écrirez dans cette fenêtre sera exécuté quand vous presserez \texttt{F5}.

\subsection{Les calculs et les chaînes de caractères}
Dans la première fenêtre (celle avec les \texttt{>>>}), demandez à Python de calculer des choses suivantes (essayez de deviner ce qui va se passer avant de lancer la commande):
\begin{itemize}
		\item Calculer $2+3(3+1)$, $2.3 \times 10 + \frac{1}{2} \left( 1 + \frac{1}{3} \right)$.
		\item Afficher votre nom
		\item Afficher 4 fois votre nom
		\item Afficher votre nom puis celui de votre voisin.
\end{itemize}

\paragraph{NEW} Voici une nouvelle façon d'afficher plusieurs mots d'un coup. Je vous rappelle que ces commandes ne devraient pas marcher. Vous rappelez-vous pourquoi?
\begin{verbatim}
	>>> ``J'ai '' + 4 + `` ans''
	>>> 3 + `` points''
\end{verbatim}
\vspace{2cm}
Pour éviter ce problème il suffit de remplacer les \texttt{+} par des \texttt{,} comme dans l'exemple suivant
\begin{verbatim}
	>>> ``j'ai '' , 4 , `` ans''
	>>> 3 , `` points''
\end{verbatim}

\subsection{Les variables}
Je vous rappelle aussi un des grands intérêts de la programmation, pouvoir stocker des choses dans des \textbf{variables} pour réutiliser cette chose plus tard. Retrouvez comment faire les actions suivantes (toujours dans la fenêtre avec les \texttt{>>>})
\begin{itemize}
		\item Stocker le mot \textit{bonjour} dans la variable \texttt{mot}.
				\begin{verbatim}
					>>> 
				\end{verbatim}
				\vspace{2cm}
		\item Stocker votre nom dans la variable \texttt{nom}.
				\begin{verbatim}
					>>> 
				\end{verbatim}
				\vspace{2cm}
		\item Stocker votre age dans la variable \texttt{age}.
				\begin{verbatim}
					>>> 
				\end{verbatim}
				\vspace{2cm}
		\item En utilisant la variable age, calculer le triple de votre age.
				\begin{verbatim}
					>>> 
				\end{verbatim}
				\vspace{2cm}
		\item En utilisant les variables \texttt{mot} et \texttt{nom} afficher \texttt{Bonjour votre\_nom}.
				\begin{verbatim}
					>>> 
				\end{verbatim}
				\vspace{2cm}
		\item En utilisant toutes ces variables afficher votre nom et votre age
				\begin{verbatim}
					>>> 
				\end{verbatim}
				\vspace{2cm}
\end{itemize}

\subsection{Interagir avec l'utilisateur}
À partir de maintenant tout (sauf vos tests) se fera dans la fenêtre sans les \texttt{>>>}.

On rappelle que pour demander quelque chose à l'utilisateur, on utilise la commande \texttt{input(``question'')}.

Écrire en quelques lignes un programme qui demande le nom de l'utilisateur et qui affiche ensuite un message de salutation en utilisant le nom donné.
\begin{center}
{\Large Parfait, on est paré pour continuer}
\end{center}

\section{Les conditions}
Il serait intéressant que notre programme puisse s'adapter aux réponses de l'utilisateur. Par exemple si on lui demande comment il va, s'il répond \textit{Bien} on  lui affiche un certain message et s'il répond \textit{Mal} on lui en affiche un autre.

Recopiez le programme suivant dans la fenêtre sans les \texttt{>>>}.
\begin{verbatim}
va = input(``Comment vas-tu?'')
if va == ``bien'': 
    print(``Tu vas bien super! Moi aussi'')
else: 
    print(``Ah tu ne vas pas bien...'')
\end{verbatim}
\begin{itemize}
		\item Exécuter ce programme. Répondez différentes choses et observez ce qu'il ne passe. Décrire les différents comportements.
				\vspace{2cm}
		\item Que se passe-t-til à la ligne \texttt{if va == ``bien'':}?
				\vspace{2cm}
		\item Que veut dire \texttt{else?}
				\vspace{2cm}
\end{itemize}
On remarquera qu'il faut presser la touche \ovalbox{\texttt{TAB}} après les \texttt{:} d'un \texttt{if} ou d'un \texttt{else}. Que ce passe-t-il si on ne le fait pas?
\vspace{2cm}

\begin{itemize}
		\item Modifier le programme pour qu'il réponde quelque chose si l'utilisateur répond \texttt{mal}.
		\item Écrire un programme qui demande l'âge de l'utilisateur (avec \texttt{input}) puis qui dit s'il est majeur ou non. Pour comparer des nombres, on peut utiliser \texttt{<=} (inférieur ou égal) ou \texttt{>=} (supérieur ou égal) à la place de \texttt{==}.
\end{itemize}


% \section{Les listes}
% Le soucis avec notre programme c'est qu'il fait la différence entre \texttt{``bien''}, \texttt{`` bien''} (avec un espace avant le \texttt{bien}) et \texttt{``bien ''} (avec un espace après). Pour éviter ce problème, on voudrait stocker toutes les réponses positives dans une liste des réponses positives. C'est ce que l'on fait dans le programme suivant.
% \begin{verbatim}
% va = input(``Comment vas-tu?'')
% if va in [``bien'', `` bien'', ``bien '']:
% 	print(``Tu vas va bien super moi aussi'')
% else: 
% 	print(``Ah tu ne vas pas bien...'')
% \end{verbatim}
% \begin{itemize}
% 		\item Recopier ce programme puis lancer le. Que ce passe-t-il?
% \vspace{2cm}
% 		\item Que signifie \texttt{in} dans la ligne \texttt{if va in [``bien'', `` bien'', ``bien '']:}?
% \vspace{2cm}
% 		\item Modifier le programme pour qu'il accepte d'autres réponses positives.
% 		\item Modifier le programme pour qu'il accepte plusieurs réponses négatives.
% \end{itemize}


\section{L'aléatoire}
\subsection{L'aléatoire}
Nous allons maintenant faire rentrer un peu d'aléatoire dans nos programmes. Pour faire cela, il faut tout d'abord placer cette ligne en début de programme (random veut dire aléatoire en anglais).
\begin{verbatim}
from random import *
\end{verbatim}
Cette ligne permet d'avoir accès à plus de fonctions (liées à l'aléatoire).

Vous aurez aussi besoin de valider cette ligne dans la fenêtre avec les \texttt{>>>} si vous voulez utiliser les fonctions .

Parmi ces fonctions deux vont nous intéresser: \texttt{random} et \texttt{randint}. Pour comprendre comment elles marchent exécuter plusieurs fois les commandes suivantes et expliquer ce qu'elles font.
\begin{verbatim}
	>>> from random import *
	>>> random()
	

	>>> randint(0,10)
	

	>>> randint(50, 100)


\end{verbatim}

\subsection{Jeu du pierre-feuille-ciseaux}
Nous allons maintenant programmer le jeu du pierre-feuille-ciseaux en python.

On rappelle les règles de ce jeu. Deux joueurs s'affrontent. Ils doivent choisir en même temps un des trois éléments: pierre, feuille ou ciseaux. Ensuite on détermine de le gagnant de la façon suivante
\begin{itemize}
		\item La pierre gagne contre les ciseaux.
		\item Les ciseaux gagne contre la feuille.
		\item La feuille gagne contre pierre.
\end{itemize}

Dans notre programme, l'ordinateur choisira au hasard un des trois éléments (pierre, feuille ou ciseaux). Puis il demandera à l'utilisateur de faire son choix. Et enfin il comparera les résultats pour déterminer le gagnant.

Ouvrez une nouvelle fenêtre (sans les \texttt{>>>}) pour écrire ce programme.

\paragraph{Choix de l'ordinateur.} Pour faire choisir au hasard l'ordinateur, nous allons utiliser la commande \texttt{randint}. Il faut donc commencer par placer la ligne suivante au début: 
\begin{verbatim}
from random import *
\end{verbatim}
Le problème c'est quand \texttt{randint} ne revoie que des chiffres il faudra donc faire correspondre un des trois éléments à chaque chiffres. Je propose la correspondance suivante
\begin{itemize}
		\item 1 $\longrightarrow$ pierre
		\item 2 $\longrightarrow$ feuille
		\item 3 $\longrightarrow$ ciseaux
\end{itemize}
Stocker dans une variable \texttt{choix\_ordi} le choix de l'ordinateur.

\paragraph{Choix de l'utilisateur.} Demander à l'utilisateur de rentrer un chiffre en lui expliquant que 1 correspond à pierre, 2 à feuille et 3 à ciseaux.

Stocker sa réponse dans une variable \texttt{choix\_utilisateur}.

\paragraph{Comparer les résultats.} Finir le le programme en choisissant le vainqueur grâce à plusieurs \texttt{if}.

\section{Pour aller plus loin}
Si apprendre à programmer vous intéresse, voici le nom d'un site qui a appris à presque tous les jeunes la programmation: Le site du Zéro. Il est accessible à l'adresse suivante \url{siteduzero.com}. Vous y retrouverez beaucoup de façons de programmer:

Programmer en Python:
				
				\url{http://www.siteduzero.com/informatique/tutoriels/apprenez-a-programmer-en-python}

Faire son site internet: 

				\url{http://www.siteduzero.com/informatique/tutoriels/apprenez-a-creer-votre-site-web-avec-html5-et-css3}

				\url{http://www.siteduzero.com/informatique/tutoriels/concevez-votre-site-web-avec-php-et-mysql}

Découvrir Linux: 
				
				\url{http://www.siteduzero.com/informatique/tutoriels/reprenez-le-controle-a-l-aide-de-linux}

				\medskip
L'avantage de la programmation c'est qu'il n'est pas nécessaire d'être bon à l'école pour se faire plaisir en programmation. C'est un peu comme jouer au Lego mais sur un ordinateur. Et croyez moi, une fois que vous avez un peu pratiqué, vous pouvez faire faire ce que vous voulez à votre ordinateur, c'est juste une question d'imagination!

\end{document}

%%% Local Variables: 
%%% mode: latex
%%% TeX-master: "master"
%%% End:

