{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "# Exercices du livre - Chapitre 3\n",
    "\n",
    "---"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Exercice 1  ✓\n",
    "\n",
    "  Saisir tant qu’il n’est pas strictement positif un entier `n`, calculer et afficher la somme $s$ des entiers de $1$ à $n$ en utilisant la formule :\n",
    "  $$s = \\frac{n \\times (n+1)}{2}$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Exercice 1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Exercice 2 ✓\n",
    "\n",
    "  Entrez deux entiers $a$ ($a$ doit être positif pour calculer son logarithme) et $b$ ($b$ ne doit pas\n",
    "être nul pour éviter la division par zéro) et afficher :\n",
    "\n",
    "- leur somme ;\n",
    "- leur différence ;\n",
    "- leur produit ;\n",
    "- les quotients $a/b$ et $b/a$ ;\n",
    "- $\\log_{10} a$ ;\n",
    "- $a^b$ ."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Exercice 2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Exercice 3 ✓✓\n",
    "\n",
    "  La quantité d’énergie nécessaire pour augmenter la température d’un gramme d’un matériau d’un degré Celsius (1°C) est sa capacité calorifique $C$ exprimée en joules (J). Donc élever $m$ grammes de ce matériau de $\\Delta T$ requiert l’énergie :\n",
    "  $$q = m \\times C \\times \\Delta T$$\n",
    "  Entrez un volume d’eau en millilitres, un accroissement (positif) de température en °C et affichez la quantité d’énergie requise.  \n",
    "On donne la capacité calorifique de l’eau : 4.186 J/g°C. Notons que comme l’eau a une densité de 1 g/ml, on peut interchanger ici les grammes et les millilitres.  \n",
    "Par ailleurs Albert Einstein, en 1905, a découvert qu’une variation de l’énergie d’un corps se traduisait par une variation de sa masse inertielle suivant la relation bien connue :\n",
    "$$E = m \\times c^2$$\n",
    "Calculez l’accroissement de masse d’un litre d’eau chauffé de 20°C à 80°C."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Exercice 3"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Exercice 4 ✓✓\n",
    "\n",
    "  L'utilisateur saisit un entier supérieur à 1 et le programme affiche, s'il y en a, tous ses diviseurs propres **sans répétition** ainsi que leur nombre. S'il n'y en a pas, il indique qu'il est premier. \n",
    "  \n",
    "  **Note :** un *diviseur propre* de $n$ est un diviseur quelconque de $n$, $n$ exclu.  \n",
    "  Par exemple :\n",
    "```txt\n",
    "Entrez un entier strictement positif : 12\n",
    "Diviseurs propres sans répétition de 12 : 2 3 4 6 (soit 4 diviseurs propres)\n",
    "\n",
    "Entrez un entier strictement positif : 13\n",
    "Diviseurs propres sans répétition de 13 : aucun ! C'est un nombre premier\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Exercice 4"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Exercice 5 ✓✓\n",
    "\n",
    "  On repère une position sur un échiquier par une lettre (la colonne) et un nombre (la ligne).  \n",
    "  ![chess](../data/chess_40.png)\n",
    "  Entrez une position valide et utilisez l’instruction `if` pour déterminer la couleur de la case."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Exercice 5"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Exercice 6 ✓✓\n",
    "\n",
    "  Le soleil orbite autour de la terre en un peu plus que 365 jours. Pour corriger cette approximation, un 29<sup>e</sup> jour est alloué à février certaines années, appelées *années bissextiles*.  \n",
    "  Les années bissextiles obéissent aux règles suivantes :\n",
    "  \n",
    "- elles sont divisibles par 4 mais pas par 100 ; \n",
    "- ou bien elles sont divisibles par 400.\n",
    "\n",
    "On vérifiera que 2019 et 1900 ne sont pas bissextiles et que 2020 l’est."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Exercice 6"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Exercice 7 ✓✓\n",
    "\n",
    "  La « somme de contrôle » est un nombre qu’on ajoute à un message à transmettre pour permettre au récepteur d’en vérifier la provenance.  \n",
    "La méthode du « bit de parité » est une technique particulièrement simple de somme de contrôle. On veut transmettre des octets (groupe de 8 bits) auquel on va ajouter un bit de parité. Deux conventions existent : parité paire ou impaire.  \n",
    "Choisissons la convention **impaire**.  \n",
    "Pour chaque octet transmis, on compte le nombre de bits à 1 et on ajoute le bit de parité, 0 ou 1, de telle sorte que le nombre total de bits 1 transmis (sur le total de 9 bits) soit **impair**.\n",
    "\n",
    "Saisissez une chaîne d’un caractère ASCII et affichez le bit de parité correspondant à son code. Itérez tant qu’une saisie vide n’a pas été entrée.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Exercice 7"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Exercice 8 ✓✓\n",
    "\n",
    "  Saisir un entier dans l'intervalle  $[1, 3999]$ (pourquoi cette limitation ?). L'afficher sous forme de nombre romain.\n",
    "  ![romain](../data/romain.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Exercice 8"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
