1 Notions de base 1.1 Structure d'un programme



Documents pareils
1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.


Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Introduction au langage C

Claude Delannoy. 3 e édition C++

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Programmation en langage C

Programmer en JAVA. par Tama

SUPPORT DE COURS. Langage C

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

INITIATION A LA PROGRAMMATION

Cours d Algorithmique et de Langage C v 3.0

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

INF 321 : mémento de la syntaxe de Java

UE Programmation Impérative Licence 2ème Année

Le langage C. Introduction, guide de reference

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

UE C avancé cours 1: introduction et révisions

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Introduction à l algorithmique et à la programmation M1102 CM n 3

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Conventions d écriture et outils de mise au point

Programmation C++ (débutant)/instructions for, while et do...while

Algorithmique et Programmation, IMA

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Une introduction à Java

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE UNIVERSITE M HAMED BOGARA DE BOUMERDES

Programmation Structurée en Langage C

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Support de Cours de Langage C. Christian Bac

Programmation C. J.-F. Lalande. 15 novembre 2012

Rappels Entrées -Sorties

Méthodes de programmation systèmes UE n NSY103. Notes de cours. Nombre d'heures : 55h (~ cours de 3 heures)

Cours 1: Java et les objets

Java Licence Professionnelle CISII,

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Cours Langage C/C++ Programmation modulaire

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

COMPARAISONDESLANGAGESC, C++, JAVA ET

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Programmation en C/C++

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Bases de programmation. Cours 5. Structurer les données

COURS DE LANGAGE C. DIAO Oumar. Université de Rennes 1. Master 1

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Les chaînes de caractères

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

I. Introduction aux fonctions : les fonctions standards

as Architecture des Systèmes d Information

et Programmation Objet

Introduction au C++ et à la programmation objet

Langage Éric Guérin 5 octobre 2010

Chapitre 1 : La gestion dynamique de la mémoire

Généralités sur le Langage Java et éléments syntaxiques.

Introduction au Langage de Programmation C

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Cours de C. Petits secrets du C & programmation avancée. Sébastien Paumier

Initiation à la programmation en Python

INITIATION AU LANGAGE JAVA

Le Langage C++ Patrick TRAU - ULP IPST version du 02/10/05

Plan du cours. Historique du langage Nouveautés de Java 7

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Conception de circuits numériques et architecture des ordinateurs

Algorithmique, Structures de données et langage C

Analyse de sécurité de logiciels système par typage statique

Cours d initiation à la programmation en C++ Johann Cuenin

BTS IRIS Cours et Travaux Pratiques. Programmation C. A. Lebret, TSIRIS, Lycée Diderot, 1995/06. en conformité avec le référentiel du BTS IRIS

Programmation en C. École Nationale Supérieure de Techniques Avancées. Pierre-Alain Fouque et David Pointcheval

Cours de C. Allocation dynamique. Sébastien Paumier

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

Introduction à l héritage en C++

LE LANGAGE C++ ENAC 1997 A. DANCEL

Java Licence Professionnelle CISII,

Travaux Dirigés n 1 : chaînes de caractères

Bernard HAMM, Évelyne LAVOISIER

TP1 : Initiation à Java et Eclipse

Les structures de données. Rajae El Ouazzani

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Les structures. Chapitre 3

Algorithmique & Langage C IUT GEII S1. Notes de cours (première partie) cours_algo_lgc1.17.odp. Licence

Premiers Pas en Programmation Objet : les Classes et les Objets

TP 1 : 1 Calculs en binaire, octal et hexadécimal

Anis ASSÈS Mejdi BLAGHGI Mohamed Hédi ElHajjej Mohamed Salah Karouia

Gestion mémoire et Représentation intermédiaire

Informatique / Programmation

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Algorithmes et Programmes. Introduction à l informatiquel. Cycle de vie d'un programme (d'un logiciel) Cycle de vie d'un programme (d'un logiciel)

MINIMUM. connaissances nécessaires à la programmation des microcontrôleurs PIC18 en langage C (une introduction au langage c A.N.S.

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

Programmation en langage C Eléments de syntaxe

Transcription:

1 Notions de base 1.1 Structure d'un programme Le langage C++ contient le langage C : tout programme écrit en C à la norme ANSI doit pouvoir être compilé par un compilateur C++. C++ fait la diérence entre Majuscules et minuscules : par exemple les variables Allo et allo sont distinctes En C++ on ne parle pas de type mais de classe (la classe int, la classe char...) En C++ on ne parle pas de variables mais d'objets ou d'instances (int i=0; déclare ou instancie un objet de classe int) Dans la pratique, sourtout pour les classes de base, on utilisera souvent la terminologie variable de type xx au lieu de objet (ou instance) de classe xx Programme C++ = ensemble de fonctions comprenant une seule fonction main() (point d'entrée). 1.2 Premières instructions Une instruction = la plus petite unité indépendante de C++, délimitée par un ; (point virgule) une phrase du langage naturel. #include <stdlib.h> #include <iostream> int main(void) { int age = 21; //reservation memoire pour age float x[5]={1.0,0,0,2,-1.5}; /* Autre commentaire */ char Nom[25]="Etudiant", prenom[20] = "Lambda"; float note_partiel, note_exam, note_finale; note_partiel = note_exam = note_finale = 0.0; 1

} //C'est l'initialisation! cout << endl << "entrer notes part et exam"; cin >> note_partiel >> note_exam; note_finale = 0.3*note_partiel + 0.7*note_exam;//affectation cout << note_finale; 1.3 Compilation Pour pouvoir etre utilisé, un programme doit etre compilé : Compilation par l'instruction > g++ -c gourette.cxx 1. Appelle cpp (C pré-processeur) pour traiter les lignes commençant par #. Production d'un chier texte temporaire tmp.c 2. Appelle gcc (compilateur) pour traduction de tmp.c en langage machine. Production d'un chier objet gourette.o Edition des liens (link) > g++ gourette.o -o artouste edition des liens entre gourette.o et les diérentes bibliothèques système ou autre utilisées (implicitement ou explicitement). Production d'un exécutable artouste Raccourci : compilation + édition des liens > g++ gourette.cxx -o artouste Exécution > artouste 2

1.4 Compilation séparée Ces fonctions peuvent (doivent) être réparties dans plusieurs chiers ; par exemple chier main.cxx #include <stdlib.h> #include util.h int main() { int i=doubler(3); double x = tripler(0.0);//etc... } chier util.h #ifndef UTIL_H #define UTIL_H void doubler(int); void tripler(float); Compilation g++ -c main.cxx util.cxx Edition des liens (link) g++ main.o util.o -o mon_prog #endif Raccourci : compilation + édition des liens g++ main.cxx util.cxx -o mon_prog chier util.cxx #include util.h //ici des utilitaires et //fonctions utilisés par main() void tripler(int y) { cout<<endl<<3*y; y=3*y; }; double doubler(float x) { x*=2; }; 1.5 Syntaxe, éléments de base C++ fait la diérence entre Majuscules et minuscules : par exemple les variables Allo et allo sont distinctes Identicateurs : noms et types de variables, noms de fonctions, nom des constantes, nom des macros-instructions Mots réservés : jeu de mots clés du langage Constantes : Opérateurs : +,*,-,/,% etc... Séparateurs : caractères spéciaux (espace, tabulation,cr/lf..) ; terminaison d'instruction ou de déclaration, séparation d'éléments () liste d'arguments ou de paramètres [] dimension ou indice d'un tableau {} bloc d'instructions, liste ou initialisation de tableau Commentaires : /* ceci est un commentaire (les commentaires imbriqués sont interdits)*/ Commentaires : // ceci est un autre commentaire 3

1.6 Variables caractérisées par : un nom un type une classe de stockage (précise la durée de vie, la visibilité, et l'emplacement mémoire) le nom : Séquence de chires et de lettres Premièr caractère = caractère alphabétique _ (underscore) est une lettre 1.7 Mots réservés Types : int, char, short, long, double, float, unsigned, struct, enum, union, void, signed Classe de stockage : auto, extern, static, register, typedef, const, volatile Instructions : if, else, while, do, for, switch, break, continue, goto, return Opérateurs : sizeof Etiquette : case, default mots réservés C++ : new, asm, friend, virtual, class, catch, delete, inline, operator, private, protected, public, template, this, throw, try. diérencie majuscule et minuscule les 32 premiers caractères sont signicatifs les mots clés ou réservés sont interdits 4

1.8 Constantes chiffres 1.9 Constantes de type caractère 1. caractère : encadré par deux apostrophes (`) exemple `a' type exemple 2. caractère non imprimable ou séquence d'échappements : entier décimal séquence de chires ne commençant pas par 0 125 entier octal séquence de chires commençant par 0 016 newline `\n' entier hexadécimal séquence de digits commençant par 0x ou 0X 0xFFA33 tabulation `\t' entier long séquence de digits nissant par l ou L 1450L backspace `\b' réel (double précision) séquence de chires en notation décimale 1.25 antislash `\\' séquence de chires en notation scientique 1.2E+3 NULL `\0' réel (long double) réel, nissant par l ou L 1.78L 3. chaîne de caractères : séquence de caractères délimitée par des guillemets (double cote) ex : "ceci est une chaine \n" Une chaine de caractères se termine par le caractère NULL '\0' ajouté par le compilateur. Une chaîne de caractères est un tableau de type caractères à 1 dimension. 5

1.10 Types types de base : char caractère (un seul caractère) int entier float réel, ottant double double précision modicateurs : short, long, signed, unsigned tailles : dépend de la machine. Pour le compilateur gcc (linux), on a (voir chiers limits.h et oat.h) #include <iostream> using namespace std; int main(void) { unsigned int ui=0; cout <<endl<<--ui; int i=0; cout <<endl<<--i; } $ g++ unsigned.cxx $./a.out 4294967295-1 Type Taille (bits/octets) valeurs unsigned char 8 0... 255 char 8-128... 127 short int 16-32768... 32767 int/long 32-2147483648... 2147483647 unsigned int/long 32 0... 4294967295 float 32/4 1.18e-38... 3.40e+38 double 68 2.23e-308... 1.80e+308 long double? L'usage du modicateur unsignedest vivement déconseillé pour les indices de tableaux. Exemple : 6

1.11 Conversions de type conversions automatiques règle de base : après évaluation, le type du résultat est celui de l'opérande de type le plus élevé. exemple : int i; double x; x = x+i; //i est converti (promu) en double. La hiérarchie des types est la suivante : char,short > int > unsigned > long > double > long double < float conversions explicites (cast) pour forcer ou empêcher une conversion syntaxe : (type) expression exemple : x = sqrt ((double) 23); 1.12 Déclarations de variables Toute variable doit être déclarée avant son utilisation. déclaration : permet au reste du programme de connaître l'existence et les propriétés de la variable. allocation : réserve et alloue une place en mémoire (à la compilation ou à l'exécution). la classe de stockage : détermine l'emplacement en mémoire et la durée de vie d'une variable. Elle est déduite de la déclaration et de l'emplacement de la déclaration. syntaxe : type nom (initialisation) exemple : int i(12); extern double x ; long double vect [] = {1.0L, 1.0L, 2.1L, 0.0L}; 7

1.13 Portée d'une variable la portée d'une variable est la région du programme où elle est connue. Elle dépend du mode et du lieu de sa déclaration : portée chier ou portée globale : variables déclarées en début de chier hors des blocs. Elles sont connues de leur point de déclaration à la n du chier. portée prototype de fonction : variables déclarées et connues entre le nom de la fonction et le début du bloc des instructions. Ce sont les arguments de la fonction. Par exemple : int max (int a, int b); portée bloc ou portée locale : commence à son point de déclaration et se termine à la n du bloc englobant la déclaration. 1.14 Durée de vie d'une variable En relation étroite avec la classe de stockage. durée de vie statique : mémoire allouée en début d'exécution, dure jusqu'à la n d'exécution du programme. Ce sont les variables à portée chier et les variables déclarées extern ou static. Elles sont initialisées à 0. Par défaut, une variable à portée chier a la classe extern. portée fonction : ce sont les étiquettes ou labels. Leur portée s'étend du début à la n de la fonction. durée de vie locale : de ce type. la plupart des variables que vous utiliserez sont mémoire allouée à l'entrée dans un bloc ou une fonction, désallouée à la sortie du bloc ou de la fonction. On parle aussi de variables automatiques. Ce sont les variables à portée bloc et les variables déclarées auto ou register (registre à accès rapide; par exemple les indices de boucles). Elles ne sont pas initialisés automatiquement. Par défaut les variables déclarées dans un bloc ont la classe auto. 8

durée de vie dynamique : variables créées et détruites par l'utilisateur. (L'allocation se fait par les fonctions de la famille malloc()la destruction par free()) ou bien par les opérateurs new() et delete() 1.15 Récapitulatif, variables globales classe de stockage extern extern static portée chier autres chiers chier instant d'allocation compilation aucune compilation zone mémoire données données durée de vie le programme le programme initialisation autorisée interdite autorisée 1.16 Récapitulatif, variables locales classe de stockage extern static auto register portée bloc bloc bloc bloc instant d'allocation aucune compilation entrée dans le bloc entrée dans le bloc zone mémoire données pile un registre durée de vie le programme bloc bloc initialisation interdite autorisée, autorisée 0 par défaut sauf tableaux autorisée 9

1.17 Tableaux déclaration : type nom [taille][...] exemple : double mat [10][2]; les indices varient de 0 à taille-1. Pour un tableau multidimensionnel, seule la dernière dimension n'a pas besoin d'être précisée. pas de contrôle eectué par le compilateur sur les références hors limites. Initialisation : par exemple int indice[5]={4, 8, 1, 2, 9}; dans ce cas il n'est pas nécessaire d'indiquer la dimension (n=5). Un tableau estun pointeur : dans double x [100]; x est un pointeur sur un double. Les tableaux peuvent être alloués dynamiquement grâce à la fonction : void *malloc(size_t size) de la bibliothèque standard <stdlib.h> (déconseillé) et aussi par l'opérateur new(): double*x=new double[10] déclare et alloue un tableau x de 10 réels (à privilégier par rapport à la fonction malloc) 10