Décomposition d'un programme C

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


INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Introduction au langage C

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

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

Programmation en langage C

SUPPORT DE COURS. Langage C

Algorithmique et Programmation, IMA

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

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

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

Java Licence Professionnelle CISII,

Rappels Entrées -Sorties

Cours d Algorithmique et de Langage C v 3.0

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

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

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Le langage C. Introduction, guide de reference

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

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)

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

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

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

Programmation C. Apprendre à développer des programmes simples dans le langage C

Langage Éric Guérin 5 octobre 2010

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

Programmer en JAVA. par Tama

Claude Delannoy. 3 e édition C++

Conventions d écriture et outils de mise au point

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

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

Informatique Générale

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

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE UNIVERSITE M HAMED BOGARA DE BOUMERDES

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

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

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

LES TYPES DE DONNÉES DU LANGAGE PASCAL

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Programme Compte bancaire (code)

Les structures. Chapitre 3

INITIATION A LA PROGRAMMATION

Chapitre 1 : La gestion dynamique de la mémoire

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

ACTIVITÉ DE PROGRAMMATION

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

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

as Architecture des Systèmes d Information

Algorithmique, Structures de données et langage C

INF 321 : mémento de la syntaxe de Java

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

TP 1. Prise en main du langage Python

Logiciel de Base. I. Représentation des nombres

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

Les chaînes de caractères

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

AMICUS 18 (2ème partie) 4) Présentation du logiciel Amicus IDE

I. Introduction aux fonctions : les fonctions standards

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

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

V- Manipulations de nombres en binaire

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

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

Le langage C. Séance n 4

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Représentation d un entier en base b

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

Programmation Classique en langage C

COMPARAISONDESLANGAGESC, C++, JAVA ET

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

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

Cours Informatique Master STEP

Programmation système I Les entrées/sorties

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

Notions fondamentales du langage C# Version 1.0

Compilation (INF 564)

Chapitre 10. Les interfaces Comparable et Comparator 1

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

Java Licence Professionnelle CISII,

Utilisation d objets : String et ArrayList

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

Support de Cours de Langage C. Christian Bac

Le prototype de la fonction main()

STAGE IREM 0- Premiers pas en Python

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

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

1. Structure d'un programme FORTRAN 95

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

Introduction au Langage de Programmation C

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

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

Programmation en Java IUT GEII (MC-II1) 1

Chapitre 10 Arithmétique réelle

Compression de Données - Algorithme de Huffman Document de Conception

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

Cours 1 : Qu est-ce que la programmation?

Transcription:

Décomposition d'un programme C Un programme C est composé de plusieurs blocs. Chacun d'entre eux ayant un rôle particulier dans une ou plusieurs phases de la compilation ou de l'exécution: Exemple : Inclusions // indique le nom des fichiers à insérer dans le fichier source // exemple : #include <stdio.h> (voir TP) #définitions de macros // permet de définir un ensemble de macro variables et macro constantes // voir le document // http://eric.bachard.free.fr/utbm_lo20_a07/documentation/gcc/preprocesseur_et_macros.pdf Définitions des variables globales // les variables déclarées dans ce bloc seront accessibles par toutes // les fonctions du programme, y compris main() Définitions des prototypes de fonctions // définitions qui donnent les règles d'usage des fonctions // utilisées dans la suite du programme : nombre et types des arguments // ainsi que le type de la valeur retournée // main () est la fonction principale, qui sera reconnue par le linker. Cette fonction doit exister et être // unique. Elle est la seule fonction pouvant interagir avec le système d'exploitation // Un binaire exécutable qui n'a pas de main() est une bibliothèque (library en anglais) int main(...) { définition des variables locales à main() // ces variables ne sont pas accessible de puis // l'extérieur de la fonction instructions // toute expression valide en langage C devient une isntruction dès qu'elle est // suivie d'un point virgule } fonction1(paramètres) { définition des variables locales à fonction1 instructions } fonction2(parametres) { définition des variables locales à fonction2 instructions }... etc Note : aucune structure de contrôle, ni fonction complexe n'est abordée dans cette partie Les accolades marquent le début et la fin d'un bloc. Page 1/11

Mots réservés du langage C Les mots réservés ou mots clés servent à la sémantique du langage. Ils ne peuvent être utilisés comme identificateurs ou variables, et sont utilisés en tant que : spécificateur de type d'objet spécificateur de classe d'allocation opérateur symbolique instruction de contrôle étiquette de contrôle Mots réservés du langage Mots réservés du Langage C auto extern short break float sizeof case for static char goto struct continue if switch default int typedef do long union double register unsigned else return while const signed volatile enum void asm Notation : en jaune, mots réservés appartenant à la définition du langage C par Kernigan & Ritchie En bleu, celle ajoutée par la norme ANSI Mot clés en fonction de leur utilisation : Type Classe Instruction Operateur Etiquette int auto if sizeof case char extern else default short static while long register do unsigned typedef for float double strcture union enum switch break continue goto return Note : il n'y a aucun mot clé du type READ, WRITE, PRINT. Cela signifie que le langage C ne dispose d'aucune Page 2/11

instruction d'entrée sortie par défaut -> il faudra écrire la fonction!! Page 3/11

Les variables simples Les variables sont avec les opérateurs les deux éléments de base du langage C. Leur combinaison permet de former des expressions et des instructions, éléments constitutifs du langage. On distingue deux familles de variables : les variables simples ( scalaires) les variables composées (étudiées dans un autre cours) Syntaxe de déclaration d'une variable : Permanence classe_de_stockage modifieur type identificateur = valeur Critère de permanence : indique si la variable est susceptible de changer indépendamment du programme ou si la variable peut être modifée par le programme. Ce critère défini dans la norme ANSI n'est pas pris en compte par tous les compilateurs. Critères de permanence possibles : const : sert à informer le compilateur qu'une variable ne peut être modifiée ; le code peut alors être optimisé en conséquence. En particulier, les variables constantes sont placées dans une section particulières du programme après compilation. Volatile : sert à informer le compilateur qu'une variable peut être modifiée par un agent extérieur au programme (souvent un dispositif hardware) Classe de stockage d'une variable : indique la façon et l'endroit où sera stockée la variable. Les possibilités sont : auto static extern register Modifieur (facultatif) : destiné à agir sur le type de données. Modifieurs possibles : signed unsigned short long Type de données : c'est un des types reconnus par le langage C. Il y a plusieurs types possibles. types de base : char, int, float, double, void tableaux et pointeurs les types définis par l'utilisateur : struct, union, enum, typedef Page 4/11

Identificateur : c'est le nom de la variable déclarée. Le terme identificateur désigne le nom des variables, des fonctions, des macro instructions, des types, etc. Les identificateurs obéissent aux règles de construction suivantes: un identificateur est formé d'une suite de lettres ( A à Z, a à z), de chiffres (0 à 9) ou de caractère(s) de soulignage; Le premier caractère d'un identificateur ne peut pas être un chiffre; Les identificateurs sont sensibles à la casse; il n'y a pas de limite à la longueur d'un identificateur. Toutefois, seuls les 31 premiers caractères sont en général significatifs. Page 5/11

Remarques importantes concernant le nom des variables : Les noms sont composés de chiffres et lettres Le premier caractère doit être une lettre Le caractère de soulignement " _ "appelé underscore compte comme une lettre. Son emploi est déconseillé pour le début du nom d'une variable, car cet usage est réservé aux bibliothèques qui font un usage important de cette convention de nommage. Par contre, dans un nom composé, son emploi est très utilisé. Exemple : ne_xml_valid. L'usage le plus répandu consiste à utiliser les minuscules pour les noms de variables, et les majuscules pour les constantes symboliques. Longueur d'un nom de variable : le compilateur tient compte des 31 premiers caractères des noms internes au minimum. On ne peut pas utiliser les mot clés comme noms de variable. Il est essentiel de bien nommer les variables : nom court pour les variables locales (indices dans une boucle..etc) nom descriptif pour les variables externes (facilitant la comprehension du code en même temps) Les types de données et leurs tailles : char : un seul octet, dont la valeur représente un caractère du clavier de la machine utilisée, par exemple. int : nombre entier : le nombre d'octets utilisé pour le représenter, dépend de la machine ( 2 ou 4). Il est vivement recommandé de vérifier la taille d'un entier. (avec sizeof() par exemple) Page 6/11

Représentation des grandeurs dans le systèmes numériques Remarque : représentation de -8 à +7 en binaire Valeur en décimal b 3 2 3 b 2 2 2 b 1 2 1 b 0 2 0 0 0 0 0 0 1 0 0 0 1 2 0 0 1 0 3 0 0 1 1 4 0 1 0 0 5 0 1 0 1 6 0 1 1 0 7 0 1 1 1-8 1 0 0 0-7 1 0 0 1-6 1 0 1 0-5 1 0 1 1-4 1 1 0 0-3 1 1 0 1-2 1 1 1 0-1 1 1 1 1 Intérêt de ce codage : il donne toujours un résultat correct par addition binaire, quel que soit le signe des grandeurs. Exemple : 6 + (-5) => 6 10 = 0110 2, -5 10 = 1011 -> 0100 + 1011 = 0001 Sur 16 bits : Décimal -128... +127 0 +1... +127 Binaire en complément à 2 $80... à... $FF $00 $01... $7F Important : discontinuité des valeurs binaires, continuité des valeurs numériques Page 7/11

Représentation en complément à deux décalé Permet d'obtenir la continuité du poids décimal global de la représentation binaire. Par exemple, pour une représentation sur 8 bits, on additionne $80 au résultat obtenu par représentation en complément à 2 Décimal -128......-1 0 +1... +127 Binaire en complément à 2 $80... $FF $00 $01... $7F Binaire en complément à 2 décalé $00... $7F $80 $81... $FF Exemple d'application : convertisseur analogique numérique, à 8 bits, de résolution. En entrée : mot de 8 bits, en sortie tension pouvant variant entre -Vmax et +V max Représentation du type réel [FIXME] Les types En C il faut déclarer les variables avant de les utiliser, en général au début de la fonction, avant la première instruction exécutable Note: ce n'est plus vrai avec la norme C99 : on peut déclarer les variables n'importe où dans la fonction. Commentaires : placés entre /* et */ Intérêt : même sur plusieurs lignes. On ne peut pas imbriquer deux commentaires (essayer de voir pourquoi). Le type char : Utilisé pour déclarer des variables prenant par exemple pour valeur celle d'un caractère, généralement codée sur 8bits. Ce type permet le stockage de tous les caractères de la norme ASCII, mais aussi les caractères ASCII étendus de la norme IBM PC (allant de 127 à 255 ). Valeurs possibles : unsigned char -> 0 à 255 char -> -128 +127 Le type int (pour integer, qui signifie entier ) : Dépend de la machine utilisée : un entier peut être codé sur 16 ou 32 bits, en fonction de la machine utilisée. sur 16 bits : désigne une valeur comprise entre -32768 et +32767 sur 32 bits : désigne une valeur comprise entre -2 147 483 648 et 2 147 483 647 Le type float (réel) : Le type float est utilisé pour déclarer des variables prenant pour valeur un nombre réel en virgule flottante positif ou négatif. La valeur de la variable occupe 4 octets en mémoire. Valeurs possibles comprises entre -10-38 et 10-38 avec un pas minimal de 10-38 et une précision de 6 décimales Le type double : Page 8/11

réel occupant 8 octets en mémoire. Le type long double : occupe 10 octets en mémoire, 18 chiffres significatifs Déclaration : En algorithme : réel taux_de_tva réel note_moyenne réel distance En C : float taux_de_tva; float moyenne; double distance; Type void : Le type void est principalement utilisé dans les déclarations de conftions. Comme type de fonction, il précise qu'aucune valeur n'est rnevoyée par la fonction (comme une prcédure en Pascal). Comme unique type de paramètre, il indique que la fonction ne possède aucun paramètre. Page 9/11

Les modifieurs Le modifieur signed Le modifieur signed peut être employé sur les types char et int. Il a pour efet de centtrer autour de 0 les valeurs possibles (donc de diviser par 2 la plage possible en valeur absolue). Type Minima Maxima signed char -128 +127 signed int -32768 +32767 signed long int -2 147 483 648 +2 147 483 647 Le modifieur unsigned Le modifieuur unsigned peut être utilisé sur les types char et int. Il a poour résultat de rendre la borne inférieure des valeurs possibles égale à 0. Type Minima Maxima unsigned char 0 255 unsigned int 0 65535 unsigned long int 0 4 294 967 295 Une des utilisations le s plus courantes de ce modifieur est la définition d'un type BYTE : #define BYTE unsigned char Le modifieur short : Le modifieur short peut être utilisé avec les types char et int. Il a pour effet de réduire l'intervalle des valeurs du type. Type Minima Maxima short char 0 127 short int -32768 32767 Remarques : short est équivalent à short int une variable de type short occupe toujours 2 octets en mémoire short est considéré comme un type de données simple. Unsigned et signed peuvent donc être appliqués a short Type Minima Maxima unsigned short int -32768 +32767 Signed short int 0 +65535 Page 10/11

Le modifieur long : Le modifieur long peut être employé comme type de données simple. u nsigned et signed peuvent donc lui être appliqué. Type Minima Maxima signed long int -2 147 483 648 +2 147 483 647 unsigned long int 0 +4 294 967 295 Constantes caractères : Les constantes caractères définissent toutes des données formées d'un seul caractère. Syntaxe : 'caractere' /* malgré la présentation, il s'agit d'un seul caractère à la fois */ caractere est un caractère ASCII imprimable, à l'exception de ' et de \ qui devront être "échappés". Exemples : 'a' lettre a minuscule, code décimal 64 '@' caractère a commercial, code décimal 97 'V' lettre v majuscule, code décimal 86 Constantes chaines de caractère Syntaxe : "suite de caractères" Type : toutes les chaines de caractères sont du t ype tableau de char Ici, cette chaine de caractères contient les éléments suivants : s, u, i, t, e, "caractère espace", d, e, "caractère espace", c, a, r, a, c,t, è, r, e, s + le caractère NUL (code ASCII 0) noté aussi \0 Cette chaine de caractères occupe donc en mémoire : 19 caractères + \0 en tout, c'est à dire 20 caractères Page 11/11