la programmation en langage C

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

La boucle for : init7.c et init71.c
Introduction au Langage C,C++
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#
Introduction à la programmation objet Langage Java
GEF 243B Programmation informatique appliquée
Cours 5.3 : XML et les architectures N-tiers – Tier Présentation
C.
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
Exercice 1 1 (père) et 1 (fils) 1 (père) et 0 (fils)
Tableaux Certains problèmes nécessitent beaucoup de variables du même type. Exemple : relevé de températures matin et soir dans 10 villes pour 10 jours.
Introduction : Compilation et Traduction
CYCLE 6 : FONCTIONS FONCTIONS avec paramètres en Entrée 1- Pourquoi les FONCTIONS peuvent échanger des données en E entre elles ? 2- Comment écrire des.
1 Une introduction à Java IFT 287 (Semaine 1). 2 Java - Historique Développé par Sun Microsystems en 1994 –Inventeur James Gosling (canadien!) Objectif.
CYCLE 1 : Saisir – Afficher – Données Afficher du texte sur lécran 1- Rôle du printf() 2- Syntaxe du printf() 3- Exécution du printf() par le CPU.
Principes de programmation (suite)
Nous allons vous présenter: - Photoshop - Algorithme et programmation
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
Regrouper des éléments de même type et pouvoir y accéder à laide dun identificateur et dun indice. Objectif des tableaux.
Introduction Langage C
Séances de soutien Projet informatique 2A
Système d’exploitation : Assembleur
Bases de la programmation en C++
HistoriqueHistorique Langage C++, parution du livre Bjarne Stroustrup Normalisation ANSI.
Algorithmique et Programmation
Projet de C – Matrices creuses
Amorçage des compilateurs Un compilateur est un programme écrit dans un langage Peut-il être écrit dans le langage cible ? dans le langage source ? comment.
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.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Standard Template Library
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Procédures et fonctions
Une introduction à Java
Introduction à la programmation orientée objets
La librairie assert.h.
Structures de données IFT Abder Alikacem Semaine 2 Tests sur les pointeurs Département d’informatique et de génie logiciel Édition Janvier 2009.
Faculté Polytechnique de Mons
Efficacité des algorithmes
2.1 - Historique Chapitre 2 : Introduction au langage C++
Programmer en langage c
Paradigmes des Langages de Programmation
Cours Architecture des Systèmes Informatiques
SPIP SPIP est le système de publication développé par le minirézo.
ALGORITHMIQUE ET PROGRAMMATION C
Module I3 algorithmique et programmation
HistoriqueHistorique Langage C++, parution du livre Bjarne Stroustrup Normalisation ANSI.
1 Sixième journée Éléments de C++ La programmation typée Éléments de C++ La programmation typée.
Les types composés Les enregistrements.
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
Microcontrôleurs PIC. 1ère séance Présentation du PIC16F876 Outils de programmation du PIC Le langage C Exemples d’applications simples 2ème séance Présentation.
ISBN Chapitre 10 L'implémentation des sous- programmes.
CSI2520 Un langage de programmation impérative et concurrente.
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.
Nous devons écrire un programme pour le microcontrôleur
Conception de Programmes - IUT de Paris - 1ère année Cours 2 – Références et passage de paramètres Les Références –Introduction aux références.
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O.
Chapitre VII Techniques plus avancées à travers le concept de classe.
UE MAREP Cours 12 : Révisions
Initiation aux bases de données et à la programmation événementielle
Organisation de la mémoire pour le langage minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Conception de Programmes - IUT de Paris - 1ère année Les classes Introduction Déclaration d’une classe Utilisation d’une classe Définition des.
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:
Informatique 2A Langage C 2 è séance. Objectifs de la séance 2 Début de la modularité avec les fonctions Création d’une première bibliothèque.
مادة : ديداكتيك الجغرافيا
Transcription de la présentation:

la programmation en langage C

Classification Languages Imperatifs: Langages incluant des moyens pour le programmeur d ’attribuer des valeurs a des locations en mémoire. Languages Declaratifs: Langages pour lesquels le programmeur réfléchit en terme de valeurs des fonctions et de relations entre entités diverses. Il n ’y a pas d ’attribution de valeurs aux variables. Programmation Procedurale: Le programme est divises en blocs qui peuvent contenir leurs propres variables ainsi que d ’autres blocs. Programmation Orientee Objet: Programmation qui supporte l ’interaction d ’objets. Un objet contient des donnees ainsi que des fonctions qui peuvent s ’appliquer a ces donnees. Programmation Concurrente: Languages de programmation qui s ’appliquent a plusieurs CPU ’s qui operent en parallele. Les donnees peuvent etre partagees ou non. Programmation Fonctionnelle: Un programme est un appel de fonction avec un certain nombre de parametres, qui eux-meme peuvent etre des appels d ’autres fonctions. Le programme renvoie donc un seul resultat, qui peut-etre assez complexe (example: une nouvelle fonction). Programmation Logique: Un programme consiste en une serie d ’axiomes, de regles de deduction et en un theoreme a prouver. Le programme renvoie la valeur « vrai » si les axiomes supporte le theoreme. Il renvoie la valeur « fause » autrement.

Caractèristique du C Structuré Modulaire: peut être découpé en modules qui peuvent être compilés séparement Universel: n'est pas orienté vers un domaine d'application particulier Typé: tout objet C doit être déclaré avant d’être utilisé Portable: sur n'importe quel système en possession d'un compilateur C

Un long fleuve tranquille Compilateur C C fichier Code assembleur Assembleur Code objet Linker Code executable

Fichier C (extension .c) /* exemple de programme C : - somme des nb de 1 à 10 et affichage de la valeur*/ #include <stdio.h> int main (void) { int somme; int i; somme = 0; for (i = 1; i <= 10; i++) somme = somme + i; } printf ("%d\n", somme); En C le programme principal s'appelle toujours main 1 1 déclarations de variables de type entier (cases mémoire pouvant contenir un entier) 2 2 3 instruction d'affectation de valeur à la variable somme 3 4 instructions exécutées en séquence l'instruction entre accolades est exécutée pour les valeurs de i allant de 1 à 10 4 5 affiche à l'écran la valeur de l'entier contenu dans somme 5

Ecrire le programme suivant : #include <stdio.h> int main(void) { int a= 257, b = 381; if (a > 0 && b > 0) { printf(" PGCD(%3d,%"d)\n",a,b); while (a != b) { if (a < b) b = b-a; else a = a-b; printf("=PGCD(%3d,%3d)\n",a,b); } printf("=%d\n",a); return 0;

Anatomie Programme typique en C include Main() toujours la 1ere fonction appelée main() fonction a() instructions fonction b() instructions instructions

Commandes simples de compilation Prétraitement, compilation et édition de liens : gcc –Wall –g pgcd.o –lm –o pgcd l'option –Wall demande une compilation avec des diagnostics sur la propreté du code l'option –g demande que la table des symboles soit ajoutée à l'exécutable l'option –lm demande de lier la librairie mathématique l'option –o pgcd demande que le résultat (l'exécutable) soit nommé pgcd au lieu de a.out Le programme est à lancer avec ./pgcd

Types d’instruction en C Déclarations des variables Assignations Fonctions Contrôle

Types de données et de variables Déclaration des variables int y; char yesno, ok; int ordered = 1, onhand = 0; float total = 43.132; char *cptr = NULL;

Types de données et de variables Type « char » ou « signed char »: ASCII sur 32 bits de -2147483648 à 2147483647. Type « unsigned char »: de 0 à 4294967295.

Types de données et de variables Type « short » ou « signed short » en complément à 2 sur 32 bits de -2147483648 à 2147483647. Type « unsigned short »: binaire sur 32 bits de 0 à 4294967295.

Types de données et de variables Type « int » ou « signed int » en complément à 2 sur 32 bits de -2147483648 à 2147483647. Type « unsigned int »: binaire sur 32 bits de 0 à 4294967295.

Types de données et de variables Type « long » ou « signed long » en complément à 2 sur 32 bits de -2147483648 à 2147483647. Type « unsigned long »: binaire sur 32 bits de 0 à 4294967295.

Types de données et de variables Type « enum » (ordered list) en complément à 2 sur 32 bits de -2147483648 à 2147483647. Type « float » format TMS320C30 sur 32 bits de 5.9x10-39 à 3.4 x1038.

Types de données et de variables Type « double » format TMS320C30 sur 32 bits de 5.9x10-39 à 3.4 x1038. Type « long double » format TMS320C30 sur 40 bits

Types de données et de variables Type « pointer » binaire sur 32 bits de 0 à 0xFFFFFFFF.

Les pointeurs Un pointeur contient l’adresse d’une autre variable. Déclaration: float *wirelen;

Les pointeurs Utilisation: wirelen = &wire2 ; Contenu de wirelen = adresse de wire2 *wirelen = 30.5 ; Même effet que wire2 = 30.5.

Les pointeurs et les vecteurs Déclaration: float *arrayptr; float farray[30]; Utilisation: arrayptr = farray; ou arrayptr = &farray[0];

Les pointeurs et les vecteurs Accès à une valeur dans le vecteur: *(arrayptr+3) équivalent à farray[3] Balayage simple avec ++arrayptr

Les modificateurs des classes de mémorisation « extern »: indique une variable ou une fonction déclarée dans un autre module. « register »: demande au compilateur de placer des variables dans les registres du CPU. Augmente la vitesse de traitement.

Les modificateurs des classes de mémorisation « const »: indique que le contenu d’une variable ne doit pas être modifiée. « volatile »: indique qu’une variable peut voir son contenu changer à tout moment par le programme, des interruptions ou tout autre facteur extérieur. Empêche le compilateur de faire des optimisations sur cette variable.

Opérateurs et expressions Opérateurs à un paramètre: - change le signe de la variable ~ complément à 1 * « indirection » (pointeurs) value = *salary; /* contenu pointé par salaire */ & adresse ++/-- incrémentation/décrémentation sizeof()

Opérateurs et expressions Opérateurs arithmétique: *,/,+,- % modulo Opérateurs sur bits: <<,>> décalage à gauche ou à droite status = byte << 4; & et | ou ^ ou exclusif

Opérateurs et expressions Opérateurs relationnels: <,>,<=,=> Opérateurs d’égalité: ==, != Opérateurs logiques: && et || ou

Opérateurs et expressions Opérateur conditionnel: result = mode > 0 ? 1 : 0; if mode>0 then result=1 else result=0. Opérateurs d’assignation: =, *=, /=, %=, +=, -=, <<=, >>=, &=, |=, ^=

Fonctions en C Plusieurs fonctions pré-définies: printf(), sin(), atoi(), … Le prototype de ces fonctions sont dans fichiers d’entête (header file) printf() dans stdio.h sin() dans math.h

Fonctions en C Extrait de stdio.h /****************************************************************/ /* FORMATTED INPUT/OUTPUT FUNCTIONS */ extern int fprintf(FILE *_fp, const char *_format, ...); extern int fscanf(FILE *_fp, const char *_fmt, ...); extern int printf(const char *_format, ...); extern int scanf(const char *_fmt, ...); extern int sprintf(char *_string, const char *_format, ...); extern int sscanf(const char *_str, const char *_fmt, ...); extern int vfprintf(FILE *_fp, const char *_format, char *_ap); extern int vprintf(const char *_format, char *_ap); extern int vsprintf(char *_string, const char *_format, char *_ap);

Fonctions en C /* Routine de calcul du maximum */ Bien sûr, nous pouvons écrire nos propres fonctions. /* Routine de calcul du maximum */ int imax(int n, int m) { int max; if (n>m) max = n; else max = m; return max; } Déclaration de la fonction Variable locale Valeur retournée par la fonction

Fonctions en C Fonctions sans arguments et ne retournant pas de valeur. void fonction(void) Fonctions avec arguments ne retournant pas de valeur. void fonction(int x, int y, char ch)

Fonctions en C /* Programme principal */ #include <stdio.h> Les fonctions exigent la déclaration d’un prototype avant son utilisation: /* Programme principal */ #include <stdio.h> int imax(int,int); main() { … } int imax(int n, int m) Prototype de la fonction La fonction est définie ici

Fonctions en C /* Programme principal */ #include <stdio.h> La récursivité /* Programme principal */ #include <stdio.h> void up_and_down(int); main() { up_and_down(1) } void up_and_down(int n) printf(“Niveau %d\n” n); if (n<4) up_and_down(n+1); printf(“NIVEAU %d\n” n); Niveau 1 Niveau 2 Niveau 3 Niveau 4 NIVEAU 4 NIVEAU 3 NIVEAU 2 NIVEAU 1

Boucle « for » Initialisation /* Boucle for */ #include <stdio.h> #define NUMBER 22 main() { int count, total = 0; for(count =1; count <= NUMBER; count++, total += count) printf(“Vive le langage C !!!\n”); printf(“Le total est %d\n”, total); } Condition de fin de boucle Incrémentation et autres fonctions

Boucle « while » /* Boucle while */ #include <stdio.h> #define NUMBER 22 main() { int count = 1, total = 0; while(count <= NUMBER) printf(“Vive le langage C !!!\n”); count++; total += count; } printf(“Le total est %d\n”, total); Initialisation Condition de fin de boucle (boucle tant que vrai) (boucle faite que si vrai) Incrémentation

Boucle « do while » /* Boucle do while */ #include <stdio.h> #define NUMBER 22 main() { int count = 1, total = 0; do printf(“Vive le langage C !!!\n”); count++; total += count; } while(count <= NUMBER); printf(“Le total est %d\n”, total); } Initialisation Incrémentation Condition de fin de boucle (boucle tant que vrai) (boucle faite au moins 1 fois)

Choix multiple: « switch case » /* Utilisation de switch case */ main() { char choix; … switch(choix) case ‘a’ : fonctionA(); case ‘b’ : fonctionB(); case ‘c’ : fonctionC(); default : erreur(3); } Paramètre de décision Exécuté si choix = a Exécuté si choix = a ou b Exécuté si choix = a, b ou c Exécuté si choix non répertorié par un « case » et si choix = a, b ou c

Effet du « break » /* Utilisation de switch case */ main() { char choix; … switch(choix) case ‘a’ : fonctionA(); break; case ‘b’ : fonctionB(); break; case ‘c’ : fonctionC(); break; default : erreur(3); } Paramètre de décision Exécuté si choix = a Exécuté si choix = b Exécuté si choix = c Exécuté si choix non répertorié par un « case »

Directives #define <name> <substitution> #define ZERO 0 #undefine <name> #undefine ZERO #include <filename> #include <math.h> #if, #endif, #else

Modèle de la mémoire Le compilateur C génère 6 sections (ou blocs) de code et de données relocalisables.

Modèle de la mémoire Sections initialisées: .text: code exécutable. .cinit: table des variables globales et statiques initialisées. .const: table des valeurs d’initialisation des constantes globales et statiques + les chaînes de car.

Modèle de la mémoire Sections non-initialisées: .bss: espace réservé pour les variables globales et statiques non initialisées. .stack: pile système. .sysmem: pool de mémoire pour allocation dynamique (alloc, malloc, calloc).

Modèle de la mémoire La section « .data » n’est pas utilisée par le compilateur C (réservé pour l’assembleur).