Algorithmique et Langage C -...

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

Transcript of Algorithmique et Langage C -...

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

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

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.

4/191

Algorithmique et Langage CIntroduction

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

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)

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)

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

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)

10/191

Algorithmique et Langage CIntroduction

Environnement Logiciel

Ensemble d’applications

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

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

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

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

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)

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)