Source Latex: Cours de mathématiques, Algorithmique

2nde

Algorithmique

Introduction à l'agorithmique et la programmation - Généralités: algorithme, programme et langage de programmation, variable, instructions et structures de base
Fichier
Type: Cours
File type: Latex, tex (source)
Télécharger le document pdf compilé pdficon
Description
Introduction à l'agorithmique et la programmation - Généralités: algorithme, programme et langage de programmation, variable, instructions et structures de base
Niveau
2nde
Table des matières
  • Définitions
    • Algorithme
    • Langage de programmation
    • Programme
    • Variable
  • Exemples: Suites d'instructions élémentaires
  • Strutures de base: condition, boucle, boucle conditionnelle
Mots clé
algorithme, algorithmique, programmation, introduction, structures fondamentales, boucle, test, exemples, exercices

Quelques devoirs


Voir aussi:

Documentation sur LaTeX
lien vers la documentation Latex
Source Latex LaTex icone

Source Latex

\documentclass[12pt]{article}
\usepackage{amsfonts}\usepackage{amssymb}
\usepackage[french]{babel}
\usepackage{amsmath}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{calc}
\usepackage{array}
\usepackage{pst-all}

\usepackage{hyperref}
\hypersetup{
    pdfauthor={Yoann Morel},
    pdfsubject={Cours mathématiques: algorithmique},
    pdftitle={Algorithmique},
    pdfkeywords={Mathématiques, algorithmique, programmation, 
      lycée, 2nde, seconde, 1S, 
      première, S, 1èreS, 1ère S, terminale, terminale S, 
      python}
}
\hypersetup{
    colorlinks = true,
    linkcolor = red,
    anchorcolor = red,
    citecolor = blue,
    filecolor = red,
    urlcolor = red
}
\voffset=-1.cm


% Raccourcis diverses:
\newcommand{\nwc}{\newcommand}
\nwc{\dsp}{\displaystyle}
\nwc{\ct}{\centerline}
\nwc{\bge}{\begin{equation}}\nwc{\ene}{\end{equation}}
\nwc{\bgar}{\begin{array}}\nwc{\enar}{\end{array}}
\nwc{\bgit}{\begin{itemize}}\nwc{\enit}{\end{itemize}}

\nwc{\la}{\left\{}\nwc{\ra}{\right\}}
\nwc{\lp}{\left(}\nwc{\rp}{\right)}
\nwc{\lb}{\left[}\nwc{\rb}{\right]}

\nwc{\bgsk}{\bigskip}
\nwc{\vsp}{\vspace{0.1cm}}
\nwc{\vspd}{\vspace{0.2cm}}
\nwc{\vspt}{\vspace{0.3cm}}
\nwc{\vspq}{\vspace{0.4cm}}

\def\N{{\rm I\kern-.1567em N}}
\def\D{{\rm I\kern-.1567em D}}
\def\No{\N_0}
\def\R{{\rm I\kern-.1567em R}}
\def\C{{\rm C\kern-4.7pt \vrule height 7.7pt width 0.4pt depth -0.5pt \phantom {.}}}
\def\Q{\mathbb{Q}}
\def\Z{{\sf Z\kern-4.5pt Z}}

\nwc{\tm}{\times}
\nwc{\V}[1]{\overrightarrow{#1}}

\nwc{\zb}{\mbox{$0\hspace{-0.67em}\mid$}}
\nwc{\db}{\mbox{$\hspace{0.1em}|\hspace{-0.67em}\mid$}}

\nwc{\ul}[1]{\underline{#1}}

\newcounter{nex}[section]\setcounter{nex}{0}
\newenvironment{EX}{%
\stepcounter{nex}
\bgsk{\noindent\large {\bf Exercice }\arabic{nex}}\hspace{0.2cm}
}{}

\nwc{\bgex}{\begin{EX}}\nwc{\enex}{\end{EX}}

\nwc{\bgfg}{\begin{figure}}\nwc{\enfg}{\end{figure}}
  \nwc{\epsx}{\epsfxsize}\nwc{\epsy}{\epsfysize}
\nwc{\bgmp}{\begin{minipage}}\nwc{\enmp}{\end{minipage}}


\nwc{\deftitle}{Définition}
\newlength{\ldef}\settowidth{\ldef}{\deftitle:}
\nwc{\bgdef}[1]{\paragraph{\ul{\deftitle:}} 
  \begin{minipage}[t]{\textwidth-\ldef-2em}{\it #1}
  \end{minipage}
}

\nwc{\proptitle}{Prop.}
\newlength{\lprop}\settowidth{\lprop}{\proptitle:}
\nwc{\bgprop}[1]{\paragraph{\ul{\proptitle:}} 
  \begin{minipage}[t]{\textwidth-\ldef-2em}{\it #1}
  \end{minipage}
}

\headheight=0cm
\textheight=26.2cm
\topmargin=-1.8cm
\footskip=0.8cm
\textwidth=18.6cm
\oddsidemargin=-1.3cm
\parindent=0.2cm


\newcommand{\TITLE}{Introduction à l'algorithmique et la programmation}
\author{Y. Morel}
\date{}

\usepackage{fancyhdr}

\pagestyle{fancyplain}
\setlength{\headheight}{0cm}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0.1pt}
\lhead{}\chead{}\rhead{}
\lfoot{Y. Morel - \href{https://xymaths.fr/Lycee/2nde/Mathematiques-2nde.php}{xymaths.fr - 2nde}}
\rfoot{\TITLE\ - \thepage/\pageref{LastPage}}
\cfoot{}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}

\vspace*{-0.4cm}

\ct{\LARGE \bf \TITLE}
\vspace{0.6cm}


\bgdef{{\bf Algorithme} 

  Un algorithme est une succession d'instructions 
  (aussi appelées commandes) et permettant la résolution systématique
  d'un problème donné.
}

\vspq
{\it 
  Le mot ``algorithme'' vient du nom du mathématicien perse 
  Al Khuwarizmi (latinisé au Moyen Age en Algoritmi), 
  qui, au IXe siècle écrivit le premier ouvrage
  sur la résolution systématique de certaines équations 
  (en plus d'introduire le zéro des Indiens). 
}

\vspd
Par exemple, l'algorithme suivant: 
\fbox{
\bgmp[t]{6.cm}
\texttt{Pour A allant de 1 à 10\\
\hspace*{0.5cm}stocker A*A dans B\\
\hspace*{0.5cm}Afficher B\\
Fin Pour}
\enmp
}

\vspt
permet d'afficher les carrés des 10 premiers entiers naturels. 

\bgdef{{\bf Langage de programmation} 

  Un langage de programmation est un ensemble d'instruction et de
  règles syntaxiques compréhensible par un système automatisé 
  (calculatrice, ordinateur, puce électronique,\dots). 

  Un programme est alors la traduction d'un algorithme dans un langage
  de programmation particulier. 
}


\vspd
Il existe de très nombreux langage de programmation, par exemple,
Basic, Fortran, C, C++, assembleur, Python, Matlab, ainsi que par exemple ceux
implantés dans les calculatrices (alors dites ``programmables''\dots).


\bgdef{{\bf Variable}

  On appelle variable tout emplacement de la mémoire dans lequel est,
  ou peut-être, stockée une information. 

  Une variable est constituée de : 
  \bgit
  \item un nom qui permet à l'ordinateur de la localiser dans sa
    mémoire 

  \item une valeur: l'information (souvent un nombre) qu'elle
    contient. 
  \enit
}

\vspq
Tous les langages de programmation permettent d'effectuer des
algorithmes comprenant des \ul{opérations} \ul{élémentaires} 
(addition, multiplication, division, \dots) , ainsi 
que quelques \ul{structures} fondamentales. 

\vspq\vspd\noindent
\bgmp[t]{10cm}
Suite d'opérations élémentaires:  \vsp\\
\fbox{
  \bgmp{7cm}
  \texttt{Afficher "Entrer D: "\\
    Lire D\\
    R prend la valeur D/2\\
    C prend la valeur 3,14*R*R\\
    Afficher C}
  \enmp}
\enmp
\bgmp[t]{10cm}
\ \\
\fbox{
  \bgmp{7cm}
  \texttt{Lire A\\ 
    Lire B\\
    Lire C\\
    D prend la valeur A+B+C\\
    E prend la valeur D/3\\
    Afficher E}
  \enmp
}
\enmp

\vspq\vspd\noindent
\ul{Structure} \texttt{Tant que \dots, faire \dots, Fin Tant que} 
(\texttt{While \dots, do \dots, end})\vsp\\ 
\bgmp[t]{10cm}
\fbox{
  \bgmp{7cm}
  \texttt{Lire A\\
    Tant que A>0 faire\\
    \hspace*{0.5cm}A prend la valeur A-1\\
  \hspace*{0.5cm}Afficher A\\
  Fin Tant que}
  \enmp
}
\enmp
\bgmp[t]{10cm}
\fbox{
  \bgmp{7cm}
  \texttt{Lire N \\
    Tant que N>0 faire \\
    \hspace*{0.5cm}N prend la valeur N-2\\
    Fin Tant que\\
    Afficher N
  }
  \enmp
}
\enmp

\clearpage
\noindent
\ul{Structure (boucle)} \texttt{Pour} {\it variable} \texttt{allant de} {\it début}
\texttt{à} {\it fin}, \texttt{faire} \dots\,, 
\texttt{Fin Pour}\\
(\texttt{For \dots, do \dots, end})
\vspd\\
\bgmp{7.5cm}
Effectuer l'algorithme suivant sur le graphique ci-contre: \vsp\\
\fbox{
\bgmp{7.5cm}
\texttt{Pour i allant de 2 à 18\\
  \hspace*{0.5cm}Afficher le point (i;2)\\
  \hspace*{0.5cm}Afficher le point (i;10)\\
  Fin Pour}

\vspd
\texttt{Pour j allant de 3 à 9\\
  \hspace*{0.5cm}Afficher le point (2;j)\\
  \hspace*{0.5cm}Afficher le point (18;j)\\
  Fin Pour}

\vspd
\texttt{Pour i allant de 3 à 10\\
  \hspace*{0.5cm}Afficher le point (i;9+i/2)\\
  \hspace*{0.5cm}Afficher le point (i+8;15-i/2)\\
  Fin Pour
}
\enmp}\enmp\hspace{1cm}
\bgmp{8cm}
\psset{xunit=0.5cm,yunit=0.6cm}
\begin{pspicture}(0,0)(20,15)
  \pspolygon[linewidth=0.5pt,linestyle=dashed](0,0)(20,0)(20,15)(0,15)
  \psline[linewidth=1.5pt]{->}(0,0)(1,0)
  \psline[linewidth=1.5pt]{->}(0,0)(0,1)
  \rput(0.5,-0.3){$\scriptstyle\vec{i}$}
  \rput(-0.3,0.5){$\scriptstyle\vec{j}$}
  \rput(-0.3,-0.3){$\scriptstyle 0$}
  \multido{\i=0+1}{21}{
    \multido{\ii=0+1}{16}{
      \psdot(\i,\ii)
    }
  }
\end{pspicture}
\enmp



\vspace{1cm}\noindent
\ul{Structure conditionnelle} \texttt{Si \dots, faire \dots, Sinon
  faire \dots, Fin Si}\\
(\texttt{if \dots, do \dots, else do \dots, end})
\vsp\\ 

\bgmp[t]{10cm}
\fbox{
  \bgmp{8cm}
  \texttt{Afficher ``Quel est votre age ?''\\
    Lire A\\
    Si A<18, alors \\
    \hspace*{0.5cm}Afficher ``Vous êtes mineur''\\
    Sinon \\
    \hspace*{0.5cm}Afficher ``Vous êtes majeur''\\
    Fin Si
  }
  \enmp
}
\enmp
\bgmp[t]{9cm}
\fbox{
  \bgmp{6.5cm}
  \texttt{Lire X1, X2, X3, X4, X5\\
    M prend la valeur X1\\
    Pour i allant de 2 à 5\\
    \hspace*{0.5cm}Si  Xi > M, faire\\ 
    \hspace*{0.5cm}\hspace*{0.5cm}M prend la valeur Xi\\
    \hspace*{0.5cm}Fin Si\\
    Fin Pour\\
    Afficher M
  }
  \enmp
}
\enmp


\vspq\noindent
{\bf Exercices:} 
Ecrire un algorithme permettant de : 

\vspd\bgit
\item[1.] demander à l'utilisateur les
  coordonnées de deux points $A$ et $B$, et qui affiche les
  coordonnées du milieu $I$ de $[AB]$ et la distance $AB$. 
  
  \vspd
\item[2.] demander à l'utilisateur les coordonnées d'un point $M$, 
  et d'afficher, étant donner les points $A(3,2;0,6)$ et $B(-1;2)$, 
  si $M$ est sur la médiatrice de $[AB]$.

  \vspd
\item[3.] Demander un nombre entier \texttt{n} et calculer la somme : 

  \hspace*{1cm}\texttt{1 + 2 + 3 + \dots + n}

\vspd
\item[4.] 
  \bgit
  \item[a)] demander à l'utilisateur un nombre entier $m$ et 
    d'afficher la suite: \texttt{1 2 3 \dots m}

  \item[b)] demander un nombre entier \texttt{n} et afficher les suites
    suivantes:  
  
    \texttt{1\\
      1 2\\
      1 2 3\\
      1 2 3 4\\
      \vdots \\
      1 2 3 4 5 \dots n}
  \enit
\vspd
  


  \vspd
%\item[4.] Tracer la courbe représentative de la fonction 
%  $f:x\mapsto 2x+1$. 
\enit


\label{LastPage}
\end{document}

Télécharger le fichier source Latex