Table des matières

Note de préparation d'atelier pour débuter en langage C/C++

Si un peu de musique vous aide à vos concentrer : https://www.musicforprogramming.net

Pré-requis

:!: ET C'EST TOUT :!:

Intro

?

Nécessaires

Pour compiler un programme C ou C++ sur n'importe quelle distribution Linux comme Ubuntu, Red Hat, Fedora, Debian et autres distributions Linux :

« GNU Compiler Collection inclut des applications (front ends) pour C, C++, Objective-C, Fortran, Ada, Go, et D, ainsi que des bibliothèques pour ces langages (libstdc++,…). GCC a été écrit à l'origine comme compilateur pour le système d'exploitation GNU. Le système GNU a été développé pour être 100% libre, libre en ce sens qu'il respecte la liberté de l'utilisateur. »

GCC peut être installé par défaut sur votre machine Linux/Debian, exemple ouvrez votre terminal habituel et tapez la commande :

$ gcc --version
gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Ensuite regardons le manuel fourni avec gcc en utilisant la commande

$ man gcc

Le manuel gcc étant très conséquent, nous pouvons utliser tldr

C

Pourquoi utiliser C

Avant de programmmer

  1. Identifier un problème à résoudre
  2. Définir les objetcifs du programme
  3. Choisir une méthode pour l'écrire
  4. Créer le programme
  5. Compiler et lier
  6. Corriger
  7. Exécuter et observer les résultats

Structure du programme

Fonction main()

C'est le seul bloc obligatoire en C. Ainsi le programme le plus court que l'on peut écrire en C est

main(){ }

Ou encore sous cette forme

main()
{
}

Appel d'un fichier #include

L'instcrution d'appel #include indique au compilateur C qu'il doit inclure le contenur d'un fichier pendant la compilation du programme. Il sont aussi appelé fichiers d'en tête. Plusieurs de ces fichiers sont livrés avec le compilateur, comme par exemple stdio.h, extension de ces fichiers est .h. Dans notre code cela prendra la forme

#include <stdio.h>
 
int main()
{
/* nos sous-programmes aussi appelés fonctions */
}

Ou encore

#include <stdio.h>
 
int main()
{
    /* Ce programme affiche Hello World! */
    printf ("Hello World!\n");
}

<tip note> En C les espaces blancs n'ont pas d'incidence dans l'execuation du proramme, comme cela est le cas en python, on peut mettre tab, space, newline, presque n'importe où.

La définition de variable

Une variable est un nom donnée à une zone mémoire qui est nécessaire au programme pour stocker ses données en cours d'exécution.

En C une varibale doit être définie avant d'être utlisée ; cette définition indique son nom au compilateur et le type de données que l'on pourra y stocker.

#include <stdio.h>
 
int main()
{
    int a,b,c;
 
/* nos sous-programmes aussi appelés fonctions */
}

Dans cette exemple la variable définie int a, b, c; définit trois variables appelées a, b et c, qui contiendront chacune une valeur entière.

La déclaration de fonction

Une déclaration de fonction ne doit pas être confondue avec définition de fonction. La déclaration de fonction indiuqe au compilateur le nom et les arguments d'une fonction qui sont à utiliser dans le programme. La définition de fonction contient les instructions propres à cette fonction. La déclaration peut être facultative si la fonction peut être définie avant tout appelà elle.

Les instructions

Elles contiennent le travail réalisé par le programme. Elles affichent les informations sur l'écran, lisent les données saisies au clavier, efectuent des opérations mathématiques, lisent les fichiers… Chaque instruction occupe générale une ligne et se termine par ;.

Écire un programme « qui répète » une entrée standard

Soit un programme nommé perroquet.c

/* perroquet.c : programme qui répète ce qu'il vient de lire au clavier */
#include <stdlib.h>
#include <stdio.h>
 
int lire_clavier(char *str, int taille)
{
    int i;
    fgets(str, taille, stdin);
    str[taille-1] = '\0';
    for(i=0; str[i]; i++) /* supprime le retour chariot */
    {
        if(str[i] == '\n')
        {
            str[i] = '\0';
            break;
        }
    }
    return(i); /* Renvoie 0 si la chaine est vide */
}
int main()
{
    char buffer[80];
 
    printf("Entrez une ligne et validez avec Entrée\n");
    lire_clavier(buffer, sizeof(buffer));
    printf("Vous avez écrit : '%s'\n", buffer);
 
    exit(EXIT_SUCCESS);
}

C++

langage de programmation créé par Bjarne Stroustrup et son équipe aux Laboratoires Bell en 1979. Quarante ans plus tard, c'est l'une des language les plus utilisées dans le monde.

C++ est dérivé du langage de programmation C ; le ++ est l'opérateur d'incrémentation en C. Le but de Bjarne était d'ajouter une programmation orientée objet au langage C, qui était et est toujours un langage bien respecté pour sa portabilité et ses fonctionnalités de bas niveau.

Parmi d'autres choses :

Chaque variable a un type, qui représente le type d'information que vous pouvez y stocker. Cela indiqueau compilateur la quantité de mémoire à mettre de côté pour la variable et sert à définir exactement ce que vous pouvez faire avec la variable.

En C++, les noms de variables se composent uniquement de lettres majuscules/minuscules, de chiffres et/ou de traits de soulignement.

C++ est connu comme un langage fortement typé. Si vous essayez de donner un nombre décimal à une valeur entière, vous obtiendrez des résultats non désirés, des avertissements ou des erreurs.

Écire « Bonjour »

Ouvrons un fichier hello.cpp, l'extension .cpp signifaint C++, dans un terminal avec l'éditeur de votre choix

// g++ 7.3.0
#include <iostream>
 
int main() 
{ 
 
  std::cout << "Hello World!\n";
 
}

Compilation time: 0.33 sec, absolute running time: 0.07 sec, cpu time: 0.01 sec, memory peak: 3 Mb, absolute service time: 0,41 sec

C'est semblable à une phrase

Les commenatires dans le code pour faciliter la collaboration

Il y a deux types de commentaires de code en C++ :

Un commentaire d'une seule ligne commente une seule ligne et est indiqué par deux barres obliques avant // :

// Imprime "bonjour !" sur le terminal
std::cout <<< "hi!"

ou encore

std::cout <<< "hi !"; // Imprime "bonjour" dans le terminal !

Un commentaire de plusieurs lignes commencera par plusieurs lignes et sera indiqué par /* pour commencer le commentaire, et */ pour terminer le commentaire :

/* Tout ceci est commenté.
std::cout <<< "hi" !
Rien de tout ça ne sera interprété par le code ! */

Compilons puis lançons notre « Bonjour »

Pour compiler avec gcc

-(~/c-c++_test)------------------------------------------------(user@ubiome0)-
`--> g++ hello.cpp -o hello
.-(~/c-c++_test)------------------------------------------------(user@ubiome0)-
`--> make hello
make: « hello » est à jour.

Puis lançons notre programme

.-(~/c-c++_test)------------------------------------------------(user@ubiome0)-
`--> ./hello
Hello World!

Testons le standard de notre code

Autres solutions

Solution 1

//g++ 7.3.0
 
#include  <stdio.h>
 
int main(void)
{
    printf("Hello, world!\n");
    return 0;
}

Compilation time: 0.13 sec, absolute running time: 0.07 sec, cpu time: 0.01 sec, memory peak: 3 Mb, absolute service time: 0,2 sec

solution 2

//g++  7.3.0
 
#include <iostream>
 
using namespace std;
 
int main()
{
    cout << "Hello, world!" << endl;
    return 0;
}

Compilation time: 0.43 sec, absolute running time: 0.1 sec, cpu time: 0.02 sec, memory peak: 3 Mb, absolute service time: 0,53 sec

Ref et biblio