\documentclass[11pt]{article}

\usepackage[fleqn]{amsmath}

\usepackage[latin1]{inputenc}
\usepackage[french]{babel}
\usepackage{graphicx}
\usepackage{geometry}
\usepackage[table]{xcolor}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage[colorlinks=true,linkcolor=blue,bookmarksnumbered]{hyperref}
\usepackage{fancyhdr}
\usepackage{listings}

\setlength\textwidth{17cm} 
\setlength\oddsidemargin{-0.54cm} 
\setlength\topmargin{-1.24cm} 
\setlength\textheight{23.7cm} 
\setlength\headheight{0.55cm} 
\setlength\headsep{0.5cm} 

\newenvironment{encadrer}[1]{\noindent \textbf{#1 :} \par \begin{center} \begin{tabular}{|p{13cm}|} \hline}{\\ \hline \end{tabular} \bigskip \end{center}}
\newenvironment{sanscadre}[1]{\noindent \textbf{#1 :}\par  \noindent}{\bigskip\par}

\newenvironment{paragraphe}[1]{\noindent \textbf{#1 :}\par \noindent}{\bigskip\par}

\newenvironment{systemedeq}[4]{\left\{ \begin{array}{rcl} #1 & = & #2 \\ #3 & = & #4 \\ \end{array} \right.}


\newcommand{\defref}[2]{\hypertarget{#1}{\emph{\color{red}{#2}}}}
\newcommand{\faireref}[2]{\hyperlink{#1}{#2}}
\newcommand{\nouvitem}{\item[$\bullet$]}
\newcommand{\emphref}[1]{\emph{\color{red}{#1}}}

\newenvironment{Ex}[1]{\noindent \textbf{Exercice #1 :}\par}{\bigskip\par}
\newcommand{\pdfrowcolors}[1]{\rowcolors{1}{#1}{#1}}

\newenvironment{sanscadrec}[2]{\noindent \color{#2}{\textbf{#1 :}}\par \noindent}{\bigskip\color{black}\par}

\newenvironment{cadresimple}{\begin{tabular}{|p{15cm}|} \hline}{\\ \hline \end{tabular}\bigskip \par}
\newenvironment{fauxcadre}{\begin{tabular}{l}}{\\ \end{tabular}\bigskip \par}

\renewcommand{\footrulewidth}{0.4pt}

\title{Cours d'algorithmique et de programmation pour la classe de première, spécialité Mathématiques}


\author{F.Gaudon}

\usepackage[french,lined,boxed]{algorithm2e}

%\ configuration package algorithm
\SetKw{Retour}{afficher}
\SetKwBlock{Traitement}{Début traitement}{Fin traitement.}
\SetKw{Var}{Variables}
\SetKw{stocker}{stocker}
\SetKw{dans}{dans}
\SetKw{allant}{allant de }
\SetKw{aBoucle}{ à }
\SetKw{saisir}{saisir}
\SetKw{afficher}{afficher}

\begin{document}
\pagestyle{fancy}
\fancyhead[L]{}
\fancyhead[R]{\textit{Algorithmique et programmation, première, spécialité Mathématiques}}
\fancyfoot[R]{\includegraphics[width=2cm]{88x31.png}}
\fancyfoot[C]{}
\fancyfoot[L]{\textit{\color{black}\url{http://mathsfg.net.free.fr}}}

\begin{center}
{\Large \textbf{Algorithmique et programmation, cours, classe de première, spécialité Mathématiques}}
\end{center}



\section{Généralités sur les listes}

\begin{encadrer}{Définitions}
\begin{itemize}
\nouvitem Une liste est une collection ordonnée d'objets. La liste contenant les éléments $a_0$, $a_1$, ... $a_n$ où $n$ est un entier naturel, est notée $[a_0,a_1,...,a_n]$.
\nouvitem Chaque élément de la liste est repéré par son indice, sachant que l'indice du premier élément est 0. L'élément d'indice $i$ est noté \texttt{L[i]}.
\nouvitem La longueur d'une liste est le nombre d'éléments qu'elle contient. Elle est notée \texttt{len(L)}.
\end{itemize}
\end{encadrer}

\begin{sanscadre}{Exemples}
\texttt{L=['lundi',10,'mardi',11]} est une liste qui contient des valeurs entières et des chaînes de caractères.\\
\texttt{L[1]} a pour valeur 10, c'est l'élément d'indice 1.\\
\texttt{T=[]} définit une liste vide.
\end{sanscadre}

\section{Mode de génération d'une liste}

\subsection{En extension}

\begin{encadrer}{Définition}
On dit que l'on définit une liste $L$ \emphref{en extension} lorsque l'on initialise la liste puis on ajoute des éléments à la liste.
\end{encadrer}

\begin{sanscadre}{Exemple [Programmation d'une liste en extension]}
\begin{lstlisting}[language=python,frame=single,keywordstyle=\color{blue},numberstyle=\color{green},stringstyle=\color{orange},identifierstyle=\color{purple}]
L=[]
L.append("a")
\end{lstlisting}
ou
\begin{lstlisting}[language=python,frame=single,keywordstyle=\color{blue},numberstyle=\color{green},stringstyle=\color{orange},identifierstyle=\color{purple}]
L=[]
L=L+["a"]
\end{lstlisting}
permettent de définir une liste $L$ et de lui ajouter l'élément $"a"$.
\end{sanscadre}

\subsection{En compréhension}

\begin{encadrer}{Définition}
On dit que l'on définit une liste $L$ \emphref{en compréhension} lorsque l'on définit la liste par une propriété caractéristique.
\end{encadrer}

\begin{sanscadre}{Exemple [Programmation d'une liste en compréhension]}
\begin{lstlisting}[language=python,frame=single,keywordstyle=\color{blue},numberstyle=\color{green},stringstyle=\color{orange},identifierstyle=\color{purple}]
L=[n**2 for n in range(0,21)]
\end{lstlisting}
 permet de définir la liste des 20 premiers carrés d'entiers naturels.
\end{sanscadre}

\section{Parcours d'une liste}

\begin{sanscadre}{Syntaxe}
On peut parcourir une liste $L$ de deux manières avec une boucle bornée :
\begin{itemize}
\nouvitem en parcourant l'ensemble de tous ses éléments : 
\begin{lstlisting}[language=python,frame=single,keywordstyle=\color{blue},numberstyle=\color{green},stringstyle=\color{orange},identifierstyle=\color{purple}]
for m in L:
\end{lstlisting}
\nouvitem en parcourant ses indices : 
\begin{lstlisting}[language=python,frame=single,keywordstyle=\color{blue},numberstyle=\color{green},stringstyle=\color{orange},identifierstyle=\color{purple}]
for i in range(len(L)):
\end{lstlisting}
\end{itemize}
\end{sanscadre}

\begin{sanscadre}{Exemple [Parcourir une liste]}
Le programme suivant crée, à partir d'une première liste $L$, une liste $T$ contenant les carrés des éléments de $L$. On pourra le tester en tapant par exemple dans la console \texttt{carresListe([3,5,9,13,16])}.
\begin{lstlisting}[language=python,frame=single,keywordstyle=\color{blue},numberstyle=\color{green},stringstyle=\color{orange},identifierstyle=\color{purple}]
def carresListe(L):
	T=[]
	for i in range(len(L)):
		T.append(L[i]*L[i])
	return T
\end{lstlisting}
ou
\begin{lstlisting}[language=python,frame=single,keywordstyle=\color{blue},numberstyle=\color{green},stringstyle=\color{orange},identifierstyle=\color{purple}]
def carresListe(L):
	T=[]
	for n in L:
		T.append(n*n)
\end{lstlisting}
\end{sanscadre}

\end{document}
