L’ histoire: 1976: - Bell Labs abandonne le projet MULTICS. - Ken Thompson, programmeur système chez Bell Labs, se trouve désoeuvré. MULTICS devait être.

Slides:



Advertisements
Présentations similaires
Hiver 2010JGA Beaulieu GEF 243B Programmation informatique appliquée Structure de base des programmes en C.
Advertisements

GEF 243B Programmation informatique appliquée
Premier programme en C :
La boucle for : init7.c et init71.c
Les fonctions A quoi ça sert ?
Introduction au Langage C,C++
A RECUPERER EN ENTRANT Le polycopié de Caml Partie 1
Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour.
Rappels C.
Développement logiciel sur micro-contrôleurs PIC en C
Introduction au langage C
Formation universitaire à .NET: Introduction à C#
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Types, variables et constantes.
C.
M. BENJELLOUN : Info II Mohammed BENJELLOUN Service dInformatique Faculté Polytechnique de Mons
Les pointeurs Manipulation d'adresses et de ce qui est contenu dans ces adresses Très important, fondamental même en C mauvaise réputation : 'dur à comprendre',
FLSI602 Génie Informatique et Réseaux
Langage de Programmation: I - Le Langage C -
Common Gateway Interface
Langage C Révision.
CPI/BTS 2 Programmation Web Introduction au PHP
Récursivité.
Expressions et assignations
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
Introduction à la programmation (Java)
Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006.
Les fichiers binaires en C++
Le langage Javascript pour le web
Points importants de la semaine Le préprocesseur. La conversion de types. Les fonctions.
Principes de programmation
IFT 6800 Atelier en Technologies d’information
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
8PRO100 Éléments de programmation Les types composés.
COURS DE PROGRAMMATION ORIENTEE OBJET :
LANGAGE C LP A2I IUT St DIE
Procédures et fonctions
Les Opérateurs Ils régissent toutes les opérations ou transformations sur les valeurs des variables. Opérateur d'affectation Opérateurs arithmétiques Opérateurs.
Structures de données IFT-10541
L’essentiel du langage C
Le langage C Rappel Pointeurs & Allocation de mémoire.
Programmer en langage c
9ième Classe (Mardi, 4 novembre) CSI2572. H Nous avons vu comment utiliser les directives #define #ifndef #endif Pour s’assurer de l’inclusion unique.
La notion de type revisitée en POO
SIF-1053 Architecture des ordinateurs
ALGORITHMIQUE ET PROGRAMMATION C
Langage C Chapitre I: Initiation à la programmation en C
Un survol du language C.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
Cours n° 1 Présentation du langage C++
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 1 – Objets et Classes Master 1 SIGLIS1Java Lecteur - Chapitre 1 Objets et classes.
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. tél Fax Cours Architecture des.
CSI2520 Un langage de programmation impérative et concurrente.
Classe 1 CSI2572 Autres modificateurs de déclaration de variables: & volatile & register & static & auto & extern & const volatile Indique au compilateur.
1 Programmation en C++ Marianne Morris. 2 Intro générale à la programmation On a déjà étudié le langage assembleur Langage de bas niveau Meilleur que.
Introduction au langage C Les entrées-sorties
Conception de Programmes - IUT de Paris - 1ère année Quelques éléments du langage C++ Les références La surcharge de fonctions Les fonctions «
Langage de programmation
PRO-1027 Programmation Scientifique en C
Chapitre 4 La représentation des nombres.
pour les programmeurs en C++ Java 2 Part 1 3 Histoire de Java Projet de connexion des machines: 1991 Le nom Java a été introduit dans un café Développé.
Philippe Gandy - 8 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Philippe Gandy - 22 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Philippe Gandy – 10 novembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Introduction au langage C
C++ BY AURÉLIEN MODULO MARION. PLAN DES TROIS PRÉSENTATIONS C++ avancé C++ orienté objet Bases de C++
Informatique 2A Langage C 1 ère séance.
Java Réalisé par: Mouna POKORA. PLAN: Définition : Historique: Caractéristiques: un langage orienté objet: un langage interprété : un langage portable:
Transcription de la présentation:

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: 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.

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.

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 des systè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 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.

Bjarne: Bjarne Stroustrup définit le successeur de C. Plutôt que D ou P (soit la suite 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 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.

En ce sens, ces trois produits sont à l’opposé de produits comme CHILL ou ADA, ayant fait l’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 et testé 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 le monde, et soutenu par une masse de code existant et disponible probablement à nulle autre pareille.

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êtrages, algorithmique, traitement d’images, etc...) offrant des interfaces écrits dans un même langage.

#include /* my first C program */ int main() { printf("Hello World\n"); return 0; } Commence par C: Libraries incluses Déclaration de fonction (retour typé) Output Retour du résultat

#include 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: La fonction: main() int main() E 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 n’importe où dans le(s) fichier(s) source(s). Il définit les limites du programme. E Tout programme C s’arrête lorsque toutes les instructions de la fonction principale ont été traitées (ou lorsque le programme crash). E Ici main renvoie une valeur de type entière.

Identificateurs de variables/fonctions: n i1 counter x_1 E Ne commencent pas par 1 chiffre E Ne commencent pas par 1 astérisque E Ne commencent pas par 1 signe arithmétique E Ne commencent pas par 1 point E Ne contiennent pas de trait d’union E Ne contiennent pas d’apostrophes

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 E char: un octet (caractère) E int: entier signé E float: nombre à virgule flottante. Précision 6 chiffres après la virgules. E double: nombre à virgule flottante. Précision 10 chiffres après la virgules. short, long signed, unsigned  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

Types de données(int): int (par défault: signed short) short: 2 octets (16 bits) signed: à unsigned: 0 à long: 4 octets (32 bit) signed: à unsigned: 0 à C 12 = 014 = 0xC C 2568 = = 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): char (par défault: signed) signed: -128 à 127 unsigned: 0 à 255 C '\a' keyboard bell C '\\' back slash C '\b' back space C '\?' question mark C '\f' form feed C '\n' new line C '\"' double quote C '\r' carriage return C '\t' horizontal tab C '\v' vertical tab C '\ooo' octal byte C '\xhh' hex byte C '\0' null byte

Types de données (chaines de caractères ): H "a\tb" --> ab H "abcd\b\bx" --> abx H "\"hello world\"" --> "hello world" H "I don\'t know" --> I don't know H "hello\nworld" --> hello world H "\a" --> (rings the keyboard bell) 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 [ ]; Exemples char NOM [20]; char PRENOM [20]; char PHRASE [300]; C La représentation interne d'une chaîne de caractères est terminée par le symbole '\0' (NULL). C Ainsi, pour un texte de n caractères, nous devons prévoir n+1 octets.

Structures du language: Très similaire à Java

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 : e double x = n % 2 == 0 ? 4.3 : -2.3;

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; }; nx y

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(++): On peut s'aider soi même de l'intérieur d'1 boucle: 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 4) break; switch(choice) { case 1:...} goto(rare) void f() {... for(... ) { while(... ) {... if (wrong) goto error;... } for(... ) { if (wrong) goto error;... } }... error:...

Signature de fonctions: 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 #include 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; } 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: H le nom de la fonction H le type, le nombre et les noms des paramètres de la fonction H le type du résultat fourni par la fonction H les données locales à la fonction H les instructions à exécuter

Sources: