la programmation en langage C

Documents pareils
Introduction au langage C

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

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


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

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

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

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

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

Cours d Algorithmique et de Langage C v 3.0

Java Licence Professionnelle CISII,

Algorithmique et Programmation, IMA

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Programmation système I Les entrées/sorties

Programmer en JAVA. par Tama

Programmation en langage C

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

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

Claude Delannoy. 3 e édition C++

Le prototype de la fonction main()

SUPPORT DE COURS. Langage C

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

Rappels Entrées -Sorties

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Programmation Classique en langage C

Initiation. àl algorithmique et à la programmation. en C

Le langage C. Introduction, guide de reference

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

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

ALGORITHMIQUE ET PROGRAMMATION En C

Langage Éric Guérin 5 octobre 2010

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

Notions fondamentales du langage C# Version 1.0

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

Derrière toi Une machine virtuelle!

Le langage C. Séance n 4

Notes du cours 4M056 Programmation en C et C++ Vincent Lemaire et Damien Simon

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

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

INITIATION A LA PROGRAMMATION

Programmation système de commandes en C

INF 321 : mémento de la syntaxe de Java

Programmation en Java IUT GEII (MC-II1) 1

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE UNIVERSITE M HAMED BOGARA DE BOUMERDES

Conventions d écriture et outils de mise au point

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

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

as Architecture des Systèmes d Information

Les structures de données. Rajae El Ouazzani

Architecture des ordinateurs

OS Réseaux et Programmation Système - C5

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

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

I. Introduction aux fonctions : les fonctions standards

Outils pour la pratique

Introduction au Langage de Programmation C

Chapitre 1 : La gestion dynamique de la mémoire

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

INF111. Initiation à la programmation impérative en C amini/cours/l1/inf111/ Massih-Reza Amini

Les chaînes de caractères

Cours Programmation Système

V- Manipulations de nombres en binaire

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

INTRODUCTION À LA PROGRAMMATION PRATIQUE DU LANGAGE C. M. Le Gonidec

Java Licence Professionnelle CISII,

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

Solutions du chapitre 4

COMPARAISONDESLANGAGESC, C++, JAVA ET

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

Cours de programmation avancée. Le langage C. Université du Luxembourg

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

Compilation (INF 564)

Compléments de documentation Scilab : affichage de texte et formatage de nombres

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

1. Structure d'un programme FORTRAN 95

Les structures. Chapitre 3

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

Chap III : Les tableaux

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

Initiation à la programmation en Python

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

Informatique Générale

3IS - Système d'exploitation linux - Programmation système

TD3: tableaux avancées, première classe et chaînes

Corrigé des TD 1 à 5

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

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Notes du cours 4M056 Programmation en C et C++ Vincent Lemaire

BASES DE DONNEES TP POSTGRESQL

Algorithmique I. Algorithmique I p.1/??

Les processus légers : threads. Système L3, /31

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

Présentation du langage et premières fonctions

Gestion de la mémoire

Transcription:

la programmation en langage C

Classification Tous les Languages de Programmation Languages Imperatifs Languages Declaratifs Programmation Procedurale Ada, Pascal, C Programmation Orientee Objets C++, Java Programmation Concurrente Ada 95 Programmation Fonctionelle LISP, SCHEME Programmation Logique PROLOG 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.

Caractèristique 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 C fichier Compilateur C Code assembleur Assembleur Code executable Linker Code objet

Fichier C (extension.c)! 0 " # 1 $ % % ( 4 2 & % 3 "& %& %' ' # $ & ' % ( ")* + ), #% & % 5 En C le programme principal s'appelle toujours main déclarations de variables de type entier (cases mémoire pouvant contenir un entier) instruction d'affectation de valeur à la variable somme instructions exécutées en séquence l'instruction entre accolades est exécutée pour les valeurs de i allant de 1 à 10 affiche à l'écran la valeur de l'entier contenu dans somme 1 2 3 4 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() Main() toujours la 1ere fonction appelée 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 d 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»: ASCII sur 32 bits 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 x10 38.

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

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émorisationm 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émorisationm 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 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;

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 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) { }

Fonctions en C 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); }

Boucle «for» /* 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); "

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); "

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); "! # $% # %

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); } ' ( ' +, ( ')*

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); } ' ( ' +,

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

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

Modèle de la mémoirem 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émoirem 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émoirem moire La section «.data» n est pas utilisée par le compilateur C (réservé pour l assembleur).