aboutsummaryrefslogtreecommitdiff
path: root/semestre 2/informatique/td
diff options
context:
space:
mode:
authorAnhgelus Morhtuuzh <anhgelus@anhgelus.world>2025-01-31 15:39:30 +0100
committerAnhgelus Morhtuuzh <anhgelus@anhgelus.world>2025-01-31 15:39:30 +0100
commitd7c69934248f3fab4988c0d37c11feba25d653b8 (patch)
tree6c396257cb21374e13a26b8f78c05353806220bc /semestre 2/informatique/td
parented631f52ee7af474625e37c6855c7c55903317fc (diff)
Ajout du début du deuxième semestre
Diffstat (limited to 'semestre 2/informatique/td')
-rw-r--r--semestre 2/informatique/td/1- Fonctions, affichage, define et assert.md26
-rw-r--r--semestre 2/informatique/td/1- exemples/constant.c26
-rw-r--r--semestre 2/informatique/td/1- exemples/plus_grand.c28
-rw-r--r--semestre 2/informatique/td/1- exemples/printf.c14
-rw-r--r--semestre 2/informatique/td/1- exemples/signe_somme.c17
-rw-r--r--semestre 2/informatique/td/2- Boucles, pile et comparaison de réels.md14
-rw-r--r--semestre 2/informatique/td/2- exemples/boucle.c25
-rw-r--r--semestre 2/informatique/td/2- exemples/boucle_complet.c22
-rw-r--r--semestre 2/informatique/td/2- exemples/boucles_complexes.c28
9 files changed, 200 insertions, 0 deletions
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 <stdio.h>
+
+#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 <assert.h>
+
+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 <stdio.h>
+
+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 <assert.h>
+
+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éels.md b/semestre 2/informatique/td/2- Boucles, pile et comparaison de réels.md
new file mode 100644
index 0000000..0c62406
--- /dev/null
+++ b/semestre 2/informatique/td/2- Boucles, pile et comparaison de réels.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 <assert.h>
+
+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 <stdio.h>
+#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 <stdio.h>
+#include <assert.h>
+
+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;
+}