Algorithmique et Langage C -...
Embed Size (px)
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)