54
Programmation Un aveniruneformation , Initiation Aux Langages C et C++ Bruno Permanne 2006

Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Embed Size (px)

Citation preview

Page 1: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Programmation

Un avenir une formation,

Initiation Aux Langages C et C++

Bruno Permanne 2006

Page 2: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

ProgrammationSommaire

Premier exemple CPremier exemple C++L'environnement wxDevCPPAlgorithmiqueAlgorithmique: exempleLes langages C et C++Les structures de contrôle

Bruno Permanne 2006

Page 3: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Motivation Initiale

Pour des raisons intellectuelles Devenir acteur du processus informatique

Pour des raisons culturelles Mieux comprendre la culture du monde informatique

Pour des raisons sociales L’informatique est imbriquée à l’extrême dans tous les processus sociaux

Pour des raisons professionnelles Maîtrise(de la machinerie) pour la maintenance des réseaux de terrain

Pour bénéficier d’un logiciel sur mesure Application comportant la convivialité et juste les fonctionnalités nécessaires

Pourquoi apprendre à programmer ?

Retour sommaire Bruno Permanne 2006

Page 4: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Motivation Initiale

C’est un langage de haut niveau Plus proche du langage naturel

C’est un langage de bas niveau Plus proche de la machine

C’est un langage pouvant être structuré Le découpage en fonctions, modules permet une meilleure maintenabilité

C’est le langage (de tous) les systèmes d’exploitation modernes Windows, Unix, Linux, MacOs, etc.

C’est un langage qui en a inspiré beaucoup d’autres En particulier pour le développement de l’internet: PHP, JAVA

Beaucoup d’outils et de manuels sont gratuits Environnements disponibles et téléchargeables sur internet: DevCPP,Eclipse, etc.

Pourquoi les langages C et C++ (version moderne du C) ?

Retour sommaireBruno Permanne 2006

Page 5: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Idées reçues

Il faut être matheux ! Non (en dehors des problèmes mathématiques), mais il faut être:

o Logiqueo Rigoureuxo Inventif, créatif, imaginatif

La programmation est une affaire de spécialistes (informaticiens ?) Non, c’est un peu comme si seuls les professeurs de lettre étaient autorisés à lire

Il faut être un intellectuel Non, il ne faut pas nécessairement faire de longues études, ni manipuler des concepts

abstraits Il faut étudier longtemps avant d’écrire son premier programme

Non, au bout de 10 minutes, on peut tester son premier (très petit) programme; au bout de quelques heures on peut tester son premier programme qui fait quelque chose d’utile.

Sur les compétences supposées des programmeurs !

Retour sommaireBruno Permanne 2006

Page 6: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Objectifs, moyens

Organisation du cours 3 séances de cours de de 2H (parmi les 7 prévues dont réseaux et superviseurs) Quelques séances de travaux pratiques (sur les 6 prévues) Apprentissage par l’exemple

Outils Environnement de développement wxDevCPP

Et organisation pédagogique

Retour sommaireBruno Permanne 2006

Page 7: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Premier exempleLe programme « Bonjour monde ! »

Retour sommaireBruno Permanne 2006

Page 8: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Premier exemple CLe programme « Bonjour monde ! »

/* Notre premier programme en C */#include <stdio.h>int main(){ printf(“Bonjour Monde\n"); return 0;}

/* Notre premier programme en C */#include <stdio.h>int main(){ printf(“Bonjour Monde\n"); return 0;}

Ce programme est un programme ‘source’ Il est écrit dans un fichier texte (fichier ‘ascii’) Ce fichier s’appelle par exemple Hello.c Par convention et pour une meilleure lisibilité, on

réalise une indentation (un décalage) des portions de code de niveau inférieur, ici les lignes printf et return.

Retour sommaireBruno Permanne 2006

Page 9: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Premier exemple CLe programme « Bonjour monde ! »

Le programme source à besoin d’être traduit pour pouvoir être exécuté car la machine (le microprocesseur) ne sait pas lire un texte !)

Il y a deux méthodes:

– l’utilisation d’un INTERPRETEUR

– l’utilisation d’un COMPILATEUR

Fichiers source Interpréteur Exécutionnon autonome

Traduction et exécutionligne par ligne

Fichiers source Compilateur Fichier exécutable

Exécutionautonome

TraductionGlobale

Retour sommaireBruno Permanne 2006

Page 10: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Premier exemple CLe programme « Bonjour monde ! »

>Bonjour Monde>>Bonjour Monde>

Voilà le résultat de l’exécution de ce programme

Le programme s ’exécute en mode console c’est à dire en mode texte non fenêtré

Retour sommaireBruno Permanne 2006

Page 11: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Premier exemple CLe programme « Bonjour monde ! »

/* Notre premier programme en C */#include <stdio.h>int main(){ printf(“Bonjour Monde\n"); return 0;}

/* Notre premier programme en C */#include <stdio.h>int main(){ printf(“Bonjour Monde\n"); return 0;}

Ceci est un commentaire Un commentaire est situé entre /* et */ En dehors des commentaires, le C et le C++ sont

sensibles à la casse (majuscule / minuscule). Par exemple, return est différent de Return

Retour sommaireBruno Permanne 2006

Page 12: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Premier exemple CLe programme « Bonjour monde ! »

/* Notre premier programme en C */#include <stdio.h>int main(){ printf(“Bonjour Monde\n"); return 0;}

/* Notre premier programme en C */#include <stdio.h>int main(){ printf(“Bonjour Monde\n"); return 0;}

#include est une ‘directive d’inclusion’ Elle signifie qu’il faut placer ici le texte

contenu dans le ‘fichier d’entête’ stdio.h Les balises <> signifient que ce fichier est un

fichier faisant partie du C lui-même Un fichier d’entête écrit par vous sera placé

entre “ et “

Retour sommaireBruno Permanne 2006

Page 13: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Premier exemple CLe programme « Bonjour monde ! »

/* Notre premier programme en C */#include <stdio.h>int main(){ printf(“Bonjour Monde\n"); return 0;}

/* Notre premier programme en C */#include <stdio.h>int main(){ printf(“Bonjour Monde\n"); return 0;}

int main() est une entête de définition de fonction Une fonction est une portion de code écrite une

fois identifiée par un nom et qu’on peut réutiliser plusieurs fois (appel à la fonction).

La fonction main est la fonction par laquelle le programme commence à s’exécuter, elle est appelée par le système d’exploitation.

Cette fonction est obligatoire pour tout programme

Retour sommaireBruno Permanne 2006

Page 14: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Premier exemple CLe programme « Bonjour monde ! »

/* Notre premier programme en C */#include <stdio.h>int main(){ printf(“Bonjour Monde\n"); return 0;}

/* Notre premier programme en C */#include <stdio.h>int main(){ printf(“Bonjour Monde\n"); return 0;}

Les instructions sont placées entre accolades { }

Ici les accolades déterminent aussi les limites des actions à effectuer par la fonction main

Retour sommaireBruno Permanne 2006

Page 15: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Premier exemple CLe programme « Bonjour monde ! »

/* Notre premier programme en C */#include <stdio.h>int main(){ printf(“Bonjour Monde\n"); return 0;}

/* Notre premier programme en C */#include <stdio.h>int main(){ printf(“Bonjour Monde\n"); return 0;}

Ceci est un appel à la fonction printf Il s’agit d’une instruction Une instruction se termine toujours par un

point-virgule La fonction printf permet l’affichage sur

l’écran de l’ordinateur du texte (chaine de caractère) “Bonjour monde\n"

La définition de la fonction printf se trouve dans le fichier stdio.h

\n est un caractère de contrôle qui provoque un retour à la ligneRetour sommaire

Bruno Permanne 2006

Page 16: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Premier exemple CLe programme « Bonjour monde ! »

/* Notre premier programme en C */#include <stdio.h>int main(){ printf(“Bonjour Monde\n"); return 0;}

/* Notre premier programme en C */#include <stdio.h>int main(){ printf(“Bonjour Monde\n"); return 0;}

Ceci est une autre instruction puisqu’elle se termine par un point-virgule

Elle indique que la fonction main doit se terminer et retourner la valeur entière 0 (le int avant main), ce qui signifie que tout s’est bien passé

Retour sommaireBruno Permanne 2006

Page 17: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Premier exemple CLe programme « Bonjour monde ! »

/* Notre premier programme en C */#include <stdio.h> int main(){ printf(“Bonjour Monde\n");return 0;}/* Notre premier programme en C */#include <stdio.h> int main(){ printf(“Bonjour Monde\n");return 0;}

En fonction des règles sur le point-virgule et sur les accolades, ce programme est le même que le précédent

Retour sommaireBruno Permanne 2006

Page 18: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Premier exempleLe programme « Bonjour monde ! »

Retour sommaireBruno Permanne 2006

Page 19: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Premier exemple C++Le programme « Bonjour monde ! »

// Notre premier programme en C ++#include <cstdlib>#include <iostream>using namespace std;int main(){ cout << "Hello, world" << endl; return EXIT_SUCCESS;}

// Notre premier programme en C ++#include <cstdlib>#include <iostream>using namespace std;int main(){ cout << "Hello, world" << endl; return EXIT_SUCCESS;}

// est un commentaire C++, il est actif jusqu’à la fin de la ligne courante

Retour sommaireBruno Permanne 2006

Page 20: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Premier exemple C++Le programme « Bonjour monde ! »

// Notre premier programme en C ++#include <cstdlib>#include <iostream>using namespace std;int main(){ cout << "Hello, world" << endl; return EXIT_SUCCESS;}

// Notre premier programme en C ++#include <cstdlib>#include <iostream>using namespace std;int main(){ cout << "Hello, world" << endl; return EXIT_SUCCESS;}

2 fichiers sont inclus Il n’est pas obligatoire de spécifier

l’extension qui peut être en fait souvent .hpp

On peut stocker ce fichier source dans un fichier texte nommé Hello.cpp

Retour sommaireBruno Permanne 2006

Page 21: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Premier exemple C++Le programme « Bonjour monde ! »

// Notre premier programme en C ++#include <cstdlib>#include <iostream>using namespace std;int main(){ cout << "Hello, world" << endl; return EXIT_SUCCESS;}

// Notre premier programme en C ++#include <cstdlib>#include <iostream>using namespace std;int main(){ cout << "Hello, world" << endl; return EXIT_SUCCESS;}

On spécifie ici l’utilisation d’un espace de noms

L’espace de noms permet une meilleure gestion des fichiers d’entête inclus

L’espace de noms std contient les noms des fonctions et variables standards du C++

Retour sommaireBruno Permanne 2006

Page 22: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Premier exemple C++Le programme « Bonjour monde ! »

La fonction principale int main() Elle peut être définie aussi par

int main(int argc, char *argv[]) C’est une définition avec des paramètres Les paramètres de la fonction main (si

nécessaires) sont passés par l’utilisateur lors du lancement du programme

// Notre premier programme en C ++#include <cstdlib>#include <iostream>using namespace std;int main(){ cout << "Hello, world" << endl; return EXIT_SUCCESS;}

// Notre premier programme en C ++#include <cstdlib>#include <iostream>using namespace std;int main(){ cout << "Hello, world" << endl; return EXIT_SUCCESS;}

Retour sommaireBruno Permanne 2006

Page 23: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Premier exemple C++Le programme « Bonjour monde ! »

Toujours les accolades qui délimitent le traitement à effectuer

// Notre premier programme en C ++#include <cstdlib>#include <iostream>using namespace std;int main(){ cout << "Hello, world" << endl; return EXIT_SUCCESS;}

// Notre premier programme en C ++#include <cstdlib>#include <iostream>using namespace std;int main(){ cout << "Hello, world" << endl; return EXIT_SUCCESS;}

Retour sommaireBruno Permanne 2006

Page 24: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Premier exemple C++Le programme « Bonjour monde ! »

La fonction cout << est l’équivalent C++ du printf mais cout << est plus facile à utiliser.

Cette fonction est définie dans le fichier iostream

endl correspond au \n utilisé dans le printf Un programme en C fonctionne en C++

(compatibilité ascendante) On aurait donc pu ici utiliser le printf, mais

cela n’aurait pas eu d’intérêtRetour sommaire

// Notre premier programme en C ++#include <cstdlib>#include <iostream>using namespace std;int main(){ cout << "Hello, world" << endl; return EXIT_SUCCESS;}

// Notre premier programme en C ++#include <cstdlib>#include <iostream>using namespace std;int main(){ cout << "Hello, world" << endl; return EXIT_SUCCESS;}

Bruno Permanne 2006

Page 25: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Premier exemple C++Le programme « Bonjour monde ! »

Voilà comment écrire ce programme si on n’utilise pas le namespace, la fonction cout devient std::cout

:: est l’opérateur de résolution de portée dont nous parlerons beaucoup plus tard.

Retour sommaire

// Notre premier programme en C ++#include <cstdlib>#include <iostream>

int main(){ std::cout << "Hello, world" << endl; return EXIT_SUCCESS;}

// Notre premier programme en C ++#include <cstdlib>#include <iostream>

int main(){ std::cout << "Hello, world" << endl; return EXIT_SUCCESS;}

Bruno Permanne 2006

Page 26: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Premier exemple C++Le programme « Bonjour monde ! »

return EXIT_SUCCESS veut dire la même chose que return 0, mais est plus évident.

Retour sommaire

// Notre premier programme en C ++#include <cstdlib>#include <iostream>using namespace std;int main(){ cout << "Hello, world" << endl; return EXIT_SUCCESS;}

// Notre premier programme en C ++#include <cstdlib>#include <iostream>using namespace std;int main(){ cout << "Hello, world" << endl; return EXIT_SUCCESS;}

Bruno Permanne 2006

Page 27: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Premier exempleLe programme « Bonjour monde ! »

Retour sommaireBruno Permanne 2006

Page 28: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

AlgorithmiqueComment bien poser un problème

Retour sommaireBruno Permanne 2006

Page 29: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

AlgorithmiqueL’algorithme

Un algorithme est la traduction en langage naturel du découpage séquentiel d’une action

Il ne décrit donc que des actions pouvant être identifiées comme ayant un début et une fin

On parle d’approche neumannienne du mathématicien John Von Neumann (1903/1957), qui en est l’inventeur .

Cette approche est différente de l’approche évènementielle que nous aborderons plus tard.Retour sommaire

1. Commencer le programme2. Afficher "Bonjour“3. Demander un nombre n4. Afficher le nombre n5. Finir le programme

1. Commencer le programme2. Afficher "Bonjour“3. Demander un nombre n4. Afficher le nombre n5. Finir le programme

Bruno Permanne 2006

Page 30: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

AlgorithmiqueL’arbre programmatique

Retour sommaire

Bonjourn: entier

Bonjourn: entier

SaluerSortir: ‘Bonjour’

SaluerSortir: ‘Bonjour’

RésultatSortir ‘Le nombre est: ‘

Sortir n

RésultatSortir ‘Le nombre est: ‘

Sortir n

SEQSEQ

Début Fin

DemanderSortir ‘Entrez un nombre’

Entrer n

DemanderSortir ‘Entrez un nombre’

Entrer n

Bruno Permanne 2006

Page 31: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

AlgorithmiqueL’arbre programmatique

Retour sommaire

Bonjourn: entier

Bonjourn: entier

SaluerSortir: ‘Bonjour’

SaluerSortir: ‘Bonjour’

RésultatSortir ‘Le nombre est: ‘

Sortir n

RésultatSortir ‘Le nombre est: ‘

Sortir n

SEQSEQ

Nom du programme

Déclaration d’une variable

DemanderSortir ‘Entrez un nombre’

Entrer n

DemanderSortir ‘Entrez un nombre’

Entrer n

Connecteur (séquence)

Bruno Permanne 2006

Page 32: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

AlgorithmiqueL’arbre programmatique

Retour sommaire

Bonjourn: entier

Bonjourn: entier

SaluerSortir: ‘Bonjour’

SaluerSortir: ‘Bonjour’

DemanderSortir ‘Entrez un nombre’

Entrer n

DemanderSortir ‘Entrez un nombre’

Entrer n

RésultatSortir ‘Le nombre est: ‘

Sortir n

RésultatSortir ‘Le nombre est: ‘

Sortir n

SEQSEQ

Nom du bloc

Affichage d’un texte

Acquisition clavierBruno Permanne 2006

Page 33: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

AlgorithmiqueL’arbre programmatique: les choix

Retour sommaire

Action(Si condition vraie)

Action(Si condition vraie)

SISIConditionCondition

Action(Si condition fausse)

Action(Si condition fausse)

Connecteur (SI)

Bruno Permanne 2006

Page 34: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

AlgorithmiqueL’arbre programmatique: les choix

Retour sommaire

Action 1(Si condition 1 vraie)

Action 1(Si condition 1 vraie)

CASCASConditions 1,2,3Conditions 1,2,3

Action(Si conditions fausse)

Action(Si conditions fausse)

Connecteur (CAS)

Action 2(Si condition 2 vraie)

Action 2(Si condition 2 vraie)

Action 3(Si condition 3 vraie)

Action 3(Si condition 3 vraie)

Bruno Permanne 2006

Page 35: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

AlgorithmiqueL’arbre programmatique: les boucles

Retour sommaire

Action(Tant que condition vraie,

test avant l’action)

Action(Tant que condition vraie,

test avant l’action)

TTQTTQConditionCondition

Connecteur (Tant Que)

Bruno Permanne 2006

Page 36: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

AlgorithmiqueL’arbre programmatique: les boucles

Retour sommaire

Action(Tant que condition vraie,

test après l’action)

Action(Tant que condition vraie,

test après l’action)

TTQTTQ ConditionCondition

Bruno Permanne 2006

Page 37: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

AlgorithmiqueL’arbre programmatique: les boucles

Retour sommaire

Action 1(exécutée un fois puis répétée jusqu’à ce que la condition soit vraie,

test après l’action)

Action 1(exécutée un fois puis répétée jusqu’à ce que la condition soit vraie,

test après l’action)

REPREP

ConditionCondition

Action 2(Répétée jusqu’à ce que la condition soit vraie,

test avant l’action)

Action 2(Répétée jusqu’à ce que la condition soit vraie,

test avant l’action)

Connecteur (Répéter)

Bruno Permanne 2006

Page 38: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

AlgorithmiqueL’arbre programmatique: les boucles indexées

Retour sommaire

Action(Tant que condition vraie,

Après une seule initialisation, test avant l’action,

évolution après l’action)

Action(Tant que condition vraie,

Après une seule initialisation, test avant l’action,

évolution après l’action)

POURPOURInitialisation; Condition; EvolutionInitialisation; Condition; Evolution

Connecteur (d’itération)

Bruno Permanne 2006

Page 39: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

AlgorithmiqueL’arbre programmatique: les boucles indexées

Retour sommaire

Action 1Afficher i;Action 1

Afficher i;

POURPOUR(Entier) i0; i<10; i i+1(Entier) i0; i<10; i i+1

>0>1>2>3>4>5>6>7>8>9>

>0>1>2>3>4>5>6>7>8>9>

SEQSEQ

Action 2Aller à la ligne;

Action 2Aller à la ligne;

Bruno Permanne 2006

Page 40: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

AlgorithmiqueL’arbre programmatique: exemple

1. Commencer le programme2. Afficher "bonjour",3. Demander un nombre n,4. Afficher le nombre n,5. Demander "voulez vous recommencer VRAI/FAUX",6. TANT QUE réponse == VRAI aller en (3),7. Afficher "au revoir",8. Finir le programme.

1. Commencer le programme2. Afficher "bonjour",3. Demander un nombre n,4. Afficher le nombre n,5. Demander "voulez vous recommencer VRAI/FAUX",6. TANT QUE réponse == VRAI aller en (3),7. Afficher "au revoir",8. Finir le programme.

Retour sommaireBruno Permanne 2006

Page 41: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

AlgorithmiqueL’arbre programmatique: exemple

Retour sommaire

r == VRAIr == VRAI

SEQSEQ

Bonjourn: entier

r: booléen

Bonjourn: entier

r: booléen

Saluer 1Sortir « bonjour »;

Saluer 1Sortir « bonjour »;

TTQTTQ

SEQSEQ

DemanderSortir « Entrez un nombre »;

Entrer nb;

DemanderSortir « Entrez un nombre »;

Entrer nb;

Afficher 1Sortir « Le nombre est:  »;

Sortir nb;

Afficher 1Sortir « Le nombre est:  »;

Sortir nb;Afficher 2

Sortir « Recommencer ? (VRAI / FAUX):  »;

Entrer r;

Afficher 2Sortir « Recommencer ?

(VRAI / FAUX):  »;Entrer r;

Saluer 2Sortir « Au revoir »;

Saluer 2Sortir « Au revoir »;

Bruno Permanne 2006

Page 42: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Les langages C et C++Comprendre les bases

Retour sommaireBruno Permanne 2006

Page 43: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Les langages C et C++ Toute variable doit être déclarée avant d’être utilisée La déclaration réserve la quantité de mémoire nécessaire au type demandé

Les variables (et les constantes)

Retour sommaire

Type Déclaration Exemples

(déclarations / affectations)

Caractère non signé

(1 octet)

unsigned char

unsigned char c, d;

c=0x4D; d=48;

Caractère signé char unsigned char c='A';

Entier

(2 octets)

int int total, n=0;

total = -45678;

Nombre flottant double

(8 octets)

double const double pi=3.141592653589793;

double x = 4.56E-7;

Tableau de n ou n*m entiers

(2*n ou 2*n*m octets)

int[n]

int [n][m]

int tab[56], tab2[10][12];

tab[34]=32000;

Chaine de n caractères

(n+1 octets)

char[n] char mc[]="Ma chaine";

charreponse[10];

Chaine de caractères C++ string string mc="Ma chaine";

Bruno Permanne 2006

Page 44: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Les langages C et C++

unaires, binaires ou ternaires attention au types retournés en cas de mélange de variables

Les expressions

Retour sommaire

Fonction Exemples

incrémenter int compteur=0;

compteur++;

additionner compteur = compteur+10;

compteur+=10 // écriture condensée

affecter conditionnellement int n;

double a,b;

a=b=56.9; // affectation multiple

n = (a!=b) ? 10 :-1;

un calcul avec affectation conditionnelle et changement de type de variable

double x;

int i=33, j=2;

x = (n==2) ? 3*a : 0.0;

x = (n=j) ? 3*i : 0.0;

x = (double) ((n=2) ? 3*i : 0.0);

Bruno Permanne 2006

Page 45: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Les langages C et C++

Entrée par le clavier cin >> pour le C++ et scanf pour le C Sortie écran cout << pour le C++ et printf pour le C Inclure iostream ou stdlib.h

Les instructions d'entrée/sortie

Retour sommaire

Fonction Exemples

Affichage C int x=67, compteur;

float y;

y=(float)x/10;

printf("résultat de %d/10 =%f\n",x,y);

lire un nombre C scanf("%d",&compteur);

Affichage C°° cout<<"resultat de "<<x<<"/10="<<y<<endl;

lire un nombre C++ cin>>compteur;

Bruno Permanne 2006

Page 46: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Les langages C et C++Exemples de synthèse

Retour sommaire

Fonction Exemples

comparaison bool flag;

int a=4, b=5, c;

flag=(a==b); flag=(a!=b);flag=(a>b); flag=(a>=b);flag=(a<b);flag=(a<=b);

flag=(c=b);

flag=(a==b)||(b==c);

flag=(a>=b)&&(b<c);

logiques unsigned char f2, f3=2;

flag=!flag;

f2=~(unsigned char)++flag;

f2 ^= 0xFF;

f3 |= f2;

f2=(unsigned char)flag<<2|f3;

flux de sortie standard f2+=0x30;

cout <<f2<<endl;

cout <<hex;

cout <<(int)f2<<endl;

cout <<dec;

cout <<b<<1<<endl;

cout <<(b<<1)<<endl;

cout <<"b<<1"<<endl;Bruno Permanne 2006

Page 47: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Les langages C et C++Les structures de contrôle

Retour sommaire

Action(Si condition vraie)

Action(Si condition vraie)

SISIConditionCondition

// test de l'instruction ifIf(c==4) cout<<"c vaut 4"<<endl; // test de l'instruction ifIf(c==4) cout<<"c vaut 4"<<endl;

Bruno Permanne 2006

Page 48: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Les langages C et C++Les structures de contrôle

Retour sommaire

Action(Si condition vraie)

Action(Si condition vraie)

SISIConditionCondition

// test de l'instruction if elseIf(c==4) cout<<"c vaut 4<<endl; else cout<<"c ne vaut pas 4"<<endl;

// test de l'instruction if elseIf(c==4) cout<<"c vaut 4<<endl; else cout<<"c ne vaut pas 4"<<endl;

Action(Si condition fausse)

Action(Si condition fausse)

Bruno Permanne 2006

Page 49: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Retour sommaire

Action 1(Si condition 1 vraie)

Action 1(Si condition 1 vraie)

CASCASConditions 1,2,3Conditions 1,2,3

Action(Si conditions fausse)

Action(Si conditions fausse)

Action 2(Si condition 2 vraie)

Action 2(Si condition 2 vraie)

Action 3(Si condition 3 vraie)

Action 3(Si condition 3 vraie)

// test de l'instruction switchchar choix;cin >> choix;switch(choix){ case 'A':cout <<"c'est A!"; break; case 'B':cout <<"c'est B!"; break; case 'C':cout <<"c'est C!"; break; default: cout <<"c'est quoi ?"; }

// test de l'instruction switchchar choix;cin >> choix;switch(choix){ case 'A':cout <<"c'est A!"; break; case 'B':cout <<"c'est B!"; break; case 'C':cout <<"c'est C!"; break; default: cout <<"c'est quoi ?"; }

Bruno Permanne 2006

Page 50: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Retour sommaire

// test de l'instruction whileint i[6]={0,6,78,9,52,-1};unsigned int j=0;while(i[j]>0){ j++; cout <<"i[j] est positif! "<<endl; }

// test de l'instruction whileint i[6]={0,6,78,9,52,-1};unsigned int j=0;while(i[j]>0){ j++; cout <<"i[j] est positif! "<<endl; }

Action(Tant que condition vraie,

test avant l’action)

Action(Tant que condition vraie,

test avant l’action)

TTQTTQConditionCondition

Les langages C et C++Les structures de contrôle

Bruno Permanne 2006

Page 51: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Retour sommaire

// test de l'instruction do whileunsigned int j=0;do cout << j++; while(TRUE!=FALSE);

// test de l'instruction do whileunsigned int j=0;do cout << j++; while(TRUE!=FALSE);

Action(Tant que condition vraie,

test après l’action)

Action(Tant que condition vraie,

test après l’action)

TTQTTQConditionCondition

Les langages C et C++Les structures de contrôle

Bruno Permanne 2006

Page 52: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Retour sommaire

// test de l'instruction repeat until breakdouble x;x=1.1;repeat{ x*=1.1; cout<<x<<' '; // action 1 if (x>100.0) break; cout<<x<<endl; // action 2} until (TRUE==FALSE);

// test de l'instruction repeat until breakdouble x;x=1.1;repeat{ x*=1.1; cout<<x<<' '; // action 1 if (x>100.0) break; cout<<x<<endl; // action 2} until (TRUE==FALSE);

Action 1(exécutée un fois puis répétée jusqu’à ce que la condition soit vraie,

test après l’action)

Action 1(exécutée un fois puis répétée jusqu’à ce que la condition soit vraie,

test après l’action)

REPREP

ConditionCondition

Action 2(Répétée jusqu’à ce que la condition soit vraie,

test avant l’action)

Action 2(Répétée jusqu’à ce que la condition soit vraie,

test avant l’action)

Les langages C et C++Les structures de contrôle

Bruno Permanne 2006

Page 53: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Retour sommaire

// test de l'instruction fordouble x,phi;const double pi=3.141592;for(phi=0;phi<2*pi;phi+=pi/60){ x=sin(phi); cout<<"sin("<<phi<<")="<<x<<endl;}

// test de l'instruction fordouble x,phi;const double pi=3.141592;for(phi=0;phi<2*pi;phi+=pi/60){ x=sin(phi); cout<<"sin("<<phi<<")="<<x<<endl;}

Action(Tant que condition vraie,

Après une seule initialisation, test avant l’action,

évolution après l’action)

Action(Tant que condition vraie,

Après une seule initialisation, test avant l’action,

évolution après l’action)

POURPOURInitialisation; Condition; EvolutionInitialisation; Condition; Evolution

Les langages C et C++Les structures de contrôle

Bruno Permanne 2006

Page 54: Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006

Programmation

Un avenir une formation,

Fin de la première partie

Bruno Permanne 2006