1 Sixième journée Éléments de C++ La programmation typée Éléments de C++ La programmation typée
2 Le langage C++ procéduraleLangage dit orienté objet, mais peut être utilisé de manière procédurale typéLangage typé structuréeProgrammation structurée impérativeProgrammation impérative CompiléCompilé procéduraleLangage dit orienté objet, mais peut être utilisé de manière procédurale typéLangage typé structuréeProgrammation structurée impérativeProgrammation impérative CompiléCompilé
3 Exemple
4 Les commentaires Comme pour le Scheme servent à aider la compréhension du code –on utilise // pour mettre un commentaire sur une ligne –on utilise /* et */ pour mettre un commentaire sur plusieurs lignes Un programme C++ est souvent difficile à lire et nécessite beaucoup de commentaires Un ratio de 50 % à 75 % est raisonnable. Comme pour le Scheme servent à aider la compréhension du code –on utilise // pour mettre un commentaire sur une ligne –on utilise /* et */ pour mettre un commentaire sur plusieurs lignes Un programme C++ est souvent difficile à lire et nécessite beaucoup de commentaires Un ratio de 50 % à 75 % est raisonnable.
5 Fonction main int main () { corps } ne peut pas porter un autre nom est le point d’entrée du programme appelle au besoin les autres procédures sert souvent à placer l’interface avec l’utilisateur termine toujours par « return 0; » int main () { corps } ne peut pas porter un autre nom est le point d’entrée du programme appelle au besoin les autres procédures sert souvent à placer l’interface avec l’utilisateur termine toujours par « return 0; »
6 Les types Un type représente un ensemble de définition d’une donnée Permet de vérifier à la compilation que les types sont respectés Limite le programmeur mais offre une sécurité supplémentaire Un type représente un ensemble de définition d’une donnée Permet de vérifier à la compilation que les types sont respectés Limite le programmeur mais offre une sécurité supplémentaire
7 Type entier : int Représente les entiers relatifs Valeur max et min Prédicats : >, =, <=, !=, == Opérations arithmétiques : +, -, *, /, % Représente les entiers relatifs Valeur max et min Prédicats : >, =, <=, !=, == Opérations arithmétiques : +, -, *, /, %
8 Type réel : float ou double Représente une partie des rationnels Prédicat : >, =, <=, == (à éviter) Opérations arithmétiques : +, -, *, /, floor(x), sin(x)... Représente une partie des rationnels Prédicat : >, =, <=, == (à éviter) Opérations arithmétiques : +, -, *, /, floor(x), sin(x)...
9 Les chaînes de caractères Représentent des phrases Composées de caractères string nom = "Benoit" ; Comparaison : if ( nom1 == noms2 ) {... } Opérateurs: + Représentent des phrases Composées de caractères string nom = "Benoit" ; Comparaison : if ( nom1 == noms2 ) {... } Opérateurs: +
10 Définition d’une constante gabarit : const type nom = valeur; définit une valeur qui ne changera pas durant l’exécution du programme toujours dans la fonction « main » est utilisable partout gabarit : const type nom = valeur; définit une valeur qui ne changera pas durant l’exécution du programme toujours dans la fonction « main » est utilisable partout
11 Définition d’une fonction gabarit : type_de_retour nom (liste_types+params) { corps_de_la_fonction return var_du_bon_type; } Toujours placée après la fonction main peut s’appeler dans n’importe quelle autre fonction différence avec Scheme : le typage gabarit : type_de_retour nom (liste_types+params) { corps_de_la_fonction return var_du_bon_type; } Toujours placée après la fonction main peut s’appeler dans n’importe quelle autre fonction différence avec Scheme : le typage
12 Correspondance math/C++ Opérateurs arithmétiques + - * / % Opérateurs logiques || && ! Bibliothèques Domaines et images (entiers, valeurs de vérité) Opérateurs arithmétiques + - * / % Opérateurs logiques || && ! Bibliothèques Domaines et images (entiers, valeurs de vérité)
13 Commandes atomiques Écriture –obtenu par l’opérateur << –transmet une valeur d’une variable ou d’une constante vers un « médium » –le médium le plus utilisé est cout (écran) –exemple const int nb = 3 ; // constante cout << “Il y a “ << nb << “ objets.” << endl ; Écriture –obtenu par l’opérateur << –transmet une valeur d’une variable ou d’une constante vers un « médium » –le médium le plus utilisé est cout (écran) –exemple const int nb = 3 ; // constante cout << “Il y a “ << nb << “ objets.” << endl ;
14 Premier programme #include using namespace std; int main() { const string nom="Benoit Fraikin"; // constante cout << "Mon nom est " << nom << "." << endl; return 0; } #include using namespace std; int main() { const string nom="Benoit Fraikin"; // constante cout << "Mon nom est " << nom << "." << endl; return 0; }
15 Les instructions structurelles La séquence est obtenue par la mise à la suite des instructions placées dans un bloc (entre accolades) ifLa sélection est obtenue par l’usage d’une instruction if whiledo-whileforL’ itération est obtenue par l’utilisation d’un while, d’un do-while ou d’un for. La séquence est obtenue par la mise à la suite des instructions placées dans un bloc (entre accolades) ifLa sélection est obtenue par l’usage d’une instruction if whiledo-whileforL’ itération est obtenue par l’utilisation d’un while, d’un do-while ou d’un for.
16 Création d’un bloc { liste_d_instructions } Le bloc sert à marquer une séquence de commande Il est utile en combinaison des autres instructions structurelles { liste_d_instructions } Le bloc sert à marquer une séquence de commande Il est utile en combinaison des autres instructions structurelles
17 Type valeur de vérité: bool Représente ”vrai” ou “faux” Valeur : true, false Opérations logiques : ||, &&, ! Peut s’utiliser directement comme condition if est_vide { action } else { action } Représente ”vrai” ou “faux” Valeur : true, false Opérations logiques : ||, &&, ! Peut s’utiliser directement comme condition if est_vide { action } else { action }
18 Création d’un if if (test1) bloc_d_instructions1 else if (test2) bloc_d_instructions2... else bloc_d_instructionsN Le « if » permet de créer une sélection Attention au prédicat d’égalité en C++ if (test1) bloc_d_instructions1 else if (test2) bloc_d_instructions2... else bloc_d_instructionsN Le « if » permet de créer une sélection Attention au prédicat d’égalité en C++
19 Exemple int predecesseur (int n) { if (n == 0) { return 0; } else { return n-1; } int predecesseur (int n) { if (n == 0) { return 0; } else { return n-1; }
20 Création d’un for for (int i=0; i<n; i++) bloc_d_instructions cette boucle sert principalement à compter (boucle de comptage) des éléments énumère i de 0 à n-1 ( n éléments) se construit à partir d’un while for (int i=0; i<n; i++) bloc_d_instructions cette boucle sert principalement à compter (boucle de comptage) des éléments énumère i de 0 à n-1 ( n éléments) se construit à partir d’un while
21 Exemple void affiche_n_fois_s (int n, string s) { for (int i = 0; i < n; i++) { cout << s ; } return; } void affiche_n_fois_s (int n, string s) { for (int i = 0; i < n; i++) { cout << s ; } return; }