Objectifs: 

Ce laboratoire a pour but de:

  • Vous faire pratiquer la manipulation d'adresses mémoire (obtention de l'adresse d'une variable et affichage);
  • Vous faire manipuler les pointeurs (déclaration, assignation et déréférencement);
  • Vous faire pratiquer le passage de paramètres par référence;
  • Vous faire comprendre comment fonctionne l'allocation mémoire et la visibilité des variables.

Fonctionnement du laboratoire: 

  • Ce laboratoire se compose de 8 exercices. Ceux-ci doivent tous être complétés d’ici la prochaine séance de laboratoire.
  • Chaque exercice est accompagné d’indices. Il vous est conseillé de ne consulter l'indice qu'en cas de blocage.

Question 1: 
Écrire un programme qui déclare deux variables: une variable entière var_entiere et variable réelle (double) var_reelle. Votre programme doit afficher l'adresse et la taille de chacune des variables. 

Question 2: 
Écrivez une fonction afficher_adresse qui prend une variable entière en paramètre et qui affiche à l'écran l'adresse mémoire de la variable en paramètre. Ensuite, dans votre fonction main, déclarez une variable entière ma_var et affichez son adresse à l'écran. Finalement, appelez la fonction afficher_adresse depuis votre main en lui fournissant la variable ma_var en paramètre.  

Que remarquez-vous?


Question 3:
Écrivez un programme qui saisit une valeur entière que vous stockerez dans une variable valeur_saisie. Puis écrivez une instruction qui multiplie la valeur de valeur_saisie par 2, sans utiliser la valeur_saisie dans votre expression. Finalement, affichez la valeur de la variable valeur_saisie


Question 4: 
Écrire une fonction permuter qui prend deux variables entières entier1 et entier2. Votre fonction doit permuter les valeurs de entier1 et entier2. Depuis votre fonction main, testez le fonctionnement de votre fonction permuter.


Question 5: 
Écrire une fonction min_max_saisie qui demande à l'usager de saisir un ensemble de valeurs entières. Votre fonction  doit fournir à l'appelant la valeur minimale ainsi que la valeur maximale saisie. Le nombre de valeurs entières que l'usager doit saisir sera fourni en paramètre à votre fonction. 

Testez le fonctionnement de votre fonction depuis votre main.


Question 6: 
Écrire une fonction division_entiere qui prend en paramètre le numérateur et le diviseur. Votre fonction doit fournir à l'appelant le quotient ainsi que le reste de la division entière. 

Testez le fonctionnement de votre fonction depuis votre main.


Question 7: 
Écrivez une fonction lire_entier qui lit une valeur entière saisie au clavier. Votre fonction doit renvoyer l'adresse de la variable qui contient la valeur saisie. Ensuite, depuis votre fonction main, appelez la fonction lire_entier et affichez à l'écran la valeur contenue à l'adresse retournée par la fonction (la valeur contenue à l'adresse et non l'adresse). 

Que remarquez-vous? Expliquez. 


Question 8: 
Complétez puis exécutez le programme ci-dessous. Que remarquez-vous? Pouvez-vous l'expliquer?

void fonction_fictive1(int param1);
void fonction_fictive2(int param1);

int main()
{
   fonction_fictive1(7);
   fonction_fictive2(11);

   system("pause");
   return EXIT_SUCCESS;
}

void fonction_fictive1(int param1)
{
   int x;
   x = param1;
   /* AFFICHEZ L'ADRESSE DE x ICI*/
}
void fonction_fictive2(int param1)
{
   int y;
   /* AFFICHEZ l'ADRESSE DE Y ICI */
}


Modifié le: mardi, 23 octobre 2018, 13:33