Cours 1 - Introduction au C++ et exemples

book
date_range
C++
comment0 commentaire
remove_red_eye3181 vues

Netbeans et langage C++ 

Dans mon école, nous sommes en train de voir le C++. Même si ce langage ne me passionne pas des masses, je vais essayer de vous synthétiser les côtés pratiques du langage que j'apprends durant les cours. L'approche pratique signifie que je rentrerai rarement dans la théorie, sauf s'il faut expliquer quelque chose de précis dans le but d'un programme.

Je trouve que les cours de programmation en général sont trop "correct", on nous montre tout ce qui est possible de faire au lieu de nous apprendre une méthode unique, ce qui à mon sens est une erreur.

Pour le premier cours, je vais surtout vous montrer la syntaxe du langage C++. Je vous encourage vivement à essayer de reproduire les exercices sans les recopier. Cela vous aidera à mieux appréhender le langage.

Pour rappel, ces cours sont liés aux cours que je reçois dans mon école, condenser 4h de cours en un article ça implique que je ne choisisse pas les thèmes abordés.

Introduction au langage

Nous allons faire un petit tour sommaire du langage. Le C++ sert dans tous les OS, il est utilisé pour faire des applications logicielles et est orienté objet. Le C++ n'a rien à voir avec le C.

Les différents type de variables primitives

  • int : pour les entiers ;
  • long : pour les entiers longs ;
  • short : pour les entiers courts ;
  • float : chiffres à virgules ;
  • double : chiffres longs à virgules ;
  • char : caractères ;
  • bool : booléen.

Je parlerai des variables pointées et de la mémoire un peu plus tard durant ce cours, car cela traite d'une partie plus complexe.

La directive "auto" permet de définir n'importe quelle variable et de la typer automatiquement.

Les opérateurs conditionnels

  • do ... while (...) ;
  • switch : case ... ;
  • if (...) ..., else if (...) ..., else ... ;
  • while (...) ... ;

Ces opérateurs conditionnels sont communs à de nombreux langages, ils ne nécessitent pas forcément d'exemples.

Les librairies

Le C++ peut inclure des libraires statiques (elles sont incluses dans le programme) et des libraires dynamiques (elles sont fournies par le système d'exploitation) comme par exemple les .dll sous Windows.

#include

Les fichiers requis par #include permettent de récupérer le code du fichier vers lequel on pointe, il est inclus dans le programme. Il concerne uniquement les variables.

#define

Permet de définir des variables globales et de les redéfinir au besoin.

namespace

Même chose que include, cependant il sert à inclure des fonctions.

Exercices à réaliser

Ces exercices "ne servent à rien" à proprement parler, si ce n'est vous donner les pré-requis de la syntaxe et des différentes fonctions de base. Ils vous obligeront aussi à faire quelques recherches sur internet concernant les différentes librairies à utiliser.

Exercice C++ : Syntaxes basiques

L'exercice est simple.

  1. Créer deux variables, a et b ;
  2. Ces deux variables recevront un entier (int) via la console ;
  3. Mettre ces deux variables dans un tableau ;
  4. Parcourir le tableau pour afficher les valeurs dans la console.

Exercice C++ : Tableau de Pythagore

Créer un tableau de Pythagore dans la console.

Astuce : on peut utiliser deux boucles FOR.

Exercice C++ : Nombre mystère

  1. Choisissez un intervalle donné ;
  2. Créer une variable avec un nombre aléatoire compris entre vos deux intervalles ;
  3. Créer une récupération de l'utilisateur pour vérifier le nombre, et indiquez si c'est plus ou moins ;
  4. Si l'utilisateur trouve le bon nombre, on quitte le programme.

Astuce : utiliser une boucle do ... while(...) est une bonne idée.

Exercice C++ : Créer une dichotomie

La dichotomie est un procédé mathématique qui permet d'obtenir le plus rapidement possible un entier a compris entre x et y sans savoir quel est l'entier a.

  1. En paramètre d'une méthode, passez deux paramètres pour les intervalles minimum et maximum ;
  2. Attribuer à une variable un nombre que l'on ne connait pas compris entre les deux intervalles ;
  3. Utiliser la dichotomie pour trouver le nombre que l'on ne connait pas.

Rappel dichotomie

On divise le total des intervalles en deux. Si ce total est supérieur à l'entier a, mon intervalle max devient la somme de mes intervalles. S'il est inférieur, c'est mon intervalle min qui prend cette valeur.

Bonne chance !

Code complet du premier cours

Voici le code complet et commenté du premier cours. Si vous avez des questions ou des remarques, je vous laisse me les poser en commentaires.

Télécharger le code


/* 
 * File:   main.cpp
 * Author: sacha
 *
 * Created on 8 octobre 2015, 16:34
 */

#include <iostream>
#include <cstdlib>

using namespace std;

/**
 * Exemple boucle FOR
 * 
 * - saisie de nombre
 * - utilisation d'un tableau fixe
 * - récupération de la taille d'un tableau fixed
 * - parcours du tableau
 * 
 */
void exampleFor() {
    
    // déclaration des variables
    
    int a;
    int b;
    
    // récupération des valeurs
    
    cout << "a = ";
    cin >> a;
    cout << "b = ";
    cin >> b;
    
    // structuration du tableau
    
    int tab[2] = { a, b };
    
    // récupération de la taille du tableau
    
    int tabSize = sizeof(tab) / 4;
    
    cout << tabSize;
    
    // parcours du tableau

    for (int i = 0; i < tabSize; i++) {
        cout << "i = " << i << " - " << tab << "\n";
    }
}
/**
 * Multiplication et doubles FOR : Tableau de Pythagore
 * 
 * - double for
 * - utilisation des caractères spéciaux
 * 
 */
void examplePythagore() {
    
    // premier FOR
    
    for (int i = 1; i <= 10; i++) {
        
        // second FOR
        
        for (int j = 1; j <= 10; j++) {
            
            // execute l'opération et ajoute une tabulation
            
            cout << i * j << "\t";
        }
        
        // saute une ligne
        
        cout << "\n" << endl;
    }
}
/**
 * Nombre mystèxe à trouver
 * 
 * - utilisation de la fonction rand
 * - génération aléatoire d'un nombre
 * - tentatives pour trouver le nombre dans un intervale donné
 * 
 */
void exampleRand() {
    
    // choisi un nouveau nombre aléatoire
    
    srand ( time(NULL) );
    int numberToFind = rand() % 100 + 1;
    int c;
    
    // on affiche le nombre à trouver
    
    cout << "Find the random num : " << numberToFind << "\n";
    
    do {
        
        // on récupère la saisie opération
        
        cin >> c;
        
        // on traite la donnée
        
        if (c > numberToFind) {
            cout << "Less !" << endl;
        }
        else if (c < numberToFind) {
            cout << "More !" << endl;
        }
        
    } 
    while (c != numberToFind);
    
    // fin du programme avec succès
    
    cout << "Done !";
}
/**
 * Example d'une dichotomie
 * 
 * - utilisation de la fonction rand()
 * - utilisation du while
 * 
 * @param xMin
 *      Intervalle de départ (minimum)
 * @param xMax
 *      Intervalle de fin (maximum)
 */
void exampleDichotomy(int xMin, int xMax) {
    
    // on défini un nouveau nombre aléatoire jusqu'au nombre max
    
    srand ( time(NULL) );
    int numberToFind = rand() % xMax + 1;
    
    // verbose : utilise pour débogguer le programme
    
    cout << "Started on : " << "[ " << xMin << " , " << xMax << " ] for " << numberToFind << endl;
    
    int attempt;
    int attemptedTimes = 0;
    
    // on lance la dichotomie
    
    while ( attempt != numberToFind) {
        
        // on divise le nombre par deux 
        
        attempt = (xMin + xMax) / 2;
        
        // on traite l'information en redéfinissant l'intervale
        
        if (numberToFind > attempt) {
            xMin = attempt;
        }
        else if (numberToFind < attempt) {
            xMax = attempt;
        }
        
        // verbose : utile pour le debug
        
        cout << "[ " << xMin << " , " << xMax << " ]"<< endl;
        
        attemptedTimes++;
    }
    
    // fin de la dichotomie
    
    cout << "Find number in : " << attemptedTimes;
}

/**
 * Départ du programme
 * 
 * @return 0
 */
int main () {
    
    // décommenter les fonctions pour les lancer
    
    //exampleFor();
    //examplePythagore();
    exampleRand();
    //exampleDichotomy(0, 100);
    
    return 0;
}

Articles similaires

Commentaires

Aucun commentaire

Ajouter un commentaire

Vous ne disposez pas les autorisations nécessaires pour poster un commentaire.