• Aucun résultat trouvé

4 La programmation ´el´ementaire en C/C++

N/A
N/A
Protected

Academic year: 2022

Partager "4 La programmation ´el´ementaire en C/C++"

Copied!
178
0
0

Texte intégral

(1)

4 La programmation ´el ´ementaire en C/C++

Peter Schlagheck Universit ´e de Li `ege

Ces notes ont pour seule vocation d’ ˆetre utilis ´ees par les ´etudiants dans le cadre de leur cursus au sein de l’Universit ´e de Li `ege. Aucun autre usage ni diffusion n’est autoris ´e, sous peine de constituer une violation de la Loi du 30 juin 1994

relative au droit d’auteur.

(2)

4 La programmation ´el ´ementaire en C/C++

4.1 Les langages de programmation 4.2 Un programme simple en C/C++

4.3 Les variables ´el ´ementaires

4.4 Les op ´erations arithm ´etiques ´el ´ementaires

(3)

4.1 Les langages de programmation

La programmation avant les ann ´ees 50 . . .

(4)

4.1 Les langages de programmation

les langages d’assembleur (introduits dans les ann ´ees 50) 16: LOAD *10

17: ADD *15 18: STORE *4

19: IF (ACC NOT 0) GOTO17 20: . . .

Principe de base:

−→cr ´eation d’un fichier de texte (ASCII) avec un tel code

−→traduction en langage de machine par un programme

−→“assembleur” et placement dans la m ´emoire

(5)

4.1 Les langages de programmation

les langages d’assembleur (introduits dans les ann ´ees 50) 16:01001010

17:10001111 18:01100100 19:00010001 20: . . .

Principe de base:

−→cr ´eation d’un fichier de texte (ASCII) avec un tel code

−→traduction en langage de machine par un programme

−→“assembleur” et placement dans la m ´emoire

(6)

4.1 Les langages de programmation

les langages d’assembleur (introduits dans les ann ´ees 50) 16:01001010

17:10001111 18:01100100 19:00010001 20: . . .

Principe de base:

−→cr ´eation d’un fichier de texte (ASCII) avec un tel code

−→traduction en langage de machine par un programme

−→“assembleur” et placement dans la m ´emoire

−→ex ´ecution

(7)

4.1 Les langages de programmation

les langages d’assembleur (introduits dans les ann ´ees 50) 16: LOAD *10

17: ADD *15 18: STORE *4

19: IF (ACC NOT 0) GOTO17 20: . . .

−→repr ´esentation directe du langage de machine

−→sous une forme “lisible” (par des humains)

−→difficile d’encoder des op ´erations compos ´ees

−→(commea=b+p

c−d/2)

−→difficile d’ ´ecrire des programmes plus compliqu ´es . . .

(8)

4.1 Les langages de programmation

les langages d’assembleur Fortran (Formula translation)

program test integer a, b a = 84 b = -28

do while (a.ne.0) a = a + b print *, a end do

end

(9)

4.1 Les langages de programmation

les langages d’assembleur Fortran

−→introduit en 1956 par IBM

−→fortement utilis ´e pour des programmes math ´ematiques

−→et des simulations num ´eriques

−→(physique/chimie/biologie/climatologie num ´erique)

(10)

4.1 Les langages de programmation

les langages d’assembleur Fortran

−→introduit en 1956 par IBM

−→fortement utilis ´e pour des programmes math ´ematiques

−→et des simulations num ´eriques

−→plusieurs r ´evisions et ´evolutions:

−→→Fortran 66 (1966)

−→→Fortran 77 (1978)

−→→Fortran 90

−→→Fortran 95

−→→Fortran 2003

−→→Fortran 2008

−→→. . .

(11)

4.1 Les langages de programmation

les langages d’assembleur Fortran

BASIC

(Beginner’s All-purpose Symbolic Instruction Code)

−→conc¸u en 1963 (Dartmouth College, USA) comme

−→langage d’apprentissage de la programmation

−→tr `es facile `a ´ecrire des programmes

−→grande popularit ´e dans les ann ´ees 70/80

−→d ´ebut du succ `es de la soci ´et ´e Microsoft

−→(→Microsoft BASIC pour les PCs de IBM)

(12)

4.1 Les langages de programmation

les langages d’assembleur Fortran

BASIC

10 N = 84 20 K = -28 30 N = N + K

40 IF N > 0 THEN GOTO 30

(13)

4.1 Les langages de programmation

les langages d’assembleur Fortran

BASIC Pascal

−→introduit en 1970 (Niklaus Wirth)

−→bas ´e sur le langage ALGOL (1958)

−→conc¸u pour permettre de structurer des algorithmes

−→(if,while,for,case) et des donn ´ees

−→(tableaux, pointeurs, . . . )

−→grande popularit ´e dans les ann ´ees 80

−→(“Turbo Pascal” de Borland)

(14)

4.1 Les langages de programmation

les langages d’assembleur Fortran

BASIC Pascal C

−→d ´evelopp ´e en 1972 (Dennis Ritchie, Bell Labs)

−→utilis ´e pour impl ´ementer le syst `eme d’exploitation Unix

−→combine les avantages d’un langage structur ´e

−→avec l’efficacit ´e d’un langage assembleur

−→utilis ´e comme langage “interm ´ediaire”

−→pour cr ´eer des syst `emes d’exploitation,

−→des logiciels standards, des compilateurs . . .

(15)

4.1 Les langages de programmation

les langages d’assembleur Fortran

BASIC Pascal C

−→B. Kernighan & D. Ritchie:

−→“The C programming language”

−→(Prentice Hall, 2nd edition)

(16)

4.1 Les langages de programmation

les langages d’assembleur Fortran

BASIC Pascal C C++

−→d ´evelopp ´e en 1979 (Bjarne Stroustrup, Bell Labs)

−→comme une esp `ece de “r ´evision” de C

−→avec des outils suppl ´ementaires puissants

−→langage de programmation “orient ´ee objet”

−→(influenc ´e par le langage Simula)

−→fortement utilis ´e par des professionnels

(17)

4.1 Les langages de programmation

les langages d’assembleur Fortran

BASIC Pascal C C++

Java

−→publi ´e en 1995 (James Gosling, Sun Microsystems)

−→langage de programmation orient ´ee objet

−→(influenc ´e par C++, avec plus de “s ´ecurit ´e”)

−→fortement utilis ´e pour des applications sur le web

(18)

4.1 Les langages de programmation

les langages d’assembleur Fortran

BASIC Pascal C C++

Java Python

−→premi `ere version en 1989

−→langage de programmation multi-style

−→tr `es facile `a apprendre

(19)

4.1 Les langages de programmation

“Introduction `a la programmation en C/C++” veut signifier:

on utilise un compilateur C++

on passe la plupart du temps avec la discussion des outils ´el ´ementaires de C

−→C++ dans le style C

(20)

4.2 Un programme simple

#include <iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

}

ceci est le contenu (plain text/ASCII) d’un fichier nomm ´e prog1.cpp

qui se trouve quelque part dans un r ´epertoire de l’utilisateur

(21)

4.2 Un programme simple

#include <iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

}

Compilation et traduction en programme de machine (sous Linux/Unix/Mac):

> c++ prog1.cpp

−→cr ´eation d’un fichiera.out Ex ´ecution:

> ./a.out bonjour

(22)

4.2 Un programme simple

#include <iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

}

Compilation et traduction en programme de machine (sous Linux/Unix/Mac):

> c++ prog1.cpp -o prog1

−→cr ´eation d’un fichierprog1 Ex ´ecution:

> ./prog1 bonjour

(23)

4.2 Un programme simple

#include <iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

int n = 2;

double a;

cout << ''tapez un nombre reel: '';

cin >> a;

cout << ''voila le resultat d'une ''

cout << ''operation arithmetique: '' << n∗a << endl;

}

(24)

4.2 Un programme simple

#include <iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

int n = 2;

double a;

cout << ''tapez un nombre reel: '';

cin >> a;

cout << ''voila le resultat d'une ''

cout << ''operation arithmetique: '' << n∗a << endl;

}

Ex ´ecution:

bonjour

tapez un nombre reel:

(25)

4.2 Un programme simple

#include <iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

int n = 2;

double a;

cout << ''tapez un nombre reel: '';

cin >> a;

cout << ''voila le resultat d'une ''

cout << ''operation arithmetique: '' << n∗a << endl;

}

Ex ´ecution:

bonjour

tapez un nombre reel: 1.2

(26)

4.2 Un programme simple

#include <iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

int n = 2;

double a;

cout << ''tapez un nombre reel: '';

cin >> a;

cout << ''voila le resultat d'une ''

cout << ''operation arithmetique: '' << n∗a << endl;

}

Ex ´ecution:

bonjour

tapez un nombre reel: 1.2

voila le resultat d'une operation arithmetique: 2.4

(27)

4.2 Un programme simple

#include<iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

int n = 2;

double a;

cout << ''tapez un nombre reel: '';

cin >> a;

cout << ''voila le resultat d'une ''

cout<< ''operation arithmetique: '' << n∗a << endl;

double b = 1.5e-3;

double c = a + n b;

cout << ''voila une autre operation:'' << c << endl;

}

Ex ´ecution:

bonjour

tapez un nombre reel:

(28)

4.2 Un programme simple

#include<iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

int n = 2;

double a;

cout << ''tapez un nombre reel: '';

cin >> a;

cout << ''voila le resultat d'une ''

cout<< ''operation arithmetique: '' << n∗a << endl;

double b = 1.5e-3;

double c = a + n b;

cout << ''voila une autre operation:'' << c << endl;

}

Ex ´ecution:

bonjour

tapez un nombre reel: 1.2

(29)

4.2 Un programme simple

#include<iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

int n = 2;

double a;

cout << ''tapez un nombre reel: '';

cin >> a;

cout << ''voila le resultat d'une ''

cout<< ''operation arithmetique: '' << n∗a << endl;

double b = 1.5e-3;

double c = a + n b;

cout << ''voila une autre operation:'' << c << endl;

}

Ex ´ecution:

bonjour

tapez un nombre reel: 1.2

voila le resultat d'une operation arithmetique: 2.4 voila une autre operation:1.203

(30)

4.2 Un programme simple

#include<iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

int n = 2;

double a;

cout << ''tapez un nombre reel: '';

cin >> a;

cout << ''voila le resultat d'une ''

cout<< ''operation arithmetique: '' << n∗a << endl;

double b = 1.5e-3;

double c ; c = a + n b;

cout << ''voila une autre operation:'' << c << endl;

}

Ex ´ecution:

bonjour

tapez un nombre reel:

(31)

4.2 Un programme simple

#include<iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

int n = 2;

double a;

cout << ''tapez un nombre reel: '';

cin >> a;

cout << ''voila le resultat d'une ''

cout<< ''operation arithmetique: '' << n∗a << endl;

double b = 1.5e-3;

double c ; c = a + n b;

cout << ''voila une autre operation:'' << c << endl;

}

Ex ´ecution:

bonjour

tapez un nombre reel: 4

(32)

4.2 Un programme simple

#include<iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

int n = 2;

double a;

cout << ''tapez un nombre reel: '';

cin >> a;

cout << ''voila le resultat d'une ''

cout<< ''operation arithmetique: '' << n∗a << endl;

double b = 1.5e-3;

double c ; c = a + n b;

cout << ''voila une autre operation:'' << c << endl;

}

Ex ´ecution:

bonjour

tapez un nombre reel: 4

voila le resultat d'une operation arithmetique: 8 voila une autre operation:4.003

(33)

4.2 Un programme simple

#include<iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

// premiere partie int n = 2;

double a;

cout << ''tapez un nombre reel: '';

cin >> a;

cout << ''voila le resultat d'une ''

cout<< ''operation arithmetique: '' << n∗a << endl;

// deuxieme partie double b = 1.5e-3;

double c ; c = a + n b;

cout << ''voila une autre operation:'' << c << endl;

}

Ex ´ecution:

bonjour

tapez un nombre reel:

(34)

4.2 Un programme simple

#include<iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

// premiere partie int n = 2;

double a;

cout << ''tapez un nombre reel: '';

cin >> a;

cout << ''voila le resultat d'une ''

cout<< ''operation arithmetique: '' << n∗a << endl;

// deuxieme partie double b = 1.5e-3;

double c ; c = a + n b;

cout << ''voila une autre operation:'' << c << endl;

}

Ex ´ecution:

bonjour

tapez un nombre reel: -0.1

(35)

4.2 Un programme simple

#include<iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

// premiere partie int n = 2;

double a;

cout << ''tapez un nombre reel: '';

cin >> a;

cout << ''voila le resultat d'une ''

cout<< ''operation arithmetique: '' << n∗a << endl;

// deuxieme partie double b = 1.5e-3;

double c ; c = a + n b;

cout << ''voila une autre operation:'' << c << endl;

}

Ex ´ecution:

bonjour

tapez un nombre reel: -0.1

voila le resultat d'une operation arithmetique: -0.2 voila une autre operation:-0.097

(36)

4.2 Un programme simple

Pour l’instant on voit la structure suivante de notre programme:

#include <iostream>

using namespace std;

−→on ne comprend pas encore ce que c¸a veut dire

(37)

4.2 Un programme simple

Pour l’instant on voit la structure suivante de notre programme:

#include <iostream>

using namespace std;

main() {

...

}

−→c¸a contient toutes les instructions du programme

−→s ´epar ´ees par des point-virgules;

(38)

4.2 Un programme simple

Pour l’instant on voit la structure suivante de notre programme:

#include <iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

−→affichage (output) sur l’ ´ecran

}

(39)

4.2 Un programme simple

Pour l’instant on voit la structure suivante de notre programme:

#include <iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

...

cin >> a;

−→lecture (input) par le clavier

}

(40)

4.2 Un programme simple

Pour l’instant on voit la structure suivante de notre programme:

#include <iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

...

cout << ''voila le resultat d'une ''

cout << ''operation arithmetique: '' << n∗a << endl;

−→affichage cons ´ecutif du texte et d’une valeur

}

(41)

4.2 Un programme simple

Pour l’instant on voit la structure suivante de notre programme:

#include <iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

int n = 2;

−→d ´efinition d’une variablen

−→initialisation avec la valeur2

}

(42)

4.2 Un programme simple

Pour l’instant on voit la structure suivante de notre programme:

#include <iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

int n = 2;

double a;

−→d ´efinition d’une variablea

−→pas d’initialisation

}

(43)

4.2 Un programme simple

Pour l’instant on voit la structure suivante de notre programme:

#include <iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

int n = 2;

double a;

...

double b = 1.5e-3;

−→d ´efinition d’une variableb

−→initialisation avec la valeur1.5×10−3 = 0.0015

}

(44)

4.2 Un programme simple

Pour l’instant on voit la structure suivante de notre programme:

#include <iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

int n = 2;

double a;

...

double b = 1.5e-3;

double c = a + n b;

−→d ´efinition d’une variablec

−→initialisation avec le r ´esultat d’une op ´eration arithm ´etique:

c=a+n×b

}

(45)

4.2 Un programme simple

Pour l’instant on voit la structure suivante de notre programme:

#include <iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

int n = 2;

double a;

...

double b = 1.5e-3;

double c ; c = a + n b;

−→op ´eration arithm ´etique et copie du r ´esultat dansc

}

(46)

4.2 Un programme simple

Pour l’instant on voit la structure suivante de notre programme:

#include <iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

// premiere partie

−→commentaire:

−→cette ligne est ignor ´ee par le compilateur

}

(47)

4.2 Un programme simple

Pour l’instant on voit la structure suivante de notre programme:

#include <iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

/* premiere partie */

−→un autre commentaire, ignor ´e par le compilateur

−→il commence par/*et finit par*/

}

(48)

4.2 Un programme simple

Pour l’instant on voit la structure suivante de notre programme:

#include <iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

/*******************\

|* premiere partie *|

\*******************/

−→il peut s’ ´etendre sur plusieurs lignes:

−→tout est ignor ´e entre/*et*/

}

(49)

Le flot du programme dans la m ´emoire

(50)

Le flot du programme dans la m ´emoire

#include<iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

// premiere partie int n = 2;

double a;

cout << ''tapez un nombre reel: '';

cin >> a;

cout << ''voila le resultat d'une ''

cout<< ''operation arithmetique: '' << n∗a << endl;

// deuxieme partie double b = 1.5e-3;

double c ; c = a + n b;

cout << ''voila une autre operation:'' << c << endl;

}

(51)

Le flot du programme dans la m ´emoire

#include<iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

// premiere partie int n = 2;

double a;

cout << ''tapez un nombre reel: '';

cin >> a;

cout << ''voila le resultat d'une ''

cout<< ''operation arithmetique: '' << n∗a << endl;

// deuxieme partie double b = 1.5e-3;

double c ; c = a + n b;

cout << ''voila une autre operation:'' << c << endl;

}

(52)

Le flot du programme dans la m ´emoire

#include<iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

// premiere partie int n = 2;

double a;

cout << ''tapez un nombre reel: '';

cin >> a;

cout << ''voila le resultat d'une ''

cout<< ''operation arithmetique: '' << n∗a << endl;

// deuxieme partie double b = 1.5e-3;

double c ; c = a + n b;

cout << ''voila une autre operation:'' << c << endl;

}

(53)

Le flot du programme dans la m ´emoire

#include<iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

// premiere partie int n = 2;

double a;

cout << ''tapez un nombre reel: '';

cin >> a;

cout << ''voila le resultat d'une ''

cout<< ''operation arithmetique: '' << n∗a << endl;

// deuxieme partie double b = 1.5e-3;

double c ; c = a + n b;

cout << ''voila une autre operation:'' << c << endl;

}

(54)

Le flot du programme dans la m ´emoire

#include<iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

// premiere partie int n = 2;

double a;

cout << ''tapez un nombre reel: '';

cin >> a;

cout << ''voila le resultat d'une ''

cout<< ''operation arithmetique: '' << n∗a << endl;

// deuxieme partie double b = 1.5e-3;

double c ; c = a + n b;

cout << ''voila une autre operation:'' << c << endl;

}

(55)

Le flot du programme dans la m ´emoire

#include<iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

// premiere partie int n = 2;

double a;

cout << ''tapez un nombre reel: '';

cin >> a;

cout << ''voila le resultat d'une ''

cout<< ''operation arithmetique: '' << n∗a << endl;

// deuxieme partie double b = 1.5e-3;

double c ; c = a + n b;

cout << ''voila une autre operation:'' << c << endl;

}

(56)

Le flot du programme dans la m ´emoire

#include<iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

// premiere partie int n = 2;

double a;

cout << ''tapez un nombre reel: '';

cin >> a;

cout << ''voila le resultat d'une ''

cout<< ''operation arithmetique: '' << n∗a << endl;

// deuxieme partie double b = 1.5e-3;

double c ; c = a + n b;

cout << ''voila une autre operation:'' << c << endl;

}

(57)

Le flot du programme dans la m ´emoire

#include<iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

// premiere partie int n = 2;

double a;

cout << ''tapez un nombre reel: '';

cin >> a;

cout << ''voila le resultat d'une ''

cout<< ''operation arithmetique: '' << n∗a << endl;

// deuxieme partie double b = 1.5e-3;

double c ; c = a + n b;

cout << ''voila une autre operation:'' << c << endl;

}

(58)

Le flot du programme dans la m ´emoire

#include<iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

// premiere partie int n = 2;

double a;

cout << ''tapez un nombre reel: '';

cin >> a;

cout << ''voila le resultat d'une ''

cout<< ''operation arithmetique: '' << n∗a << endl;

// deuxieme partie double b = 1.5e-3;

double c ; c = a + n b;

cout << ''voila une autre operation:'' << c << endl;

}

(59)

Le flot du programme dans la m ´emoire

#include<iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

// premiere partie int n = 2;

double a;

cout << ''tapez un nombre reel: '';

cin >> a;

cout << ''voila le resultat d'une ''

cout<< ''operation arithmetique: '' << n∗a << endl;

// deuxieme partie double b = 1.5e-3;

double c ; c = a + n b;

cout << ''voila une autre operation:'' << c << endl;

}

(60)

Le flot du programme dans la m ´emoire

#include<iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

// premiere partie int n = 2;

double a;

cout << ''tapez un nombre reel: '';

cin >> a;

cout << ''voila le resultat d'une ''

cout<< ''operation arithmetique: '' << n∗a << endl;

// deuxieme partie double b = 1.5e-3;

double c ; c = a + n b;

cout << ''voila une autre operation:'' << c << endl;

}

(61)

Le flot du programme dans la m ´emoire

#include<iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

// premiere partie int n = 2;

double a;

cout << ''tapez un nombre reel: '';

cin >> a;

cout << ''voila le resultat d'une ''

cout<< ''operation arithmetique: '' << n∗a << endl;

// deuxieme partie double b = 1.5e-3;

double c ; c = a + n b;

cout << ''voila une autre operation:'' << c << endl;

}

(62)

Le flot du programme dans la m ´emoire

#include<iostream>

using namespace std;

main() {

cout << ''bonjour'' << endl;

// premiere partie int n = 2;

double a;

cout << ''tapez un nombre reel: '';

cin >> a;

cout << ''voila le resultat d'une ''

cout<< ''operation arithmetique: '' << n∗a << endl;

// deuxieme partie double b = 1.5e-3;

double c ; c = a + n b;

cout << ''voila une autre operation:'' << c << endl;

}

(63)

Quelques r `egles de syntaxe

chaque instruction est termin ´ee par un point-virgule les instructions sont ex ´ecut ´ees l’une apr `es l’autre dans l’ordre de leur apparition

une instruction peut contenir plusieurs sous-instructions : c = a + n * b

−→multiplication, addition, copie du r ´esultat dansc

(64)

Quelques r `egles de syntaxe

chaque instruction est termin ´ee par un point-virgule les instructions sont ex ´ecut ´ees l’une apr `es l’autre dans l’ordre de leur apparition

une instruction peut contenir plusieurs sous-instructions des commentaires sont ignor ´es

tout ce qui est inclus entre guillemets''...''est consid ´er ´e comme un “string” (une chaˆıne de caract `eres)

(65)

Vos libert ´es en tant que programmeurs en C/C++

Vous avez la libert ´e de laisser autant d’espace

entre deux instructions voisines et entre deux mots/op ´erateurs cons ´ecutifs que vous voulez

int a = 10;

int b = a + 2;

(66)

Vos libert ´es en tant que programmeurs en C/C++

Vous avez la libert ´e de laisser autant d’espace

entre deux instructions voisines et entre deux mots/op ´erateurs cons ´ecutifs que vous voulez

int a = 10

; int b= a +2;

(67)

Vos libert ´es en tant que programmeurs en C/C++

Vous avez la libert ´e de laisser autant d’espace

entre deux instructions voisines et entre deux mots/op ´erateurs cons ´ecutifs que vous voulez

int a=10;int b=a+2;

(68)

Vos libert ´es en tant que programmeurs en C/C++

Vous avez la libert ´e de laisser autant d’espace

entre deux instructions voisines et entre deux mots/op ´erateurs cons ´ecutifs que vous voulez

inta = 10;

int b = a + 2;

−→ erreur:

−→'inta' not declared

(69)

Vos libert ´es en tant que programmeurs en C/C++

Vous avez la libert ´e de laisser autant d’espace

entre deux instructions voisines et entre deux mots/op ´erateurs cons ´ecutifs que vous voulez

choisir n’importe quels noms de n’importe quelle longueur pour les variables utilis ´ees ( `a des exceptions pr `es)

tant qu’il n’y ait pas d’ambiguit ´e

int a = 10;

int b = a + 2;

(70)

Vos libert ´es en tant que programmeurs en C/C++

Vous avez la libert ´e de laisser autant d’espace

entre deux instructions voisines et entre deux mots/op ´erateurs cons ´ecutifs que vous voulez

choisir n’importe quels noms de n’importe quelle longueur pour les variables utilis ´ees ( `a des exceptions pr `es)

tant qu’il n’y ait pas d’ambiguit ´e

int abc123 = 10;

int i1j2 = abc123 + 2;

(71)

Vos libert ´es en tant que programmeurs en C/C++

Vous avez la libert ´e de laisser autant d’espace

entre deux instructions voisines et entre deux mots/op ´erateurs cons ´ecutifs que vous voulez

choisir n’importe quels noms de n’importe quelle longueur pour les variables utilis ´ees ( `a des exceptions pr `es)

tant qu’il n’y ait pas d’ambiguit ´e

int une variable = 10;

int uneAutreVariable = une variable + 2;

(72)

Vos libert ´es en tant que programmeurs en C/C++

Vous avez la libert ´e de laisser autant d’espace

entre deux instructions voisines et entre deux mots/op ´erateurs cons ´ecutifs que vous voulez

choisir n’importe quels noms de n’importe quelle longueur pour les variables utilis ´ees ( `a des exceptions pr `es)

tant qu’il n’y ait pas d’ambiguit ´e

int une variable = 10;

int double = une variable + 2;

−→ erreur:

−→'double' d´ej`a r´eserv´e

(73)

Vos libert ´es en tant que programmeurs en C/C++

Vous avez la libert ´e de laisser autant d’espace

entre deux instructions voisines et entre deux mots/op ´erateurs cons ´ecutifs que vous voulez

choisir n’importe quels noms de n’importe quelle longueur pour les variables utilis ´ees ( `a des exceptions pr `es)

tant qu’il n’y ait pas d’ambiguit ´e

int une variable = 10;

int if = une variable + 2;

−→ erreur:

−→'if' d´ej`a r´eserv´e

(74)

Vos libert ´es en tant que programmeurs en C/C++

Vous avez la libert ´e de laisser autant d’espace

entre deux instructions voisines et entre deux mots/op ´erateurs cons ´ecutifs que vous voulez

choisir n’importe quels noms de n’importe quelle longueur pour les variables utilis ´ees ( `a des exceptions pr `es)

tant qu’il n’y ait pas d’ambiguit ´e

int a = 10;

int a = 2;

−→ erreur:

−→redeclaration of 'int a'

(75)

Vos libert ´es en tant que programmeurs en C/C++

Vous avez la libert ´e de laisser autant d’espace

entre deux instructions voisines et entre deux mots/op ´erateurs cons ´ecutifs que vous voulez

choisir n’importe quels noms de n’importe quelle longueur pour les variables utilis ´ees ( `a des exceptions pr `es)

tant qu’il n’y ait pas d’ambiguit ´e

int a = 10;

int 2a = 2;

−→ erreur:

−→invalid suffix ''a'' on integer constant

(76)

Vos libert ´es en tant que programmeurs en C/C++

Vous avez la libert ´e de laisser autant d’espace

entre deux instructions voisines et entre deux mots/op ´erateurs cons ´ecutifs que vous voulez

choisir n’importe quels noms de n’importe quelle longueur pour les variables utilis ´ees ( `a des exceptions pr `es)

tant qu’il n’y ait pas d’ambiguit ´e utiliser toutes les lettres de l’alphabete

A B ... Z a b ... z, tous les chiffres0 1 ... 9 et la souligne pour composer des noms

. . . avec la restriction que les noms ne doivent pas commencer avec un chiffre

−→ambiguit ´e avec des valeurs num ´eriques

(77)

Vos libert ´es en tant que programmeurs en C/C++

Vous avez la libert ´e de laisser autant d’espace

entre deux instructions voisines et entre deux mots/op ´erateurs cons ´ecutifs que vous voulez

choisir n’importe quels noms de n’importe quelle longueur pour les variables utilis ´ees ( `a des exceptions pr `es)

tant qu’il n’y ait pas d’ambiguit ´e utiliser toutes les lettres de l’alphabete

A B ... Z a b ... z, tous les chiffres0 1 ... 9 et la souligne pour composer des noms

´ecrire tout ce que vous voulez dans des commentaires

(78)

Vos libert ´es en tant que programmeurs en C/C++

Il est n ´eanmoins conseill ´e

de maintenir une structure coh ´erente dans l’ ´ecriture des instructions de vos programmes

de choisir des noms de vos variables d’une mani `ere

´evidente

de placer des commentaires d’une mani `ere intelligente afin de rendre vos programmes bien lisibles pour vous

(79)

4.3 Les variables ´el ´ementaires

Les nombres entiers

type taille nombre minimal nombre maximal unsigned short 2 octets −215=−32768 215−1 = 32767

unsigned long 4 octets −231= 231−1 =

−2 147 483 648 2 147 483 647

(80)

4.3 Les variables ´el ´ementaires

Les nombres entiers

type taille nombre minimal nombre maximal unsigned short 2 octets −215=−32768 215−1 = 32767

unsigned long 4 octets −231 231−1

int 4 octets −231 231−1

−→on utilise plus souventint

(81)

4.3 Les variables ´el ´ementaires

Les nombres entiers

type taille nombre minimal nombre maximal unsigned short 2 octets 0 216−1 = 65525

unsigned long 4 octets 0 232−1 = 4 294 967 295

(82)

4.3 Les variables ´el ´ementaires

Les nombres entiers

type taille nombre minimal nombre maximal unsigned short 2 octets 0 216−1 = 65525

unsigned long 4 octets 0 232−1 unsigned int 4 octets 0 232−1

(83)

4.3 Les variables ´el ´ementaires

Les nombres r ´eels / flottants

type taille nombre minimal nombre maximal unsigned float 4 octets ±1,2×10−38 ±3,4×1038

double 8 octets ±2,2×10−308 ±1,8×10308

−→on utilise plus souventdouble

(84)

4.3 Les variables ´el ´ementaires

Expression explicite des nombres flottants h±ihchiffres avant la virgulei.hchiffres apr `es la virguleieh±ihexposanti

(85)

4.3 Les variables ´el ´ementaires

Expression explicite des nombres flottants h±ihchiffres avant la virgulei.hchiffres apr `es la virguleieh±ihexposanti

#include <iostream>

using namespace std;

main() {

double a = -13.272e-7;

double b = 0.0012e2;

double c = 113450002.4;

cout << a << endl << b << endl << c << endl;

}

(86)

4.3 Les variables ´el ´ementaires

Expression explicite des nombres flottants h±ihchiffres avant la virgulei.hchiffres apr `es la virguleieh±ihexposanti

double a = -13.272e-7;

double b = 0.0012e2;

double c = 113450002.4;

cout << a << endl << b << endl << c << endl;

(87)

4.3 Les variables ´el ´ementaires

Expression explicite des nombres flottants h±ihchiffres avant la virgulei.hchiffres apr `es la virguleieh±ihexposanti

double a = -13.272e-7;

double b = 0.0012e2;

double c = 113450002.4;

cout << a << endl << b << endl << c << endl;

Ex ´ecution:

-1.3272e-06 0.12

1.1345e+08

(88)

4.3 Les variables ´el ´ementaires

Expression explicite des nombres flottants h±ihchiffres avant la virgulei.hchiffres apr `es la virguleieh±ihexposanti

double a = -13.272e-7;

double b = 0.0012e2;

double c = 113450002.4;

cout.precision(15);

cout << a << endl << b << endl << c << endl;

Ex ´ecution:

-1.3272e-06 0.12

113450002.4

−→affichage avec 15 chiffres significatifs

(89)

4.3 Les variables ´el ´ementaires

Expression explicite des nombres flottants h±ihchiffres avant la virgulei.hchiffres apr `es la virguleieh±ihexposanti

Expression explicite des nombres entiers h±ihchiffresi

(90)

4.3 Les variables ´el ´ementaires

Expression explicite des nombres flottants h±ihchiffres avant la virgulei.hchiffres apr `es la virguleieh±ihexposanti

Expression explicite des nombres entiers h±ihchiffresi

int a = 23;

cout << a << endl;

Ex ´ecution:

23

(91)

4.3 Les variables ´el ´ementaires

Expression explicite des nombres flottants h±ihchiffres avant la virgulei.hchiffres apr `es la virguleieh±ihexposanti

Expression explicite des nombres entiers h±ihchiffresi

int a = 23.0; ←nombre flottant

cout << a << endl;

Ex ´ecution:

erreur ?

(92)

4.3 Les variables ´el ´ementaires

Expression explicite des nombres flottants h±ihchiffres avant la virgulei.hchiffres apr `es la virguleieh±ihexposanti

Expression explicite des nombres entiers h±ihchiffresi

int a = 23.0; ←nombre flottant

cout << a << endl;

Ex ´ecution:

23

−→conversion implicite des flottants en entiers

−→avec une perte de pr ´ecision

(93)

4.3 Les variables ´el ´ementaires

Expression explicite des nombres flottants h±ihchiffres avant la virgulei.hchiffres apr `es la virguleieh±ihexposanti

Expression explicite des nombres entiers h±ihchiffresi

int a = 23.4;

cout << a << endl;

Ex ´ecution:

23

(94)

4.3 Les variables ´el ´ementaires

Expression explicite des nombres flottants h±ihchiffres avant la virgulei.hchiffres apr `es la virguleieh±ihexposanti

Expression explicite des nombres entiers h±ihchiffresi

int a = 23.9;

cout << a << endl;

Ex ´ecution:

23

(95)

4.3 Les variables ´el ´ementaires

Expression explicite des nombres flottants h±ihchiffres avant la virgulei.hchiffres apr `es la virguleieh±ihexposanti

Expression explicite des nombres entiers h±ihchiffresi

double a = 23; ←nombre entier

cout << a << endl;

Ex ´ecution:

23

−→conversion implicite des entiers en flottants

−→sans perte de pr ´ecision

(96)

4.3 Les variables ´el ´ementaires

Les caract `eres

type taille nombre minimal nombre maximal

char 1 octet 0 28−1 = 255

−→les caract `eres se comportent comme des nombres entiers

−→dans toutes les op ´erations arithm ´etiques

−→ils repr ´esentent des lettres selon le code ASCII

(97)

4.3 Les variables ´el ´ementaires

Expression explicite des nombres flottants h±ihchiffres avant la virgulei.hchiffres apr `es la virguleieh±ihexposanti

Expression explicite des nombres entiers h±ihchiffresi

Expression explicite des caract `eres

'hlettrei'

(98)

4.3 Les variables ´el ´ementaires

Expression explicite des nombres flottants h±ihchiffres avant la virgulei.hchiffres apr `es la virguleieh±ihexposanti

Expression explicite des nombres entiers h±ihchiffresi

Expression explicite des caract `eres

'hlettrei' char x = 'A';

char y = 'B';

char z = 'C';

cout << x << y << z << endl;

Ex ´ecution:ABC

(99)

4.3 Les variables ´el ´ementaires

Expression explicite des nombres flottants h±ihchiffres avant la virgulei.hchiffres apr `es la virguleieh±ihexposanti

Expression explicite des nombres entiers h±ihchiffresi

Expression explicite des caract `eres

'hlettrei' char x = 65;

char y = 66;

char z = 67;

cout << x << y << z << endl;

Ex ´ecution:ABC

(100)

4.3 Les variables ´el ´ementaires

Expression explicite des nombres flottants h±ihchiffres avant la virgulei.hchiffres apr `es la virguleieh±ihexposanti

Expression explicite des nombres entiers h±ihchiffresi

Expression explicite des caract `eres

'hlettrei' char x = 68;

char y = 69;

char z = 70;

cout << x << y << z << endl;

Ex ´ecution:DEF

(101)

Le code ASCII

bin. d. bin. d. bin. d.

1000001 65 A 1100001 97 a 0110000 48 0 1000010 66 B 1100010 98 b 0110001 49 1 1000011 67 C 1100011 99 c 0110010 50 2 1000100 68 D 1100100 100 d 0110011 51 3

... ... ... ... ... ...

1011010 90 Z 1111010 122 z 0111001 57 9

Tous les caract `eres du code ASCII entre32et126:

!''#$%&'()∗+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO PQRSTUVWXYZ[\]ˆ `abcdefghijklmnopqrstuvwxyz{|}˜

les autres nombres sont r ´eserv ´es pour des caract `eres de contr ˆole

(102)

Le code ASCII

Quelques caract `eres de contr ˆole utiles:

binaire d ´ec. C/C++ effet 0000111 7 '\a' beep

0001000 8 '\b' backspace (retour arri `ere) 0001001 9 '\t' tab (tabulation) 0001010 10 '\n' line feed (nouvelle ligne) 0001011 11 '\v' vertical tab

0001100 12 '\f' form feed (nouvelle page) 0001101 13 '\r' carriage return (retour chariot)

cout << ''ceci est un texte'' << endl;

Ex ´ecution:

ceci est un texte

(103)

Le code ASCII

Quelques caract `eres de contr ˆole utiles:

binaire d ´ec. C/C++ effet 0000111 7 '\a' beep

0001000 8 '\b' backspace (retour arri `ere) 0001001 9 '\t' tab (tabulation) 0001010 10 '\n' line feed (nouvelle ligne) 0001011 11 '\v' vertical tab

0001100 12 '\f' form feed (nouvelle page) 0001101 13 '\r' carriage return (retour chariot)

cout << ''ceci est un texte'' << endl;

Ex ´ecution:

ceci est un texte

(104)

Le code ASCII

Quelques caract `eres de contr ˆole utiles:

binaire d ´ec. C/C++ effet 0000111 7 '\a' beep

0001000 8 '\b' backspace (retour arri `ere) 0001001 9 '\t' tab (tabulation) 0001010 10 '\n' line feed (nouvelle ligne) 0001011 11 '\v' vertical tab

0001100 12 '\f' form feed (nouvelle page) 0001101 13 '\r' carriage return (retour chariot)

cout << ''ceci est un \rtexte'' << endl;

Ex ´ecution:

texteest un

(105)

Le code ASCII

Quelques caract `eres de contr ˆole utiles:

binaire d ´ec. C/C++ effet 0000111 7 '\a' beep

0001000 8 '\b' backspace (retour arri `ere) 0001001 9 '\t' tab (tabulation) 0001010 10 '\n' line feed (nouvelle ligne) 0001011 11 '\v' vertical tab

0001100 12 '\f' form feed (nouvelle page) 0001101 13 '\r' carriage return (retour chariot)

cout << ''ceci est un \btexte'' << endl;

Ex ´ecution:

ceci est untexte

(106)

Le code ASCII

Quelques caract `eres de contr ˆole utiles:

binaire d ´ec. C/C++ effet 0000111 7 '\a' beep

0001000 8 '\b' backspace (retour arri `ere) 0001001 9 '\t' tab (tabulation) 0001010 10 '\n' line feed (nouvelle ligne) 0001011 11 '\v' vertical tab

0001100 12 '\f' form feed (nouvelle page) 0001101 13 '\r' carriage return (retour chariot)

cout << ''ceci est un \ntexte'' << endl;

Ex ´ecution:

ceci est un texte

(107)

Le code ASCII

Quelques caract `eres de contr ˆole utiles:

binaire d ´ec. C/C++ effet 0000111 7 '\a' beep

0001000 8 '\b' backspace (retour arri `ere) 0001001 9 '\t' tab (tabulation) 0001010 10 '\n' line feed (nouvelle ligne) 0001011 11 '\v' vertical tab

0001100 12 '\f' form feed (nouvelle page) 0001101 13 '\r' carriage return (retour chariot)

cout << ''ceci est un \ttexte'' << endl;

Ex ´ecution:

ceci est un texte

(108)

Le code ASCII

Quelques caract `eres de contr ˆole utiles:

binaire d ´ec. C/C++ effet 0000111 7 '\a' beep

0001000 8 '\b' backspace (retour arri `ere) 0001001 9 '\t' tab (tabulation) 0001010 10 '\n' line feed (nouvelle ligne) 0001011 11 '\v' vertical tab

0001100 12 '\f' form feed (nouvelle page) 0001101 13 '\r' carriage return (retour chariot)

cout << ''ceci \test \nun \ttexte'' << endl;

Ex ´ecution:

ceci est

un texte

(109)

Le code ASCII

Quelques caract `eres de contr ˆole utiles:

binaire d ´ec. C/C++ effet 0000111 7 '\a' beep

0001000 8 '\b' backspace (retour arri `ere) 0001001 9 '\t' tab (tabulation) 0001010 10 '\n' line feed (nouvelle ligne) 0001011 11 '\v' vertical tab

0001100 12 '\f' form feed (nouvelle page) 0001101 13 '\r' carriage return (retour chariot)

cout << ''ceci est \vun texte'' << endl;

Ex ´ecution:

ceci est

ceci est un texte

(110)

Le code ASCII

Quelques caract `eres de contr ˆole utiles:

binaire d ´ec. C/C++ effet 0000111 7 '\a' beep

0001000 8 '\b' backspace (retour arri `ere) 0001001 9 '\t' tab (tabulation) 0001010 10 '\n' line feed (nouvelle ligne) 0001011 11 '\v' vertical tab

0001100 12 '\f' form feed (nouvelle page) 0001101 13 '\r' carriage return (retour chariot)

cout << ''ceci est \aun texte'' << endl;

Ex ´ecution:

ceci est un texte

(111)

Le code ASCII

Quelques caract `eres de contr ˆole utiles:

binaire d ´ec. C/C++ effet 0000111 7 '\a' beep

0001000 8 '\b' backspace (retour arri `ere) 0001001 9 '\t' tab (tabulation) 0001010 10 '\n' line feed (nouvelle ligne) 0001011 11 '\v' vertical tab

0001100 12 '\f' form feed (nouvelle page) 0001101 13 '\r' carriage return (retour chariot)

cout << ''ceci est \''un texte\'''' << endl;

Ex ´ecution:

ceci est ''un texte''

(112)

Le code ASCII

Quelques caract `eres de contr ˆole utiles:

binaire d ´ec. C/C++ effet 0000111 7 '\a' beep

0001000 8 '\b' backspace (retour arri `ere) 0001001 9 '\t' tab (tabulation) 0001010 10 '\n' line feed (nouvelle ligne) 0001011 11 '\v' vertical tab

0001100 12 '\f' form feed (nouvelle page) 0001101 13 '\r' carriage return (retour chariot)

cout << ''ceci est ''un texte'''' << endl;

Ex ´ecution:

−→erreur:

−→expected ';' before 'un'

(113)

Le code ASCII

Quelques caract `eres de contr ˆole utiles:

binaire d ´ec. C/C++ effet 0000111 7 '\a' beep

0001000 8 '\b' backspace (retour arri `ere) 0001001 9 '\t' tab (tabulation) 0001010 10 '\n' line feed (nouvelle ligne) 0001011 11 '\v' vertical tab

0001100 12 '\f' form feed (nouvelle page) 0001101 13 '\r' carriage return (retour chariot)

cout << ''ceci est \'un texte\''' << endl;

Ex ´ecution:

ceci est 'un texte'

(114)

Le code ASCII

Quelques caract `eres de contr ˆole utiles:

binaire d ´ec. C/C++ effet 0000111 7 '\a' beep

0001000 8 '\b' backspace (retour arri `ere) 0001001 9 '\t' tab (tabulation) 0001010 10 '\n' line feed (nouvelle ligne) 0001011 11 '\v' vertical tab

0001100 12 '\f' form feed (nouvelle page) 0001101 13 '\r' carriage return (retour chariot)

cout << ''ceci est \\ un texte'' << endl;

Ex ´ecution:

ceci est \ un texte

(115)

Le code ASCII

Quelques caract `eres de contr ˆole utiles:

binaire d ´ec. C/C++ effet 0000111 7 '\a' beep

0001000 8 '\b' backspace (retour arri `ere) 0001001 9 '\t' tab (tabulation) 0001010 10 '\n' line feed (nouvelle ligne) 0001011 11 '\v' vertical tab

0001100 12 '\f' form feed (nouvelle page) 0001101 13 '\r' carriage return (retour chariot) 0100010 34 '\''' ''

0100111 39 '\'' ' 1011100 92 '\\' \

cout << ''ceci est un texte'' << endl;

Ex ´ecution:

ceci est un texte

(116)

La d ´eclaration des variables

double a;

−→d ´eclaration d’une variable nomm ´ee “a”

−→elle est du typedouble

Références

Documents relatifs

Si aucun p´ eriph´ erique virtuel n’existe, la fenˆ etre visible dans la figure 5a apparaˆıt, vous permettant de lancer la cr´ eation d’un nouvel AVD.. Apr` es avoir cliqu´ e sur

El´ ementaire, mon cher Watson. Soit le

combinaisons bool´eennes de formules ϕ ou ∃x ϕ, o`u ϕ est de rang &lt; r, qui sont, par hypoth`ese de r´ecurrence, en nombre fini... Notons p et q les

Dans le cadre ci-dessus, nous pr´ ecisons que le reste est de l’ordre de la puissance suivante du d´ eveloppement (notons le cas des sinus et cosinus o` u on gagne mˆ eme un

La r´ esolution d’un syst` eme d’´ equations lin´ eaires se traduit matriciellement par Ax = b o` u A est une matrice, b un vecteur et x l’inconnue. R´ esoudre donc Ax = b,

• Cr´eez, dans votre r´epertoire personnel, les sous-r´epertoires: unix, f77, f90, c et c++.. • Cr´eez le

Lecture et écriture dans des fichiers texte (ASCII)...

• (a) and (b) dominent la production de paire “nucl´ eaire” (dans le champ d’un noyau) de par les rapports de masse e/r... “Longueur de Radiation”