{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "3f2e3bcd",
   "metadata": {},
   "source": [
    "# Feuille d'exercices 1\n",
    "\n",
    "\n",
    "```{admonition} Objectifs \n",
    "* se familiariser avec l'environnement de travail Jupyter et la syntaxe de python\n",
    "* effectuer des opérations élémentaires, sur des entiers et des valeurs logiques\n",
    "* manipuler des variables et les afficher\n",
    "* écrire des fonctions simples\n",
    "```\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "## Exercice 1 : opérations arithmétiques\n",
    "\n",
    "**Question 1 :** Donner les valeurs de sortie des calculs suivants :\n",
    "\n",
    "- le produit de $12345$ par $6789$\n",
    "- le nombre rationnel $\\frac{2}{3}$\n",
    "- le quotient et le reste de la division euclidienne de $10^{10}$ par $2023$\n",
    "\n",
    "\n",
    "Si besoin, on pourra créer une cellule pour chaque calcul (grâce au bouton **+** situé dans la barre d'outils)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a6a46ffc",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Votre réponse ici"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "57fbbac1",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Votre réponse ici"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9e5cbae3",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Votre réponse ici"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "087fdb3f",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Votre réponse ici"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d0b94809",
   "metadata": {},
   "source": [
    "Le langage python permet de manipuler des valeurs exactes (ex: des entiers) comme des valeurs \"décimales approchées\", dites *flottantes*. Pour convertir une valeur exacte en valeur flottante, on utiliser la commande `float`.\n",
    "\n",
    "**Question 2 :** Stocker le nombre flottant associé à l'entier $5$ dans une variable `a`. Puis, afficher `a`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6dd3b7e5",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Votre réponse ici"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3e46da3b",
   "metadata": {},
   "source": [
    "## Exercice 2 : valeurs logiques et tests\n",
    "\n",
    "**Question 1 :** Afficher les quatre valeurs de la table de vérité de `or`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6433e7ca",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Votre réponse ici"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "99539254",
   "metadata": {},
   "source": [
    "**Question 2 :** Quel est le plus grand nombre entre\n",
    "$x = 2^{3^5} - (6 \\times 5)^{7^2 - 1}$\n",
    "et\n",
    "$y = \\frac{47^{44} - 1}{3} + 14^{63}$ ? On stockera ces deux entiers dans des variables `x` et `y` avant de les comparer."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "db0c2469",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Votre réponse ici"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b3f92a36",
   "metadata": {},
   "source": [
    "## Exercice 3 : chaînes de caractères\n",
    "\n",
    "**Question 1 :** Écrire la concaténation des chaînes de caractères \"Calcul\" et \"formel\", en ajoutant un espace entre ces deux mots."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "34bdb247",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Votre réponse ici"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6c9786d1",
   "metadata": {},
   "source": [
    "**Question 2 :** Écrire une fonction `plus_longue(chaine1, chaine2)` qui prend en entrée deux chaînes de caractères `chaine1` et `chaine2`, et qui retourne la chaine la plus longue. Si les deux chaînes sont de même longueur, la fonction retournera `chaine1`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "dd77a0b2",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Votre réponse ici"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b3c275ba",
   "metadata": {},
   "source": [
    "**Question 3 :** Tester la fonction `plus_longue` déclarée à la question précédente, avec les chaînes \"informatique\" et \"calcul formel\"."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "14e022b8",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Votre réponse ici"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "125bc239",
   "metadata": {},
   "source": [
    "**Question 4 :** Comment utiliser la fonction `plus_longue` pour trouver la plus longue chaîne de caractères parmi 3 ? Donner un exemple."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3b1d5d01",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Votre réponse ici"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "226ff3e0",
   "metadata": {},
   "source": [
    "## Exercice 4 : fonctions simples\n",
    "\n",
    "**Question 1 :** Écrire une fonction `valeur_absolue(x)`, qui prend en entrée un nombre `x`, et qui retourne sa valeur absolue. Bien entendu, on n'utilisera **pas** la fonction native de python qui effectue ce calcul, mais on utilisera plutôt une structure conditionnelle **if/else** suivant le signe de `x`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9040c99c",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Votre réponse ici"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4c9a272d",
   "metadata": {},
   "source": [
    "**Question 2 :** Tester la fonction `valeur_absolue` avec deux exemples judicieux (c'est-à-dire, qui permettent de traiter les deux branches de la fonction)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2824468f",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Votre réponse ici"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d17696ce",
   "metadata": {},
   "source": [
    ":::{admonition} Remarque\n",
    "**Tester** ses fonctions est primordial en informatique. Même si on ne vous le demande pas, entraînez-vous à le faire !\n",
    ":::\n",
    "\n",
    "\n",
    "**Question 3 :** Écrire une fonction `maximum(a, b, c)` qui retourne la valeur maximale parmi $a$, $b$ et $c$. N'oubliez pas de tester votre fonction !"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "04f23d78",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Votre réponse ici"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3e1e8e64",
   "metadata": {},
   "source": [
    "**Question 4 :**  Écrire une fonction `nombre_de_racines(a, b, c)` qui retourne le nombre de racines réelles distinctes du polynôme à coefficients réels $a X^2 + b X + c$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b26e2351",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Votre réponse ici"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "92ce1e49",
   "metadata": {},
   "source": [
    "## Exercice 5 : fonctions logiques\n",
    "\n",
    "On rappelle que l'expression $A \\implies B$ a la valeur logique de $B$ **si** $A$ est vraie, et est vraie **si** $A$ est fausse.\n",
    "\n",
    "\n",
    "**Question 1 :** Écrire une fonction `implique(A, B)` qui prend en entrée deux valeurs logiques $A$ et $B$, et qui retourne la valeur logique de $A \\implies B$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "43bcf143",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Votre réponse ici"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cd5d96d3",
   "metadata": {},
   "source": [
    "**Question 2 :** En appelant deux fois la fonction `implique`, écrire une fonction `equivalent(A, B)` qui prend en entrée deux valeurs logiques $A$ et $B$, et qui retourne la valeur logique de $A \\iff B$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d9234ea3",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Votre réponse ici"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "47ddad10",
   "metadata": {},
   "source": [
    "**Question 3 :** Vérifier, pour les $4$ valeurs possibles de $A$ et $B$,  que \n",
    "\n",
    "$$\n",
    "(A \\implies B) \\iff (\\text{non}(A) \\text{ ou } B)\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ca1c74aa",
   "metadata": {},
   "outputs": [],
   "source": [
    "A, B = True, True\n",
    "# Compléter\n",
    "A, B = True, False\n",
    "# Compléter\n",
    "A, B = False, True\n",
    "# Compléter\n",
    "A, B = False, False\n",
    "# Compléter"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "42f612bb",
   "metadata": {},
   "source": [
    "**Question 4 :** Vérifier, pour les $8$ valeurs possibles de $A$, $B$ et $C$,  que \n",
    "\n",
    "$$\n",
    "((A \\implies B) \\text{ et } (B \\implies C)) \\implies (A \\implies C)\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "fe5a104a",
   "metadata": {},
   "outputs": [],
   "source": [
    "A, B, C = True, True, True\n",
    "# Compléter\n",
    "A, B, C = True, True, False\n",
    "# Compléter\n",
    "A, B, C = True, False, True\n",
    "# Compléter\n",
    "A, B, C = True, False, False\n",
    "# Compléter\n",
    "A, B, C = False, True, True\n",
    "# Compléter\n",
    "A, B, C = False, True, False\n",
    "# Compléter\n",
    "A, B, C = False, False, True\n",
    "# Compléter\n",
    "A, B, C = False, False, False\n",
    "# Compléter"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "python",
   "language": "python",
   "name": "python"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
