From d7c69934248f3fab4988c0d37c11feba25d653b8 Mon Sep 17 00:00:00 2001 From: Anhgelus Morhtuuzh Date: Fri, 31 Jan 2025 15:39:30 +0100 Subject: =?UTF-8?q?Ajout=20du=20d=C3=A9but=20du=20deuxi=C3=A8me=20semestre?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../1- Fonctions, affichage, define et assert.md | 26 ++++++++++++++++++++ semestre 2/informatique/td/1- exemples/constant.c | 26 ++++++++++++++++++++ .../informatique/td/1- exemples/plus_grand.c | 28 ++++++++++++++++++++++ semestre 2/informatique/td/1- exemples/printf.c | 14 +++++++++++ .../informatique/td/1- exemples/signe_somme.c | 17 +++++++++++++ ...oucles, pile et comparaison de r\303\251els.md" | 14 +++++++++++ semestre 2/informatique/td/2- exemples/boucle.c | 25 +++++++++++++++++++ .../informatique/td/2- exemples/boucle_complet.c | 22 +++++++++++++++++ .../td/2- exemples/boucles_complexes.c | 28 ++++++++++++++++++++++ 9 files changed, 200 insertions(+) create mode 100644 semestre 2/informatique/td/1- Fonctions, affichage, define et assert.md create mode 100644 semestre 2/informatique/td/1- exemples/constant.c create mode 100644 semestre 2/informatique/td/1- exemples/plus_grand.c create mode 100644 semestre 2/informatique/td/1- exemples/printf.c create mode 100644 semestre 2/informatique/td/1- exemples/signe_somme.c create mode 100644 "semestre 2/informatique/td/2- Boucles, pile et comparaison de r\303\251els.md" create mode 100644 semestre 2/informatique/td/2- exemples/boucle.c create mode 100644 semestre 2/informatique/td/2- exemples/boucle_complet.c create mode 100644 semestre 2/informatique/td/2- exemples/boucles_complexes.c (limited to 'semestre 2/informatique/td') diff --git a/semestre 2/informatique/td/1- Fonctions, affichage, define et assert.md b/semestre 2/informatique/td/1- Fonctions, affichage, define et assert.md new file mode 100644 index 0000000..3cc87f8 --- /dev/null +++ b/semestre 2/informatique/td/1- Fonctions, affichage, define et assert.md @@ -0,0 +1,26 @@ +--- +tags: + - sorbonne + - informatique + - td +semestre: 2 +--- +Pour afficher des valeurs en C, on utilise `printf`: + +| Format | Type | +| ------ | -------------------------------- | +| `%d` | `int` | +| `%f` | `float` | +| `%.xf` | `float` et affiche `x` virgule⋅s | +| `%c` | `char` | +| `%s` | une chaîne de caractères | + +> [!warning] Booléen en C +> On n'oublie pas que les booléens n'existent pas en C ! +> Ils sont remplacés par des entiers où 0 est false et tous les autres valeurs est vrai. +> Donc, `1 == 1` vaut `1` et `1 == 0` vaut `0` ! + +On peut créer des constantes en C grâce à `#define` : +```c +#define ZERO 0 +``` diff --git a/semestre 2/informatique/td/1- exemples/constant.c b/semestre 2/informatique/td/1- exemples/constant.c new file mode 100644 index 0000000..37864ae --- /dev/null +++ b/semestre 2/informatique/td/1- exemples/constant.c @@ -0,0 +1,26 @@ +#include + +#define TNORMAL 11.4 +#define TMOINS 4.5 +#define TMOINS26S 4.9 +#define TMOINS26WE 7.9 +#define TMATIN 7.1 + +float prixPlace(int age, int jour, float h){ + if (age < 14) return TMOINS; + if (age < 26 && jour < 6) return TMOINS26S; + if (h < 11 && h > 8) return TMATIN; + if (age < 26) return TMOINS26WE; + return TNORMAL; +} + +int main(){ + printf("%.2f€ prix pour %d ans le %de jour de la semaine à %.1fh\n", prixPlace(13, 5, 13), 13, 5, 13.0); + printf("%.2f€ prix pour %d ans le %de jour de la semaine à %.1fh\n", prixPlace(14, 5, 13), 14, 5, 13.0); + printf("%.2f€ prix pour %d ans le %de jour de la semaine à %.1fh\n", prixPlace(14, 6, 13), 14, 6, 13.0); + printf("%.2f€ prix pour %d ans le %de jour de la semaine à %.1fh\n", prixPlace(14, 6, 10), 14, 6, 10.0); + printf("%.2f€ prix pour %d ans le %de jour de la semaine à %.1fh\n", prixPlace(28, 6, 10), 28, 6, 10.0); + printf("%.2f€ prix pour %d ans le %de jour de la semaine à %.1fh\n", prixPlace(28, 6, 15), 28, 6, 15.0); + return 0; +} + diff --git a/semestre 2/informatique/td/1- exemples/plus_grand.c b/semestre 2/informatique/td/1- exemples/plus_grand.c new file mode 100644 index 0000000..97c47a6 --- /dev/null +++ b/semestre 2/informatique/td/1- exemples/plus_grand.c @@ -0,0 +1,28 @@ +#include + +int plusGrand(int a, int b, int c){ + int max = a; + if (max < b){ + max = b; + } + if (max < c) { + max = c; + } + return max; +} + +int plusGrandParmisCinq(int a, int b, int c, int d, int e){ + return plusGrand(plusGrand(a, b, c), d, e); +} + +int main(){ + assert(plusGrand(1, 2, 3) == 3); + assert(plusGrand(4, 2, 3) == 4); + assert(plusGrand(4, 5, 3) == 5); + assert(plusGrandParmisCinq(1, 2, 3, 4, 5) == 5); + assert(plusGrandParmisCinq(6, 2, 3, 4, 5) == 6); + assert(plusGrandParmisCinq(6, 7, 3, 4, 5) == 7); + assert(plusGrandParmisCinq(6, 7, 8, 4, 5) == 8); + assert(plusGrandParmisCinq(6, 7, 8, 9, 5) == 9); + return 0; +} diff --git a/semestre 2/informatique/td/1- exemples/printf.c b/semestre 2/informatique/td/1- exemples/printf.c new file mode 100644 index 0000000..f40921f --- /dev/null +++ b/semestre 2/informatique/td/1- exemples/printf.c @@ -0,0 +1,14 @@ +#include + +float mult(int op1, float op2){ + return op1 * op2; +} + +int main(){ + int op1 = 3; + float op2 = 2.7; + + printf("%d * %f = %f\n", op1, op2, mult(op1, op2)); + + return 0; +} diff --git a/semestre 2/informatique/td/1- exemples/signe_somme.c b/semestre 2/informatique/td/1- exemples/signe_somme.c new file mode 100644 index 0000000..4506089 --- /dev/null +++ b/semestre 2/informatique/td/1- exemples/signe_somme.c @@ -0,0 +1,17 @@ +#include + +int signeSomme(int a, int b){ + if (a > -b){ + return 1; + } else if (a == -b){ + return 0; + } + return -1; +} + +int main(){ + assert(signeSomme(2, -1) == 1); + assert(signeSomme(-1, 1) == 0); + assert(signeSomme(-2, 1) == -1); + return 0; +} diff --git "a/semestre 2/informatique/td/2- Boucles, pile et comparaison de r\303\251els.md" "b/semestre 2/informatique/td/2- Boucles, pile et comparaison de r\303\251els.md" new file mode 100644 index 0000000..0c62406 --- /dev/null +++ "b/semestre 2/informatique/td/2- Boucles, pile et comparaison de r\303\251els.md" @@ -0,0 +1,14 @@ +--- +tags: + - sorbonne + - informatique + - td +semestre: 2 +--- +Quand on fait la pile d'un programme, on procède par étape : +1. on commence le bloc de la première fonction (`main`) +2. dans le bloc, on enregistre et on affiche les valeurs des variables (e.g. `i`) +3. quand on rencontre une nouvelle fonction, on crée un nouveau bloc et on retourne à l'étape 2 +4. quand on a fini l'exécution de la fonction, on libère la mémoire dans la pile +5. on continue l'exécution du bloc + diff --git a/semestre 2/informatique/td/2- exemples/boucle.c b/semestre 2/informatique/td/2- exemples/boucle.c new file mode 100644 index 0000000..b582080 --- /dev/null +++ b/semestre 2/informatique/td/2- exemples/boucle.c @@ -0,0 +1,25 @@ +#include + +int somme_carres_while(int m, int n){ + int s = 0, i = m; + while (i <= n){ + s += i*i; + i++; + } + return s; +} + +int somme_carres_for(int m, int n){ + int s = 0; + for (int i = m; i <= n; i++){ + s += i*i; + } + return s; +} + +int main(){ + assert(somme_carres_while(0, 5) == somme_carres_for(0, 5)); + assert(somme_carres_while(3, 5) == somme_carres_for(3, 5)); + assert(somme_carres_while(15, 25) == somme_carres_for(15, 25)); + return 0; +} diff --git a/semestre 2/informatique/td/2- exemples/boucle_complet.c b/semestre 2/informatique/td/2- exemples/boucle_complet.c new file mode 100644 index 0000000..9cae542 --- /dev/null +++ b/semestre 2/informatique/td/2- exemples/boucle_complet.c @@ -0,0 +1,22 @@ +#include +#define MAX 20 + +int premier(int n){ + if (n < 2) return 0; + for (int i = 2; i < n;i++){ + if (n%i == 0) return 0; // est une boucle avec sortie anticipée + } + return 1; +} + +void afficheNombresPremiers(int max){ + for (int i = 2; i <= max; i++){ + if (premier(i)) printf("%d\n", i); + } +} + +int main(){ + printf("Liste des nombres premiers <= %d\n", MAX); + afficheNombresPremiers(MAX); + return 0; +} diff --git a/semestre 2/informatique/td/2- exemples/boucles_complexes.c b/semestre 2/informatique/td/2- exemples/boucles_complexes.c new file mode 100644 index 0000000..6c388a4 --- /dev/null +++ b/semestre 2/informatique/td/2- exemples/boucles_complexes.c @@ -0,0 +1,28 @@ +#include +#include + +void afficheBilletsPieces(int m){ + int r = m; + int billets = r/5; + r = r%5; + int pieces2 = r/2; + r = r%2; + int pieces1 = r; + printf("%d€ = %d * 5€ + %d * 2€ + %d * 1€", m, billets, pieces2, pieces1); +} + +void afficheBilletsPiecesMultiple(int m){ + for (int billets = m/5; billets >= 0; billets--){ + int av = m - billets*5; + for (int p2 = av/2; p2 >= 0; p2--){ + int av2 = av - p2*2; + assert(billets*5+p2*2+av2 == m); + printf("%d€ = %d*5€ + %d*2€ + %d*1€\n", m, billets, p2, av2); + } + } +} + +int main(){ + afficheBilletsPiecesMultiple(23); + return 0; +} -- cgit v1.2.3