Introduction C / C++ Outils et Logiciels d Optimisation - Cours 4 et 5 P. Pesneau pierre.pesneau@math.u-bordeaux1.fr Université Bordeaux 1 Bât A33 - Bur 256
Introduction Introduction C / C++ Ceci n est qu une introduction à la programmation C / C++. On ne présente ici qu un minimum afin de pouvoir écrire rapidement un programme. On ne traitera pas des concepts objets et de la programmation objet. La synthaxe utilisée est celle du C aggrémentée de certaine fonctionnalités très utiles du C++. On utilisera quelques objets mais sans présenter les concepts qui sont derrières.
Introduction C / C++ Structure d un programme #include <iostream> // Inclusion des définitions de #include "mes_trucs.h" // fonction et objets externes typedef int entier; // définitions de nouveaux types int NbNodes; // déclarations de variables globales // fonctions supplémentaires int main(int argc, char** argv){ } // déclarations et instructions vector<int> V(10); for (int i=0; i < 10; i++){ cout << V[i]; } return 0;
Types Introduction C / C++ int : entier long : entier double précision float : réel double : réel double précision bool : booléen string : chaîne de caractères (nécessite #include <string>)
Types Introduction C / C++ int : entier long : entier double précision float : réel double : réel double précision bool : booléen string : chaîne de caractères (nécessite #include <string>) Vecteurs : vector<type> nom vec(nb elem) (nécessite #include <vector>) l indexation d un vecteur de n éléments va de 0 à n 1.
Introduction C / C++ Variables - Instructions Variables : type nom variable; int i; double x = 0.0; // Avec initialisation int x[10]; // Tableau de 10 entiers (de 0 à 9) La durée de vie d une variable est limitée au bloc {... } où elle est déclarée.
Introduction C / C++ Variables - Instructions Variables : type nom variable; int i; double x = 0.0; // Avec initialisation int x[10]; // Tableau de 10 entiers (de 0 à 9) La durée de vie d une variable est limitée au bloc {... } où elle est déclarée. Instructions : Chaque instruction se finit par un; Une instruction peut être écrite sur plusieurs lignes.
Introduction C / C++ Variables - Instructions Variables : type nom variable; int i; double x = 0.0; // Avec initialisation int x[10]; // Tableau de 10 entiers (de 0 à 9) La durée de vie d une variable est limitée au bloc {... } où elle est déclarée. Instructions : Chaque instruction se finit par un; Une instruction peut être écrite sur plusieurs lignes. Commentaires : /* Commentaires sur plusieurs lignes */ // Commentaire jusqu à la fin de la ligne
Opérateurs Introduction C / C++ Opérateurs numériques : + - * / ++ -- = += -= *= /= == < <= > >=!=
Opérateurs Introduction C / C++ Opérateurs numériques : + - * / ++ -- = += -= *= /= == < <= > >=!= Opérateurs booléens : && ==
Opérateurs Introduction C / C++ Opérateurs numériques : + - * / ++ -- = += -= *= /= == < <= > >=!= Opérateurs booléens : && == Opérateurs sur les flots : << >>
Introduction C / C++ Boucles - Alternative Boucles pour : for (initialisations; test continuité; incrément){ instructions } Il peut y avoir plusieurs initialisations séparées par des virgules.
Introduction C / C++ Boucles - Alternative Boucles pour : for (initialisations; test continuité; incrément){ instructions } Il peut y avoir plusieurs initialisations séparées par des virgules. Boucle tant que : while (test continuité) { instructions }
Introduction C / C++ Boucles - Alternative Boucles pour : for (initialisations; test continuité; incrément){ instructions } Il peut y avoir plusieurs initialisations séparées par des virgules. Boucle tant que : while (test continuité) { instructions } Alternative si : if (expr booléenne) { instructions à effectuer quand expr booléenne est vraie } else { instructions à effectuer quand expr booléenne est fausse }
Fonctions Introduction C / C++ type ret nom fct(param1, param2,...){ instructions return élément retourné; } avec param1 pouvant être : type & nom param const type & nom param pour une procédure, on remplace le type retourné par void et il n y a pas de return
Introduction C / C++ Entrées / Sorties Les entrées / sorties se font par des objets corespondants à des flots de données. nécessite #include <iostream> utiliser using namespace::std cout : flot de données sur la sortie standard (écran). cin : flot de données sur l entrée standard (clavier). opérateurs << >>. cout << i = << i << endl; endl : retour à la ligne. cin >> i;
Pointeurs Introduction C / C++ Emplacement mémoire pouvant stocker l adresse d un autre emplacement mémoire Déclaration : type pointé * nom pointeur; Obtention de l adresse d une variable & : int i; int * p; p = &i; Accès au pointeur directement par la variable pointeur. Accès au contenu du pointeur : int i; int * p; p = &i; *p = 10;
Pointeurs Introduction C / C++ Allocation dynamique : Allocation : nom pointeur = new type pointé; Libération mémoire : delete nom pointeur;
Pointeurs Introduction C / C++ Allocation dynamique : Allocation : nom pointeur = new type pointé; Libération mémoire : delete nom pointeur; Pointeurs et tableaux : Les tableaux peuvent être vu comme un pointeur sur un ensemble de cases : int * Tab; Allocation dynamique de tableaux : Tab = new int[10]; Libération d un tableau : delete [] Tab;
Introduction C / C++ Concert / Cplex Exemple en live sur ATSP