Algorithmique et Langage C -...

of 15 /15
Algorithmique et Langage C Algorithmique et Langage C www.polytech.unice.fr/vg/fr/enseignement/xidian Granet Vincent - [email protected] Xi’an - Octobre 2015 - Avril 2016

Embed Size (px)

Transcript of Algorithmique et Langage C -...

Page 1: Algorithmique et Langage C - users.polytech.unice.frusers.polytech.unice.fr/~vg/xidian/cours/01-Introduction.pdf · Algorithmique et Langage C ... Algorithmique et Langage C Introduction

Algorithmique et Langage C

Algorithmique et Langage Cwww.polytech.unice.fr/~vg/fr/enseignement/xidian

Granet Vincent - [email protected]

Xi’an - Octobre 2015 - Avril 2016

Page 2: Algorithmique et Langage C - users.polytech.unice.frusers.polytech.unice.fr/~vg/xidian/cours/01-Introduction.pdf · Algorithmique et Langage C ... Algorithmique et Langage C Introduction

2/191

Algorithmique et Langage CSommaire

Sommaire

1 Sommaire

2 Bibliographie

3 Introduction

4 Actions élémentaires

5 Types élémentaires

6 Expressions

7 Actions Structurées

8 Routines

9 Énoncés Itératifs

10 Les tableaux

11 Chaînes de Caractères

12 Structures et Unions

13 Pointeurs

14 Compilation séparée

15 Les fichiers

Page 3: Algorithmique et Langage C - users.polytech.unice.frusers.polytech.unice.fr/~vg/xidian/cours/01-Introduction.pdf · Algorithmique et Langage C ... Algorithmique et Langage C Introduction

3/191

Algorithmique et Langage CBibliographie

Bibliographie

American National Standard for Information Systems.Programming Language – C, ANSI X3.159-1989, 89.

Brian W. Kernighan and Dennis M. Ritchie.The C Programming Language.Prentice-Hall, second edition, 1988.(also published in French, ed. MASSON).

Samuel P. Harbison and Guy L. Steele.C : A Reference Manual.Prentice-Hall, second edition, 1987.(also published in French, ed. MASSON).

FAQ C.see comp.lang.c and http://www.eskimo.com/~scs/C-faq/top.html.

C. A. R. Hoare.An axiomatic basis for computer programming.Comm. ACM, Octobre 1969.http://www.polytech.unice.fr/~vg/fr/enseignement/xidian/Doc/hoare-axiomatic.pdf.

Vincent Granet.Mini Manuel d’Algorithmique et de programmation.Dunod, 2012.

Page 4: Algorithmique et Langage C - users.polytech.unice.frusers.polytech.unice.fr/~vg/xidian/cours/01-Introduction.pdf · Algorithmique et Langage C ... Algorithmique et Langage C Introduction

4/191

Algorithmique et Langage CIntroduction

Introduction

Page 5: Algorithmique et Langage C - users.polytech.unice.frusers.polytech.unice.fr/~vg/xidian/cours/01-Introduction.pdf · Algorithmique et Langage C ... Algorithmique et Langage C Introduction

5/191

Algorithmique et Langage CIntroduction

Environnement Informatique

Un programme est une suite finie de commandes préparée à l’avanceet destinée à être exécutée par un ordinateur.

1 Matérielordinateurpériphériques

2 Logicielsystème d’exploitationapplications

Page 6: Algorithmique et Langage C - users.polytech.unice.frusers.polytech.unice.fr/~vg/xidian/cours/01-Introduction.pdf · Algorithmique et Langage C ... Algorithmique et Langage C Introduction

6/191

Algorithmique et Langage CIntroduction

Environnement Matériel

L’ordinateur (modèle de Von Neumann, 1994)

et logique

données

résultats

instructionsregistres

unité d’échange

centrale

mémoire

unité de commande

unité centrale

unité arithmétique

périphériques

Codification binaire de l’informationActions/Objets (instructions/données)

Page 7: Algorithmique et Langage C - users.polytech.unice.frusers.polytech.unice.fr/~vg/xidian/cours/01-Introduction.pdf · Algorithmique et Langage C ... Algorithmique et Langage C Introduction

7/191

Algorithmique et Langage CIntroduction

Environnement Matériel

Équipements externes - périphériques

1 Transcodification pour l’utilisateurécran, clavier, souris,caméra, micro, imprimante, etc.

2 Mémoires secondairesfixes (disques durs, SSD)amovibles (disquettes, clés USB, ...)

3 Connexions réseauxfilaires (Ethernet)ondes (wifi, bluetooth)

Page 8: Algorithmique et Langage C - users.polytech.unice.frusers.polytech.unice.fr/~vg/xidian/cours/01-Introduction.pdf · Algorithmique et Langage C ... Algorithmique et Langage C Introduction

8/191

Algorithmique et Langage CIntroduction

Environnement Logiciel

Système d’exploitationEnsemble de programmes destiné à faire fonctionner l’ordinateur etses périphériques

Linux, Windows, Mac OSUnix, Multics, GCOS, MVS, ...Android, Symbian, Windows pour tablettes et smarphones

Page 9: Algorithmique et Langage C - users.polytech.unice.frusers.polytech.unice.fr/~vg/xidian/cours/01-Introduction.pdf · Algorithmique et Langage C ... Algorithmique et Langage C Introduction

9/191

Algorithmique et Langage CIntroduction

Environnement Logiciel

Principales fonctions d’un système d’exploitation

1 Gestion des processus2 Gestion de la mémoire3 Gestion des E/S4 SGF5 Réseau6 Sécurité7 Interface utilisateur (textuelle, graphique, mixte)

Page 10: Algorithmique et Langage C - users.polytech.unice.frusers.polytech.unice.fr/~vg/xidian/cours/01-Introduction.pdf · Algorithmique et Langage C ... Algorithmique et Langage C Introduction

10/191

Algorithmique et Langage CIntroduction

Environnement Logiciel

Ensemble d’applications

suites bureautiques (éditeurs, tableurs, etc.)outils multimédias (navigateurs, ...)jeux,environnements de programmation...

Page 11: Algorithmique et Langage C - users.polytech.unice.frusers.polytech.unice.fr/~vg/xidian/cours/01-Introduction.pdf · Algorithmique et Langage C ... Algorithmique et Langage C Introduction

11/191

Algorithmique et Langage CIntroduction

Langages de programmation

Langages de programmationLes instructions d’un programme sont décrites à l’aide d’un langage

langage machinelangage d’assemblagelangage de haut niveau

Page 12: Algorithmique et Langage C - users.polytech.unice.frusers.polytech.unice.fr/~vg/xidian/cours/01-Introduction.pdf · Algorithmique et Langage C ... Algorithmique et Langage C Introduction

12/191

Algorithmique et Langage CIntroduction

Langages de programmation

Langage d’assemblage Intel Core I5Ce programme écrit "Bonjour" sur la sortie standard

LC0:.string "Bonjour".text.globl main.type main, @function

main:.LFB0:

.cfi_startprocpushq %rbp.cfi_def_cfa_offset 16.cfi_offset 6, -16movq %rsp, %rbp.cfi_def_cfa_register 6movl $.LC0, %edicall putsmovl $0, %eaxpopq %rbp.cfi_def_cfa 7, 8ret.cfi_endproc

Page 13: Algorithmique et Langage C - users.polytech.unice.frusers.polytech.unice.fr/~vg/xidian/cours/01-Introduction.pdf · Algorithmique et Langage C ... Algorithmique et Langage C Introduction

13/191

Algorithmique et Langage CIntroduction

Langages de programmation

• Un langage de haut niveau offre des moyens d’expression structurésproches des problèmes à résoudre

Définitionelle couvre en particulier les aspects :

1 lexicaux2 syntaxiques3 sémantiques (statique/dynamique)

Mise en œuvre

1 compilation2 interprétation

Page 14: Algorithmique et Langage C - users.polytech.unice.frusers.polytech.unice.fr/~vg/xidian/cours/01-Introduction.pdf · Algorithmique et Langage C ... Algorithmique et Langage C Introduction

14/191

Algorithmique et Langage CIntroduction

Langages de programmation

Bref historiqueDepuis les années 50, des milliers de langages ont été conçus :

Fortran (57, J Backus, IBM), Lisp (58, Mc Carty, MIT), Cobol(59, DOD)Algo 60 (J. Backus), Pascal (68, Wirth), PL/I (IBM), Algo 68C (72, D. Ritchie) , Modula, Modula-2 (Wirth), Ada (J. IchBiah,DOD)C++ (83, B. Stroustrup), Eiffel (B. Meyer), Prolog (A.Colmerauer)Java (J Gosling, 95), Python (90, G. van Rossum), Ruby (95, Y.Matsumoto)

Page 15: Algorithmique et Langage C - users.polytech.unice.frusers.polytech.unice.fr/~vg/xidian/cours/01-Introduction.pdf · Algorithmique et Langage C ... Algorithmique et Langage C Introduction

15/191

Algorithmique et Langage CIntroduction

Construction des programmes

• Construction des programmesProgrammation : difficile/complexeMéthodes de conception et de programmation rigoureuses pourgarantir la fiabilité des programmesProgrammation orientée objet vs procéduraleProgrammation descendante par raffinements successifsAlgorithmeJustesse d’un programmeAxiomatique de Hoare (preuve de programme)