L - PowerPoint PPT Presentation

About This Presentation
Title:

L

Description:

B ne sortira jamais officiellement Des tiroirs de Dennis Ritchie. Aid par Brian Kernighan, ... comprenant le compilateur Kernighan&Ritchie (ou K&R) ... – PowerPoint PPT presentation

Number of Views:57
Avg rating:3.0/5.0
Slides: 24
Provided by: Park87
Category:

less

Transcript and Presenter's Notes

Title: L


1
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 dexploitation
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 soccuper, Ken Thompson décide de programmer
des jeux sur le PDP- 8, et comme il ne dispose
pas dun système dexploitation qui le
satisfasse, il commence par développer un système
dexploitation. Ce sera la première version de
UNIX, écrite entièrement en assembleur. Lire plus
ici
2
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 lappellera 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
lalphabet, ou la deuxième lettre de BCPL.
3
  • Dennis Ritchie parvient à persuader Ken
  • Thompson de récrire UNIX sur une machine
  • plus performante, un PDP11.
  • Au lieu dutiliser lassembleur, on va utiliser
  • Le langage de Ritchie, C.
  • Cette décision est à considéré comme un des
  • Plus importants tournants de lhistoire de
  • linformatique Pour la première fois, on va
  • créer un système dexploitation écrit dans un
  • langage indépendant de la machine cible
  • pour la première fois, on va développer un
  • système dexploitation portable au niveau
  • source.
  • Cette grande première va faire le succès de
  • UNIX, et le succès de C.

4
Et là
ATT reprendra progressivement le développement
de UNIX, en fournissant des licences source à bas
prix, comprenant le compilateur KernighanRitchie
(ou KR) à tous les utilisateurs potentiels.
Petit à petit, UNIX simposera comme le
must des systèmes dexploitation à lusage
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 Ses
qualité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 les
scientifiques, las de FORTRAN.
5
Bjarne
Bjarne Stroustrup définit le successeur de C.
Plutôt que D ou P (soit la suite de C dans
lalphabet, ou la suite de C dans BCPL),
Stroustrup baptise son bébé C (le premier nom
donné à ce nouveau langage était C with
classes.), entendant par là que C est a
better C, un C meilleur, incrémenté. Dans
l'idée de Stroustrup, C devait conserver les
idées de base ayant conduit à la ré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.
6
  • En ce sens, ces trois produits sont à
  • lopposé de produits comme CHILL ou ADA,
  • ayant fait lobjet dune spécification très
  • poussée.
  • un langage, aussi bon ou aussi mauvais soit-
  • il, na jamais fait la qualité ni le succès
  • dun programme, comme le démontre
  • nombre de réussites et déchec industriels.

Beaucoup plus que le langage de programmation
utilisé, cest le code déjà écrit et testé qui
permet doptimiser les coûts de production de
grands logiciels. Le meilleur langage est celui
que lon 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 le monde, et
soutenu par une masse de code existant et
disponible probablement à nulle autre pareille.
7
Avantages du language
Ironiquement, les principaux (surcharge
d'opérateurs, classes) de C sont des
caractéristiques introduites dans Des langages
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 Logiciels
très vastes (communications, protocoles, fenêtrage
s, algorithmique, traitement dimages,
etc...) offrant des interfaces écrits dans un
même langage.
8
Commence par C
include ltstdio.hgt / 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
9
include ltstdio.hgt include ltstdlib.hgt include
ltiomanip.hgt 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 ab int func2(double a, float
b)return a-b
10
La fonction main()
int main()
  • Cette fonction est essentielle en C/C. Elle
    figure dans tous les programmes où elle apparait
    une et une seule fois (comparer à java).
  • Le mot clé main() peut figurer nimporte où dans
    le(s) fichier(s) source(s). Il définit les
    limites du programme.
  • Tout programme C sarrê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.

11
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 dunion
  • Ne contiennent pas dapostrophes

12
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 5pi

ICI, FAIRE ATTENTION
13
Types
  • char
  • int
  • float
  • double
  • 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

14
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) lt
sizeof(int) lt sizeof(long) Ainsi sur certaines
architectures on peut avoirshort 2 octets,
int 2 octets, long 4 octets et sur d'autre
short 2 octets, int 4 octets, long 4 octets
15
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

16
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 ltNomVariablegt ltLongueurgt Exemples char
NOM 20 char PRENOM 20 char PHRASE 300
  • "a\tb" --gt a b
  • "abcd\b\bx" --gt abx
  • "\"hello world\"" --gt "hello world"
  • "I don\'t know" --gt I don't know
  • "hello\nworld" --gt hello world
  • "\a" --gt (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 n1 octets.

17
Structures du language
Très similaire à Java
18
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 lt 3) y 5 else y 4
Opérateur ternaire cond ? e1 e2
----------------------------------- double x n
2 0 ? 4.3 -2.3
19
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
20
Structures de répétition
Il y a 3 structures de répétition
for(e1e2e3) ... int f1, i for(i2 iltn
i) f f i for() ...
while(cond) ... int f1, i2 while(i lt n) f
f i
do body while(cond) int f1, i 1 do f
f i while(i lt n)
21
répétition()
goto(rare) void f() ... for( ... )
while( ... ) ... if (wrong) goto error
... for( ... ) if (wrong) goto
error ... ... error ...
break continue int i, r 0 for(i0 iltn
i) if (r 2 0) continue r i
int choice 0 while(1) choice
user_input() if (choice lt 0 choice gt 4)
break switch(choice) case 1 ...
On peut s'aider soi même de l'intérieur d'1
boucle
22
Signature de fonctions
include ltstdio.hgt 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 (N1gtN2)
return N1 else return N2
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é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)
  • 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

23
Sources
http//www.tcom.ch/Tcom/Cours/C/C2.pdf http//w
ww.research.att.com/bs/bs_faq.html http//www.re
search.att.com/bs/bs_faq2.html
Write a Comment
User Comments (0)
About PowerShow.com