{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "080b5f8c",
   "metadata": {},
   "source": [
    "# ICS - Série 1\n",
    "10.09.25\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f0b122d6",
   "metadata": {},
   "source": [
    "## Exercice 1 : qu'affiche ce code?\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "509c297f",
   "metadata": {},
   "source": [
    "Qu'affiche chacun des programmes ci-dessous?\n",
    "\n",
    "<font color=grey>**NB:** dans ce cours, vous aurez souvent des exercices de ce type. Lorsqu'on vous demande ce qu'un programme affiche, il ne faut surtout pas exécuter le programme tout de suite. Essayez de prédire exactement la sortie du programme. Si ce que vous voyez à l'exécution diffère de ce que vous avez prédit, essayez de comprendre exactement pourquoi. N'hésitez pas à modifier le programme de diverses manières pour voir comment change son fonctionnement. N'hésitez pas non plus à générer des erreurs, exprès ou pas, c'est une excellente manière d'apprendre.</font>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "14725066",
   "metadata": {},
   "outputs": [],
   "source": [
    "x = 1\n",
    "y = x\n",
    "x += 1\n",
    "print(x, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "bf019a59",
   "metadata": {},
   "outputs": [],
   "source": [
    "a = \"ha\"\n",
    "b = a * 2\n",
    "print(a, b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "efd6978d",
   "metadata": {},
   "outputs": [],
   "source": [
    "a = \"123\"\n",
    "b = a\n",
    "a *= 2\n",
    "print(a, b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5b5c05e3",
   "metadata": {},
   "outputs": [],
   "source": [
    "x = \"abc\"\n",
    "x += str(1)\n",
    "x *= 2\n",
    "print(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "325d2d7a",
   "metadata": {},
   "outputs": [],
   "source": [
    "x = 5\n",
    "x += 3\n",
    "x /= 2\n",
    "x -= 10\n",
    "x *= 4\n",
    "print(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "212cb93f",
   "metadata": {},
   "outputs": [],
   "source": [
    "x = \"a\"\n",
    "y = \"b\"\n",
    "z = x + y\n",
    "print(z * 3, x * 3, y * 3)\n",
    "print(z * 3 + x * 3 + y * 3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d2badc7f",
   "metadata": {},
   "outputs": [],
   "source": [
    "x, y, z = 2, '+', 2\n",
    "print(x, z, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "70df617b",
   "metadata": {},
   "outputs": [],
   "source": [
    "x, y = 5\n",
    "print(x, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a4661a7e",
   "metadata": {},
   "outputs": [],
   "source": [
    "def f(x):\n",
    "    print(2 * x)\n",
    "    return x + 1\n",
    "\n",
    "print(f(3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "76dd77c3",
   "metadata": {},
   "outputs": [],
   "source": [
    "def f(x, y):\n",
    "    print(\"je suis f\")\n",
    "    return 2 * x + 3 * y\n",
    "    print(\"je suis encore f\")\n",
    "    \n",
    "def g(t):\n",
    "    print(\"je suis g\")\n",
    "    print(f(t, t))\n",
    "    \n",
    "g(4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "49b28d8c",
   "metadata": {},
   "outputs": [],
   "source": [
    "def f(x, y):\n",
    "    print(\"je suis f\")\n",
    "    return 2 * x + 3 * y\n",
    "    print(\"je suis encore f\")\n",
    "    \n",
    "def g(t):\n",
    "    return f(t, t)\n",
    "    print(\"je suis g\")\n",
    "    \n",
    "print(g(4))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "016e4cd8",
   "metadata": {},
   "source": [
    "## Exercice 2 : division euclidienne"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "518df416",
   "metadata": {},
   "source": [
    "Pour des entiers $n\\geq 0$ et $d > 0$, il existe d'uniques entiers naturels $q$ et $r$, avec $0 \\leq r < d$, tels que\n",
    "\n",
    "$$n = q \\cdot d + r.$$\n",
    "\n",
    "$q$ est le quotient et $r$ le reste de la division euclidienne de $n$ par $d$.\n",
    "\n",
    "Par exemple,\n",
    "- comme $13 = 3 \\times 4 + 1$, le quotient et le reste de la division euclidienne de $13$ par $3$ sont respectivement $4$ et $1$...\n",
    "- ... et le quotient et le reste de la division euclidienne de $13$ par $4$ sont respectivement $3$ et $1$.\n",
    "- comme $29 = 2 \\times 10 + 9$, le quotient et le reste de la division euclidienne de $29$ par $10$ sont respectivement $2$ et $9$. \n",
    "- par contre l'égalité ci-dessus n'implique pas que le quotient et le reste de la division euclidienne de $29$ par $2$ sont respectivement $10$ et $9$! N'oubliez pas que le reste de la division entière doit être strictement inférieur au diviseur. Quels sont le quotient et le reste de la division entière de $29$ par $2$?\n",
    "\n",
    "En Python, l'opérateur `//` donne le quotient de la division entière, et `%` le reste de la division entière: </font>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "91f491e4",
   "metadata": {},
   "outputs": [],
   "source": [
    "print(\"le quotient de la division entière de 13 par 4 est\", 13 // 4, \"et le reste est\", 13 % 4)\n",
    "print(\"le quotient de la division entière de 13 par 3 est\", 13 // 3, \"et le reste est\", 13 % 3)\n",
    "print(\"le quotient de la division entière de 29 par 10 est\", 29 // 10, \"et le reste est\", 29 % 10)\n",
    "print(\"le quotient de la division entière de 29 par 2 est\", 29 // 2, \"et le reste est\", 29 % 2)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3aaf5777",
   "metadata": {},
   "source": [
    "<font color = grey>A savoir que les opérateurs `//` et `%` sont définis également pour des entiers négatifs ou même des float, mais ces cas présentent moins d'intérêt mathématique.\n",
    "<br/><br/><br/></font>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5c8b6b2f",
   "metadata": {},
   "source": [
    "**a)** Ecrivez une fonction qui prend deux paramètres `n` et `d` en entrée et retourne le quotient et le reste de la division euclidienne de `n` par `d`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "74bd7ca4",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "24824ac3",
   "metadata": {
    "user_expressions": []
   },
   "source": [
    "**b)** Ecrivez un programme qui\n",
    "- définit une variable `n` et une variable `d` (et leur affecte des entiers positifs de votre choix)\n",
    "- appelle la fonction définie au point (a) pour obtenir le quotient et le reste de la division euclidienne de `n` par `d`, et affecte ces nombres à deux variables `q` et `r`\n",
    "- affiche l'équation \n",
    "\n",
    "`n = d * q + r`\n",
    "\n",
    "\n",
    "Par exemple, si `n` vaut `11` et `d` vaut `14`, le programme doit afficher:\n",
    "\n",
    "`11 = 4 * 2 + 3`\n",
    "\n",
    "Testez votre programme pour les valeurs suivantes de `n` et de `d`:\n",
    "\n",
    "- `n = 129, d = 4`\n",
    "- `n = 33, d = 7`\n",
    "- `n = 7, d = 33`\n",
    "- `n = 13, d = 13`\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f50a52f3-029f-43ab-b9c3-c49723937a69",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "cf6b77ef",
   "metadata": {
    "user_expressions": []
   },
   "source": [
    "## Exercice 3 : le cercle"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "87885a49",
   "metadata": {},
   "source": [
    "\n",
    "**(a)** Ecrivez une fonction  qui prend en entrée un paramètre `r`, affiche le périmètre du cercle de rayon `r`, et retourne l'aire du cercle de rayon `r`. \n",
    "\n",
    "Vous pouvez supposer que $\\pi$ vaut `3.14`.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1a8775e5",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "5684f64b",
   "metadata": {},
   "source": [
    "\n",
    "**(b)** Ecrivez un programme qui:\n",
    "- définit une variable `r` et lui affecte un réel positif\n",
    "- A l'aide d'un appel à votre fonction définie en (a), affiche le périmètre puis l'aire du cercle de rayon `r`.\n",
    "\n",
    "Par exemple, si `r` vaut `1`, votre programme doit afficher:\n",
    "\n",
    "`Le périmètre du cercle de rayon 1 est 6.28`\n",
    "\n",
    "`L'aire du cercle de rayon 1 est 3.14`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3d13b4c7",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "9926d177",
   "metadata": {},
   "source": [
    "## Exercice 4\n",
    "\n",
    "**(a)** Ecrivez une fonction `presentation` qui prend en entrée une string `nom` et un entier positif `age` et affiche:\n",
    "\n",
    "`nom` a `age` ans.\n",
    "\n",
    "Par exemple, l'appel `presentation(\"Frodo\", 33)` doit afficher:\n",
    "\n",
    "`Frodo a 33 ans.`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "aba99512",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "072d0cf3",
   "metadata": {},
   "source": [
    "**(b)** Ecrivez une fonction `exclamation` qui prend en entrée une string `nom` et\n",
    "un entier positif `reps` et affiche `reps` fois l'exclamation `nom !` sur une ligne.\n",
    "\n",
    "Par exemple, l'appel `exclamation(\"Leonard\", 3)` doit afficher:\n",
    "\n",
    "`Leonard ! Leonard ! Leonard !`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5019ca20",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "b6fc13d6",
   "metadata": {},
   "source": [
    "**(c)** Ecrivez une fonction `exclamation2` qui prend en entrée une string `nom` et\n",
    "un entier positif `age` et affiche \n",
    "- deux fois l'exclamation `nom !` sur une ligne si `age` est pair.\n",
    "- trois fois l'exclamation `nom !` sur une ligne si `age` est impair.\n",
    "\n",
    "Par exemple, l'appel `exclamation2(\"Ghid\", 40)` doit afficher:\n",
    "\n",
    "`Ghid ! Ghid !`\n",
    "\n",
    "Et l'appel `exclamation2(\"Leonard\", 403)` doit afficher:\n",
    "\n",
    "`Leonard ! Leonard ! Leonard ! `\n",
    "\n",
    "\n",
    "**Remarque**: Dans des cours ultérieurs, nous verrons comment écrire des programmes \n",
    "dont le flux d'exécution dépend d'une certaine condition (du type \"si telle condition est vraie alors exécute cette ligne de code, sinon exécute cette autre ligne de code\").\n",
    "Mais avec les opérations qu'on a vues aujourd'hui, vous disposez déjà d'un outil pour répondre à la question demandée.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "91939917",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "52734d64",
   "metadata": {},
   "source": [
    "## Exercice 5 : la fonction `print`\n",
    "\n",
    "\n",
    "\n",
    "**(a)** Ecrivez, à l'aide **d'un seul appel** à la fonction `print`, un code \n",
    "qui produit l'affichage ci-dessous.\n",
    "\n",
    "Ceci\n",
    "\n",
    "est \n",
    "\n",
    "une \n",
    "\n",
    "phrase.\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4274c72f",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "65ad16bf",
   "metadata": {},
   "source": [
    "**(b)** Ecrivez un code qui produit l'affichage ci-dessous (les espaces au début de la deuxième et troisième ligne correspondent à un et deux tabs respectivement):<br/><br/>\n",
    "\n",
    "\n",
    "Comme j'étais parti\n",
    "\n",
    "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Le petit prince a dit:\n",
    "    \n",
    "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"puisque c'est ainsi, nous reviendrons mardi\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "45670f52",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "attachments": {
    "6629dac0-b084-46de-9344-2d8a065f22e4.png": {
     "image/png": "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"
    }
   },
   "cell_type": "markdown",
   "id": "a2628211",
   "metadata": {
    "user_expressions": []
   },
   "source": [
    "**(c)** Même question pour le \"shrug emoji\" ci-dessous:<br/><br/>\n",
    "\n",
    "![image.png](attachment:6629dac0-b084-46de-9344-2d8a065f22e4.png)\n",
    "\n",
    "(vous pouvez copier-coller les caractères qu'il vous faut:  ¯   ツ  )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "31b9c11f",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "6f551114",
   "metadata": {
    "user_expressions": []
   },
   "source": [
    "**(d)** Même question pour les quatre lignes ci-dessous:<br/><br/><br/><br/>\n",
    "\n",
    "Si votre phrase est entourée par des doubles quotes \", elle peut contenir des simples quotes: ' .\n",
    "\n",
    "Par contre, pour afficher une double quote, il faudra la précéder d'un backslash: \\\\\" .\n",
    "\n",
    "De même, si la phrase est entourée par de simple quotes, elle peut contenir des double quotes, \n",
    "\n",
    "mais pour afficher une simple quote il faudra la précéder d'un backslash: \\\\' . "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e645db4a",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "8bb3ac2c",
   "metadata": {},
   "source": [
    "**(e)** Qu'affiche chacun des programmes ci-dessous?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "bbcaba68",
   "metadata": {},
   "outputs": [],
   "source": [
    "print(\"Comment\", end = \" \")\n",
    "print(\"ça\", end = \" \")\n",
    "print(\"va\", end = \" \")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "58e12aed",
   "metadata": {},
   "outputs": [],
   "source": [
    "print(\"a\", \"b\", \"c\", \"d\", sep = \"-\")\n",
    "print(\"a\", \"b\", \"c\", \"d\", sep = \"-\", end = \"-e\")\n",
    "print(\"-f\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a5e3ea36",
   "metadata": {
    "user_expressions": []
   },
   "source": [
    "**(f)** Utilisez des instructions `print` qui peuvent prendre en entrée uniquement les strings \"a\", \"b\", \"c\" et \"d\" (avec les valeurs appropriées des paramètres `end` et `sep` ), pour afficher les lignes suivantes:\n",
    "\n",
    "a!b?c?d!\n",
    "\n",
    "ab!c!d?\n",
    "\n",
    "a??b?c!\n",
    "\n",
    "abcde"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "da8cfbbf",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "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.10.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
