20 juillet 2018

Principes de syntaxe

Principes de syntaxe

Exemple de code

#include <iostream>
using namespace std;

int main() 
{
  cout << "Hello, World!" << endl;
  // commentaire sur une ligne
  /*
   commentaire sur plusieurs lignes
  */
  return 0;
}

Principes de syntaxe

Explications

#include <iostream>

using namespace std;
  • #include est une commande préprocesseur qui permet de charger des bibliothèques ou library (fichiers en .h) et d'utiliser les fonctions qui y sont codées. <iostream> pour "Standard Input / Output Streams Library".
  • Un namespace, ou espace de nom (parfois aussi espace de nommage, voire référentiel lexical) est une zone de déclaration d'identificateurs permettant au compilateur de résoudre les conflits de noms.

Principes de syntaxe

Explications

int main() 
{
  cout << "Hello, World!" << endl;
  // commentaire sur une ligne
  /*
   commentaire sur plusieurs lignes
  */
  return 0;
}
  • int indique le type de la variable en sortie de la function main.
  • cout et endl sont deux fonctions de la librarie iostream et permet d'écrire dans le flux de sortie (dans le terminal) la phrase "Hello, World!"

Principes de syntaxe

Explications

  // commentaire sur une ligne
  /*
   commentaire sur plusieurs lignes
  */
  • Pour commenter une ligne il suffit d'ajouter // au début
  • Pour commenter plusieurs lignes, il faut les entourer de /* et */

Principes de syntaxe

Incrément / Décrément et attribution en C++

Code initial racourci
x = x+1; x++;
x = x-1; x--;
x = x + y; x += y;
x = x - y; x -= y;
x = x * y; x *= y;
x = x / y; x /= y;

Les fonctions en C++

Comment créer une fonction en C++?

double sum(double a, double b)
{
    return a+b;
}
  • double devant sum correspond au type de la sortie
  • sum est le nom de la fonction
  • double a, double b sont les paramètres de la fonctions (déclarés comme double)
  • ; à la fin des instructions ( source d'erreur de compilation )

Les objets

Quels sont les différents type d'objets en C++?

Type de variables Signification
int entiers
float réel simple précision
double réel double précision
long double réel précision étendu
char caractère
bool booléen
void vide

Quels sont les différents type d'objets en C++?

Type de variables Signification
int entiers
float réel simple précision
double réel double précision
long double réel précision étendu
char caractère
bool booléen
void vide

Les entiers (1/2)

Type d'entiers Taille Signe Autre nom
int taille normale (de \(-32768\) à \(32767\)) signed : positif ou négatif signed
short int taille normale (de \(-32768\) à \(32767\)) signed : positif ou négatif signed short, short
long int grande taille (32 bit) (de \(-2,147,483,648\) à \(2,147,483,647\)) signed : positif ou négatif long, signed long
long long int grande taille (64 bit) (de \(-9,223,372,036,854,775,808\) à \(9,223,372,036,854,775,807\)) signed : positif ou négatif long long, signed long long

Les entiers (2/2)

Type d'entiers Taille Signe Autre nom
unsigned int taille normale (de \(0\) à \(65535\)) unsigned : positif ou nul unsigned
unsigned short int taille normale (de \(0\) à \(65535\)) unsigned : positif ou nul unsigned short
unsigned long int grande taille (32 bit) (de \(0\) à \(4,294,967,295\)) signed : positif ou négatif unsigned long
unsigned long long int grande taille (64 bit) (de \(0\) à \(18,446,744,073,709,551,615\)) unsigned : positif ou nul unsigned long long

Quels sont les différents type d'objets en C++?

Type de variables Signification
int entiers
float réel simple précision
double réel double précision
long double réel précision étendu
char caractère
bool booléen
void vide

Les réels

Type de réels Taille Signe
float taille normale (de \(-3.4.10^{38}\) à \(3.4.10^{38}\)) signed : positif ou négatif
double grande taille (de \(-1.7.10^{308}\) à \(-1.7.10^{308}\)) signed : positif ou négatif
long double grande taille (de \(-1.7.10^{308}\) à \(-1.7.10^{308}\)) signed : positif ou négatif

Quels sont les différents type d'objets en C++?

Type de variables Signification
int entiers
float réel simple précision
double réel double précision
long double réel précision étendu
char caractère
bool booléen

Les caractères

Type de caractères Taille Signe
signed char taille normale (de \(-128\) à \(127\)) signed : positif ou négatif
unsigned char grande taille (de \(0\) à \(255\)) unsigned : positif ou null



unsigned char est utile lorsque l'on travaille avec des caratères non ASCII. Si ni signed ou unsigned n'est renseigné le choix est pris par le compileur.

Quels sont les différents type d'objets en C++?

Type de variables Signification
int entiers
float réel simple précision
double réel double précision
long double réel précision étendu
char caractère
bool booléen
void vide

Problèmes de typage

Typage des variables en mathématiques

Attention :

Lors des opérations mathématiques, ne pas mélanger les types d'objet!

Par exemple si on définit int Q comme étant le quotient de int A=1 et de double B=1.5.

De quelle forme sera le résultat? 0, 1, 0.66?

Il faudra faire attention au typage des objets à manipuler…

Les boucles

Les boucles

Trois types de boucles peuvent être écrites en C++ :

  • while
  • do … while
  • for

Les boucles

Trois types de boucles peuvent être écrites en C++ :

  • while
  • do … while
  • for

While

int compteur = 0; // Définition de la variable compteur comme un entier int
    
while (compteur < 10)
{
    compteur++;
}


La condition du while se situe entre parenthèse. Les instructions à répéter sont entre accolades et terminées d'un point virgule

Les boucles

Trois types de boucles peuvent être écrites en C++ :

  • while
  • do … while
  • for

do … While

int compteur = 0;

do
{
    compteur++;
} while (compteur < 10);


Autre vision du while

Les boucles

Trois types de boucles peuvent être écrites en C++ :

  • while
  • do … while
  • for

For

for (int compteur = 0 ; compteur < 10 ; compteur++)
{
    //intructions;
}



Dans les conditions du for, il y a 3 arguments séparés d'un point virgule :

  • Initialisation (et/ou déclaration) de la variable
  • La condition de fin de la boucle for
  • La condition d'incrémentation de la variable

Les structures de contrôle

Les structures de contrôle

Trois structures :

  • if
  • if … else
  • switch

Les structures de contrôle

Trois structures :

  • if
  • if … else
  • switch

Le if

if (conditions)
    execution;

exemple :

#include<iostream>
using namespace std;

int test(int a)
{
    if (a > 10)
        cout << "a est plus grand que 10" << endl;
    return 0;
}

Les structures de contrôle

Trois structures :

  • if
  • if … else
  • switch

Le if ... else ...

if (conditions) instruction1;
else instruction2;

exemple :

#include <iostream>
using namespace std;

int test(int a)
{
    if (a > 10)
        cout << "a est plus grand que 10" << endl;
    else
        cout << "a est inférieur ou égal à 10" << endl;
    return 0;
}

Les structures de contrôle

Trois structures :

  • if
  • if … else
  • switch

Le switch

  switch(expression)
    {
    case constante1:
        instructions1;
    case constante2:
        instructions2
    ...
    default:
        instructions_default
    }

exemple :

#include <iostream>
using namespace std;

int test(int a)
{
  switch(a)
  {
  case 1 :
    cout << "a vaut 1" << endl;
    break;
  case 2 :
    cout << "a vaut 2" << endl;
    break;
  default :
    cout << "a ne vaut ni 1, ni 2"<< endl;
  break;
  }
  return 0;
}

La fonction somme

Exemple de fonction somme

Faire la somme d'une matrice et d'un scalaire est compliqué en C++ sans charger de librairie.

Il faudrait définir l'objet matrice et ensuite faire une somme terme à terme.