Calcul de la Valeur Actualisée Nette (VAN) en C

CBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez à calculer la Valeur Actualisée Nette (VAN) en C. Le laboratoire vous guidera à travers le processus de lecture d'une série de flux de trésorerie et du taux d'actualisation, d'actualisation de chaque flux de trésorerie, puis de les additionner pour calculer la VAN. Vous créerez un programme C qui permettra aux utilisateurs d'entrer les données nécessaires, puis affichera la VAN calculée. Ce laboratoire couvre les concepts fondamentaux de mathématiques financières et de calculs d'intérêts à l'aide de la programmation C.

Lecture d'une Série de Flux de Trésorerie et du Taux

Dans cette étape, vous apprendrez à lire une série de flux de trésorerie et le taux d'intérêt pour calculer la Valeur Actualisée Nette (VAN) en C. Nous allons créer un programme qui permet aux utilisateurs d'entrer plusieurs flux de trésorerie et le taux d'actualisation.

Tout d'abord, créons un nouveau fichier C pour notre calcul de VAN :

cd ~/project
nano npv_calculator.c

Maintenant, ajoutez le code suivant au fichier :

#include <stdio.h>

#define MAX_FLUX_TRESORERIE 10

int main() {
    double flux_tresorerie[MAX_FLUX_TRESORERIE];
    double taux_actualisation;
    int nb_flux_tresorerie;

    // Saisie du nombre de flux de trésorerie
    printf("Entrez le nombre de flux de trésorerie (max %d) : ", MAX_FLUX_TRESORERIE);
    scanf("%d", &nb_flux_tresorerie);

    // Validation du nombre de flux de trésorerie
    if (nb_flux_tresorerie <= 0 || nb_flux_tresorerie > MAX_FLUX_TRESORERIE) {
        printf("Nombre de flux de trésorerie invalide.\n");
        return 1;
    }

    // Saisie des flux de trésorerie
    for (int i = 0; i < nb_flux_tresorerie; i++) {
        printf("Entrez le flux de trésorerie %d : ", i);
        scanf("%lf", &flux_tresorerie[i]);
    }

    // Saisie du taux d'actualisation
    printf("Entrez le taux d'actualisation (en décimal) : ");
    scanf("%lf", &taux_actualisation);

    // Affichage des données saisies pour vérification
    printf("\nRésumé des données saisies :\n");
    printf("Nombre de flux de trésorerie : %d\n", nb_flux_tresorerie);
    printf("Taux d'actualisation : %.2f%%\n", taux_actualisation * 100);

    printf("\nFlux de trésorerie :\n");
    for (int i = 0; i < nb_flux_tresorerie; i++) {
        printf("Flux de trésorerie %d : $%.2f\n", i, flux_tresorerie[i]);
    }

    return 0;
}

Compilez le programme :

gcc -o npv_calculator npv_calculator.c

Exécutez le programme pour tester l'entrée :

./npv_calculator

Exemple de sortie :

Entrez le nombre de flux de trésorerie (max 10) : 3
Entrez le flux de trésorerie 0 : -1000
Entrez le flux de trésorerie 1 : 500
Entrez le flux de trésorerie 2 : 600
Entrez le taux d'actualisation (en décimal) : 0.1

Résumé des données saisies :
Nombre de flux de trésorerie : 3
Taux d'actualisation : 10.00%

Flux de trésorerie :
Flux de trésorerie 0 : $-1000.00
Flux de trésorerie 1 : $500.00
Flux de trésorerie 2 : $600.00

Ce code illustre comment :

  1. Définir un nombre maximal de flux de trésorerie
  2. Lire le nombre de flux de trésorerie à partir de l'entrée utilisateur
  3. Saisir les valeurs individuelles des flux de trésorerie
  4. Saisir le taux d'actualisation
  5. Valider et afficher les données saisies pour vérification

Le programme établit les bases du calcul de la VAN en capturant les paramètres d'entrée essentiels.

Actualisation de Chaque Flux de Trésorerie et Somme

Dans cette étape, vous apprendrez à actualiser chaque flux de trésorerie et à calculer la Valeur Actualisée Nette (VAN) en sommant les flux de trésorerie actualisés en C.

Modifions le fichier précédent npv_calculator.c pour ajouter le calcul de la VAN :

cd ~/project
nano npv_calculator.c

Remplacez le code précédent par la mise en œuvre suivante :

#include <stdio.h>
#include <math.h>

#define MAX_FLUX_TRESORERIE 10

double calculate_npv(double flux_tresorerie[], int nb_flux_tresorerie, double taux_actualisation) {
    double van = 0.0;

    for (int i = 0; i < nb_flux_tresorerie; i++) {
        // Actualisation de chaque flux de trésorerie : FT / (1 + t)^i
        double flux_actualise = flux_tresorerie[i] / pow(1 + taux_actualisation, i);
        van += flux_actualise;
    }

    return van;
}

int main() {
    double flux_tresorerie[MAX_FLUX_TRESORERIE];
    double taux_actualisation;
    int nb_flux_tresorerie;

    // Saisie du nombre de flux de trésorerie
    printf("Entrez le nombre de flux de trésorerie (max %d) : ", MAX_FLUX_TRESORERIE);
    scanf("%d", &nb_flux_tresorerie);

    // Validation du nombre de flux de trésorerie
    if (nb_flux_tresorerie <= 0 || nb_flux_tresorerie > MAX_FLUX_TRESORERIE) {
        printf("Nombre de flux de trésorerie invalide.\n");
        return 1;
    }

    // Saisie des flux de trésorerie
    for (int i = 0; i < nb_flux_tresorerie; i++) {
        printf("Entrez le flux de trésorerie %d : ", i);
        scanf("%lf", &flux_tresorerie[i]);
    }

    // Saisie du taux d'actualisation
    printf("Entrez le taux d'actualisation (en décimal) : ");
    scanf("%lf", &taux_actualisation);

    // Calcul de la VAN
    double van = calculate_npv(flux_tresorerie, nb_flux_tresorerie, taux_actualisation);

    // Affichage des résultats
    printf("\nRésumé des données saisies :\n");
    printf("Nombre de flux de trésorerie : %d\n", nb_flux_tresorerie);
    printf("Taux d'actualisation : %.2f%%\n", taux_actualisation * 100);

    printf("\nFlux de trésorerie :\n");
    for (int i = 0; i < nb_flux_tresorerie; i++) {
        double flux_actualise = flux_tresorerie[i] / pow(1 + taux_actualisation, i);
        printf("Flux de trésorerie %d : $%.2f (Actualisé : $%.2f)\n",
               i, flux_tresorerie[i], flux_actualise);
    }

    printf("\nValeur Actualisée Nette (VAN) : $%.2f\n", van);

    return 0;
}

Compilez le programme avec la bibliothèque mathématique :

gcc -o npv_calculator npv_calculator.c -lm

Exécutez le programme pour tester le calcul de la VAN :

./npv_calculator

Exemple de sortie :

Entrez le nombre de flux de trésorerie (max 10) : 3
Entrez le flux de trésorerie 0 : -1000
Entrez le flux de trésorerie 1 : 500
Entrez le flux de trésorerie 2 : 600
Entrez le taux d'actualisation (en décimal) : 0.1

Résumé des données saisies :
Nombre de flux de trésorerie : 3
Taux d'actualisation : 10.00%

Flux de trésorerie :
Flux de trésorerie 0 : $-1000.00 (Actualisé : $-1000.00)
Flux de trésorerie 1 : $500.00 (Actualisé : $454.55)
Flux de trésorerie 2 : $600.00 (Actualisé : $495.87)

Valeur Actualisée Nette (VAN) : $-49.58

Points clés de cette implémentation :

  1. Fonction calculate_npv() ajoutée pour calculer la VAN
  2. Fonction pow() utilisée pour actualiser les flux de trésorerie
  3. Affichage des flux de trésorerie originaux et actualisés
  4. Calcul et affichage de la VAN finale

Remarque : Le flag -lm est utilisé pour lier la bibliothèque mathématique pour la fonction pow().

Affichage de la VAN

Dans cette dernière étape, vous apprendrez à interpréter et à présenter les résultats du calcul de la Valeur Actualisée Nette (VAN) dans un format convivial.

Modifions le fichier npv_calculator.c pour améliorer la présentation de la sortie :

cd ~/project
nano npv_calculator.c

Mettre à jour le code avec une mise en forme de sortie améliorée :

#include <stdio.h>
#include <math.h>

#define MAX_FLUX_TRESORERIE 10

double calculate_npv(double flux_tresorerie[], int nb_flux_tresorerie, double taux_actualisation) {
    double van = 0.0;

    for (int i = 0; i < nb_flux_tresorerie; i++) {
        double flux_actualise = flux_tresorerie[i] / pow(1 + taux_actualisation, i);
        van += flux_actualise;
    }

    return van;
}

void print_npv_analysis(double flux_tresorerie[], int nb_flux_tresorerie, double taux_actualisation, double van) {
    printf("\n--- Rapport d'analyse de la VAN ---\n");
    printf("Taux d'actualisation : %.2f%%\n", taux_actualisation * 100);

    printf("\nDécomposition des flux de trésorerie :\n");
    printf("--------------------\n");
    for (int i = 0; i < nb_flux_tresorerie; i++) {
        double flux_actualise = flux_tresorerie[i] / pow(1 + taux_actualisation, i);
        printf("Période %d : $%.2f (Actualisé : $%.2f)\n",
               i, flux_tresorerie[i], flux_actualise);
    }

    printf("\nValeur Actualisée Nette (VAN) : $%.2f\n", van);

    // Interpréter le résultat de la VAN
    if (van > 0) {
        printf("Recommandation d'investissement : ACCEPTER\n");
        printf("Le projet devrait créer de la valeur.\n");
    } else if (van < 0) {
        printf("Recommandation d'investissement : REJETER\n");
        printf("Le projet devrait détruire de la valeur.\n");
    } else {
        printf("Recommandation d'investissement : NEUTRE\n");
        printf("Le projet est rentable au taux d'actualisation donné.\n");
    }
}

int main() {
    double flux_tresorerie[MAX_FLUX_TRESORERIE];
    double taux_actualisation;
    int nb_flux_tresorerie;

    printf("Calculateur de Valeur Actualisée Nette (VAN)\n");
    printf("==================================\n");

    // Saisie du nombre de flux de trésorerie
    printf("Entrez le nombre de flux de trésorerie (max %d) : ", MAX_FLUX_TRESORERIE);
    scanf("%d", &nb_flux_tresorerie);

    // Validation du nombre de flux de trésorerie
    if (nb_flux_tresorerie <= 0 || nb_flux_tresorerie > MAX_FLUX_TRESORERIE) {
        printf("Nombre de flux de trésorerie invalide.\n");
        return 1;
    }

    // Saisie des flux de trésorerie
    for (int i = 0; i < nb_flux_tresorerie; i++) {
        printf("Entrez le flux de trésorerie pour la période %d : ", i);
        scanf("%lf", &flux_tresorerie[i]);
    }

    // Saisie du taux d'actualisation
    printf("Entrez le taux d'actualisation (en décimal) : ");
    scanf("%lf", &taux_actualisation);

    // Calcul de la VAN
    double van = calculate_npv(flux_tresorerie, nb_flux_tresorerie, taux_actualisation);

    // Affichage de l'analyse de la VAN
    print_npv_analysis(flux_tresorerie, nb_flux_tresorerie, taux_actualisation, van);

    return 0;
}

Compilez le programme :

gcc -o npv_calculator npv_calculator.c -lm

Exécutez le programme pour tester la sortie VAN améliorée :

./npv_calculator

Exemple de sortie :

Calculateur de Valeur Actualisée Nette (VAN)
==================================
Entrez le nombre de flux de trésorerie (max 10) : 3
Entrez le flux de trésorerie pour la période 0 : -1000
Entrez le flux de trésorerie pour la période 1 : 500
Entrez le flux de trésorerie pour la période 2 : 600
Entrez le taux d'actualisation (en décimal) : 0.1

--- Rapport d'analyse de la VAN ---
Taux d'actualisation : 10.00%

Décomposition des flux de trésorerie :
--------------------
Période 0 : $-1000.00 (Actualisé : $-1000.00)
Période 1 : $500.00 (Actualisé : $454.55)
Période 2 : $600.00 (Actualisé : $495.87)

Valeur Actualisée Nette (VAN) : $-49.58
Recommandation d'investissement : REJETER
Le projet devrait détruire de la valeur.

Améliorations clés de cette version :

  1. Fonction print_npv_analysis() dédiée
  2. Mise en forme de sortie améliorée
  3. Ajout de la recommandation d'investissement basée sur la VAN
  4. Interface utilisateur améliorée avec des en-têtes clairs

Résumé

Dans ce laboratoire, vous avez appris à lire une série de flux de trésorerie et le taux d'intérêt pour calculer la Valeur Actualisée Nette (VAN) en C. Vous avez créé un programme permettant aux utilisateurs d'entrer plusieurs flux de trésorerie et le taux d'actualisation, puis le programme affiche les données saisies pour vérification.

Ensuite, vous apprendrez à actualiser chaque flux de trésorerie et à les additionner pour calculer la VAN, puis à afficher le résultat final.