Programmation - TP5


02/10/2017

Examen semaine prochaine


  • Algorithmique
  • Sur papier, langage d'algorithmie
  • Pas de support
  • Tout ce qu'on a vu + tableaux
  • 2 x 1h
  • 2h de cours ensuite

Programme du jour


  • 2 heures sur les tableaux
  • 2 heures de préparation d'examen.

Corrections TP précédent en ligne

Demandez moi pendant le TP ou par mail pour des précisions

Cours : L'opérateur modulo :

"a % b" : Reste de la division euclidienne

9 % 4 = 1

C'est l'équivalent de ce qu'il y a après la virgule dans un division "exacte"

9÷4=2.25. Le 0.25 correspond au modulo

Si le modulo vaut 0, cela veut dire que la b divise a

L'opérateur division :

"a / b" : Division euclidienne uniquement si a et b sont des int

"a / b" : Division exacte si a et/ou b est un float

Exemple : 9/4 = 2

Exemple : 9.0/4 = 2.25

Si a et b sont entier : a/b est le résultat de la division euclidienne, a%b est le reste

a = (a/b)*b + (a%b)

Applications du modulo :

"a % b" : Savoir si b divise a

"a % 2" : Savoir si a est pair

"a % 10" : Savoir le dernier chiffre de a

Convertir 442 secondes en minutes:secondes

442 / 60 = 7

442 % 60 = 22

442 = 7*60 + 22

Cours : Les tableaux

Structure permettant de stocker plusieurs variables de même type au même endroit


Début
   Entier plein_dentiers[10]
   Réel autreTableau[20]

   // suite de l'algorithme
Fin
		
  • Le chiffre entre crochets est la taille du tableau
  • "plein_dentiers" est un tableau contenant 10 variables entières
  • "autreTableau" est un tableau contenant 20 variables réelles

Tableaux : déclaration


Début
   Entier plein_dentiers[10]
   Réel autreTableau[20]

   // suite de l'algorithme
Fin
		
  • Un tableau doit être déclaré au début de l'algorithme avec les variables
  • La taille d'un tableau est fixée dans l'algorithme et invariable

Tableaux : utilisation

Chaque élément d'un tableau se comporte comme une variable indépendante


Début
   Entier plein_dentiers[10]

   plein_dentiers[1] <- 3
   plein_dentiers[3] <- 5
   plein_dentiers[8] <- 2 x plein_dentiers[1]
   obtenir plein_dentiers[1]
   afficher plein_dentiers[8]
Fin
		

Chaque élément d'un tableau est accessible par son indice

Tableaux : les indices

Attention Les tableaux commencent à 0 !


Début
   Entier plein_dentiers[3]

   plein_dentiers[0] <- 1
   plein_dentiers[1] <- 2
   plein_dentiers[2] <- 3
Fin
		

Ainsi le dernier indice valide est la taille moins 1

Tableaux : parcours

Les tableaux sont particulièrement adaptés aux boucles pour i de 0 à ...


Début
   Entier plein_dentiers[100]
   Entier i

   pour i de 0 à 99
      // instructions à répéter pour chaque case du tableau
      // par exemple
      plein_dentiers[i] <- 4
      // ou
      obtenir plein_dentiers[i]
   finpour
Fin
		

Tableaux : exemple

On veut demander 15 notes à l'utilisateur, puis toutes les réafficher


Début
   Entier notes[15]
   Entier i

   pour i de 0 à 14
      obtenir notes[i]
   finpour

   pour i de 0 à 14
      afficher notes[i]
   finpour
Fin
		

Les tableaux en C : déclaration

S'utilise exactement comme en algorithme

Les tableaux en C : utilisation

Les tableaux en C : boucles for

Particulièrement adapté aux boucles for

Les tableaux en C : exemple

Cours : Tant que

On connait la boucle conditionnelle tant que


Début
   Entier n

   n <- 0
   tant que (n x n < 100)
      n <- n + 1
   fintantque
   afficher n
Fin
		

Faire tant que

Il est possible d'utiliser une alternative :


Début
   Entier n

   n <- 0
   faire
      n <- n + 1
   tant que (n x n < 100)
   afficher n
Fin
		

Seule différence : la boucle est exécutée au moins une fois

Faire tant que

Très approprié pour les vérifications de saisies :


Début
   Entier n

   faire
      obtenir n
   tant que (n < 100)
   afficher n
Fin
		

Faire tant que en C