l histoire n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
L’ histoire: PowerPoint Presentation
Download Presentation
L’ histoire:

Loading in 2 Seconds...

play fullscreen
1 / 23

L’ histoire: - PowerPoint PPT Presentation


  • 132 Views
  • Uploaded on

L’ histoire:. 1976: - Bell Labs abandonne le projet MULTICS.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'L’ histoire:' - arin


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
l histoire
L’ histoire:

1976:

- Bell Labs abandonne le projet MULTICS.

- Ken Thompson, programmeur système chez Bell Labs, se trouve désoeuvré. MULTICS devait être un nouveau système d’exploitation multi-tâches et multi-utilisateurs utilisable pour la commande de systèmes de télécommunications (entre autres, des centraux téléphoniques, et des noeuds de réseau de données ARPAnet), mais le projet est abandonné parce que trop coûteux, et que les perspectives sur la base matérielle utilisée sont trop restreintes: à cette époque, le mini-ordinateur le plus performant était le PDP-8 de Digital Equipment Corporation.

Pour s’occuper, Ken Thompson décide de programmer des jeux sur le PDP-

8, et comme il ne dispose pas d’un système d’exploitation qui le satisfasse,

il commence par développer un système d’exploitation. Ce sera la première

version de UNIX, écrite entièrement en assembleur.

Lire plus ici

en m me temps
En même temps:

Un autre programmeur de Bell Labs, Dennis

Ritchie utilise le Langage BCPL, mais

le trouve inadapté à ses besoins.

Il va récrire un langage sur la base de BCPL, et

l’appellera B (vraisemblablement la première

lettre de BCPL). B ne sortira jamais officiellement

Des tiroirs de Dennis Ritchie.

Aidé par Brian Kernighan, B va connaître un nouveau développement. Le nouveau Langage ainsi crée se nommera C.

Difficile de dire si C représente la lettre venant après B dans l’alphabet, ou la deuxième lettre de BCPL.

slide3
Dennis Ritchie parvient à persuader Ken

Thompson de récrire UNIX sur une machine

plus performante, un PDP11.

Au lieu d’utiliser l’assembleur, on va utiliser

Le langage de Ritchie, C.

Cette décision est à considéré comme un des

Plus importants tournants de l’histoire de

l’informatique: Pour la première fois, on va

créer un système d’exploitation écrit dans un

langage indépendant de la machine cible :

pour la première fois, on va développer un

système d’exploitation portable au niveau

source.

Cette grande première va faire le succès de

UNIX, et le succès de C.

slide4
Et là:

AT&T reprendra progressivement le

développement de UNIX, en fournissant des

licences source à bas prix, comprenant le

compilateur Kernighan&Ritchie (ou K&R) à

tous les utilisateurs potentiels.

Petit à petit, UNIX s’imposera comme le must

dessystèmes d’exploitation à l’usage des

scientifiques et des universités.

UNIX étant écrit en C, la moindre intervention

sur UNIX demande au moins une

connaissance embryonnaire de C. Le

compilateur C étant gratuit, le langage devient

populaire en même temps que UNIX

Sesqualités pour la programmation système,

et le code très performant que génèrent les

compilateurs en font bientôt une alternative

intéressante également pour lesscientifiques,

las de FORTRAN.

bjarne
Bjarne:

Bjarne Stroustrup définit le successeur de

C. Plutôt que D ouP (soit lasuite de C

dans l’alphabet, ou la suite de C dans

BCPL), Stroustrup baptise son bébéC++

(le premier nom donné à ce nouveau

langage était “C withclasses”.),

entendant par là que C++ est «a better

C», un Cmeilleur, incrémenté.

Dans l'idée de Stroustrup, C++ devait

conserver les idées debase ayant conduit

à laréalisation de C (typage statique,

efficacité d'exécution, langage compilé).

Il est intéressant de constater que UNIX,

C et C++ sont tous des bricolages de labo.

slide6
Ence sens, ces trois produits sont à

l’opposé de produits comme CHILL ou ADA,

ayant faitl’objet d’une spécification très

poussée.

un langage, aussi bon ou aussi mauvais soit-

il, n’a jamais fait la qualité ni le succès

d’un programme, comme le démontre

nombre de réussites et d’échec industriels.

Beaucoup plus que le langage de programmation utilisé,

c’est le code déjà écrit ettesté qui permet d’optimiser les

coûts de production de grands logiciels. Le meilleur

langage est celui que l’on connaît, le meilleur code, - et le

plus rapidement disponible-celui qui tourne déjà sans

erreurs. Sur la base de ces hypothèses, C++ apparaît

comme un langage très puissant, connu par beaucoup de

programmeurs dans lemonde, et soutenu par une masse

de code existant et disponible probablement à nulle

autre pareille.

avantages du language
Avantages du language:

Ironiquement, les principaux “+” (surcharge d'opérateurs,

classes) de C++ sont descaractéristiques introduites dans

Deslangages antérieurs à C lui-même, qui est àl'origine

de C++(Algol-68, Simula-67).

on peut se fonder actuellement sur des bibliothèques de

Logicielstrès vastes(communications, protocoles,

fenêtrages,algorithmique, traitement d’images, etc...)

offrant des interfacesécrits dans un même langage.

commence par c
Commence par C:

#include <stdio.h>

/* my first C program */

int main() {

printf("Hello World\n");

return 0;

}

Libraries incluses

Déclaration de fonction

(retour typé)

Output

Retour du résultat

slide9

#include <stdio.h>

#include <stdlib.h>

#include <iomanip.h>

double func1(char, int);

int func2(double, float);

int main() {

printf(“Value is %d”,

func2(func1(‘a’, 2), 5.2f);

return 0;

}

double func1(char a, int b){return a+b;}

int func2(double a, float b){return a-b;}

la fonction main
La fonction: main()

int main()

  • Cette fonction est essentielle en C/C++. Elle figure dans tous les programmes où elle apparait uneet une seule fois (comparer à java).
  • Le mot clé main(…) peut figurer n’importe où dans le(s) fichier(s) source(s). Il définit les limites du programme.
  • Tout programme C s’arrête lorsque toutes les instructions de la fonction principale ont été traitées (ou lorsque le programme crash).
  • Ici main renvoie une valeur de type entière.
identificateurs de variables fonctions
Identificateurs de variables/fonctions:
  • n
  • i1
  • counter
  • x_1
  • Ne commencent pas par 1 chiffre
  • Ne commencent pas par 1 astérisque
  • Ne commencent pas par 1 signe arithmétique
  • Ne commencent pas par 1 point
  • Ne contiennent pas de trait d’union
  • Ne contiennent pas d’apostrophes
d clarations de variables
Déclarations de variables:

int a, b = 2;

char x, y = 'a';

unsigned long int i1 = 0, i2 = 3;

double pi = 3.14; double d = 5*pi;

ICI, FAIRE ATTENTION

types

char

  • int
  • float
  • double
Types :
  • char: un octet (caractère)
  • int: entier signé
  • float: nombre à virgule flottante. Précision 6 chiffres après la virgules.
  • double: nombre à virgule flottante. Précision 10 chiffres après la virgules.
  • Examples: char (signed char), unsigned char, short int (signed short int), unsigned short int, int (signed int), unsigned int, long int (signed long int), unsigned long int, float, double, long double
  • short, long
  • signed, unsigned
types de donn es int
Types de données(int):
  • int
  • (par défault: signed short)
  • short: 2 octets (16 bits)
  • signed: -32768 à 32767
  • unsigned: 0 à 65535
  • long: 4 octets (32 bit)
  • signed: -2147483648 à 2147483647
  • unsigned: 0 à 4294967295
  • 12 = 014 = 0xC
  • 2568 = 05010 = 0xa08
  • 2L

En principe, on peut dire que:

sizeof(short) <= sizeof(int) <= sizeof(long)

Ainsi sur certaines architectures on peut avoir:short = 2 octets, int = 2 octets, long = 4 octets

et sur d'autre: short = 2 octets, int = 4 octets, long = 4 octets

types de donn es char
Types de données(char):
  • '\a' keyboard bell
  • '\\' back slash
  • '\b' back space
  • '\?' question mark
  • '\f' form feed
  • '\n' new line
  • '\"' double quote
  • '\r' carriage return
  • '\t' horizontal tab
  • '\v' vertical tab
  • '\ooo' octal byte
  • '\xhh' hex byte
  • '\0' null byte
  • char
  • (par défault: signed)
  • signed: -128 à 127
  • unsigned: 0 à 255
types de donn es chaines de caract res
Types de données (chaines de caractères ):

Il n'existe pas de type spécial chaîne ou string en C. Une chaîne de caractères est traitée comme un tableau à une dimension de caractères (vecteur de caractères). Il existe quand même des notations particulières et une bonne quantité de fonctions spéciales pour le traitement de tableaux de caractères.

char <NomVariable> [<Longueur>];

Exemples

char NOM [20];

char PRENOM [20];

char PHRASE [300];

  • "a\tb" --> a b
  • "abcd\b\bx" --> abx
  • "\"hello world\"" --> "hello world"
  • "I don\'t know" --> I don't know
  • "hello\nworld" --> hello world
  • "\a" --> (rings the keyboard bell)
  • La représentation interne d'une chaîne de caractères est terminée par le symbole '\0' (NULL).
  • Ainsi, pour un texte de n caractères, nous devons prévoir n+1 octets.
structures du language
Structures du language:

Très similaire à Java

branchement
Branchement:

if (...) stmt

if (...) stmt else stmt

if (...) { body } else { body }

if (1) ... true

if (2) ... true

if (-1.5) ... true

if (0) ... false

int x = 2, y;

if (x < 3) y = 5; else y = 4;

Opérateur ternaire:

cond ? e1 : e2

-----------------------------------

double x = n % 2 == 0 ? 4.3 : -2.3;

branchement1
Branchement(++):

int x = 0, y = 0;

switch(n) {

case 1:

case 2:

x = 2;

case 3:

y = 3;

break;

case 4:

x = 1;

y = 4;

case 5:

x = 2;

break;

default:

y = -1;

};

n x y

1 2 3

2 2 3

3 0 3

4 2 4

5 2 0

structures de r p tition
Structures de répétition:

Il y a 3 structures de répétition:

for(e1;e2;e3)

...

int f=1, i;

for(i=2; i<=n; ++i) f = f *i;

for(;;) ...

while(cond) ...

int f=1, i=2;

while(i <= n) f = f * i++;

do body while(cond);

int f=1, i = 1;

do {

f = f * i++;

} while(i <= n);

r p tition

goto(rare)

void f() {

...

for( ... ) {

while( ... ) {

...

if (wrong) goto error;

...

}

for( ... ) {

if (wrong) goto error; ... } } ...

error:

...

répétition(++):

break & continue

int i, r = 0;

for(i=0; i<n; ++i) {

if (r % 2 == 0) continue;

r += i;

}

int choice = 0;

while(1) {

choice = user_input();

if (choice < 0 || choice > 4) break; switch(choice) {

case 1: ...

}}

On peut s'aider soi même de l'intérieur d'1 boucle:

signature de fonctions

#include <stdio.h>

int ENTREE(void);

int MAX(int N1, int N2);

main() {

/* Prototypes des fonctions appelées */

/* Déclaration des variables */

int A, B; /* Traitement avec appel des fonctions */

A = ENTREE();

B = ENTREE();

printf("Le maximum est %d\n", MAX(A,B));

}

/* Définition de la fonction ENTREE */

int ENTREE(void) {

int NOMBRE;

printf("Entrez un nombre entier : ");

scanf("%d", &NOMBRE);

return NOMBRE;

}

/* Définition de la fonction MAX */

int MAX(int N1, int N2) {

if (N1>N2) return N1; else return N2;

}

Signature de fonctions:

Définition:

int f1(int);

int f2();

void f3(int);

char f4(int, double);

void f5(char*, ...);

double power(double, int);

double power(double base, int exponent);

En général, le nom d'une fonction apparaît à trois endroits dans un programme:

1) lors de la déclaration

2) lors de la définition

3) lors de l'appel

  • Déclarations:
  • Dans la déclaration d'une fonction, nous indiquons:
  • le nom de la fonction
  • le type, le nombre et les noms des paramètres de la fonction
  • le type du résultat fourni par la fonction
  • les données locales à la fonction
  • les instructions à exécuter
sources
Sources:

http://www.tcom.ch/Tcom/Cours/C++/C2.pdf

http://www.research.att.com/~bs/bs_faq.html

http://www.research.att.com/~bs/bs_faq2.html