Algorithmique et Langage C
Algorithmique et Langage C
www.polytech.unice.fr/žvg/index-xidian.html
Granet Vincent - Vincent.Granet@univ-cotedazur.fr
Xi’an - Octobre 2019 - Avril 2020
Algorithmique et Langage C Bibliographie
Bibliographie
International Organization for Standardization
Programming Language – C, ISO/IEC 9899 :2011, 2011.
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.
Algorithmique et Langage C Introduction
Introduction
Algorithmique et Langage C Introduction
Environnement Informatique
Un programme est une suite finie de commandes préparée à l’avance et destinée à être exécutée par un ordinateur.
1 Matériel ordinateur périphériques
2 Logiciel
système d’exploitation applications
Algorithmique et Langage C Introduction
Environnement Matériel
L’ordinateur (modèle de Von Neumann, 1944)
et logique
données
résultats instructions registres
unité d’échange
centrale mémoire unité de commande
unité centrale
unité arithmétique
périphériques
Codification binaire de l’information Actions/Objets (instructions/données)
Algorithmique et Langage C Introduction
Environnement Matériel
Équipements externes - périphériques
1 Transcodification pour l’utilisateur écran, clavier, souris,
caméra, micro, imprimante, etc.
2 Mémoires secondaires fixes (disques durs, SSD)
amovibles (disquettes, clés USB, ...)
3 Connexions réseaux filaires (Ethernet) ondes (wifi, bluetooth)
Algorithmique et Langage C Introduction
Environnement Logiciel
Système d’exploitation
Ensemble de programmes destiné à faire fonctionner l’ordinateur et ses périphériques
Linux, Windows, Mac OS Unix, Multics, GCOS, MVS, ...
Android, Symbian, Windows pour tablettes et smarphones
Algorithmique et Langage C Introduction
Environnement Logiciel
Principales fonctions d’un système d’exploitation
1 Gestion des processus
2 Gestion de la mémoire
3 Gestion des E/S
4 SGF
5 Réseau
6 Sécurité
7 Interface utilisateur (textuelle, graphique, mixte)
Algorithmique et Langage C Introduction
Environnement Logiciel
Ensemble d’applications
suites bureautiques (éditeurs, tableurs, etc.) outils multimédias (navigateurs, ...)
jeux,
environnements de programmation ...
Algorithmique et Langage C Introduction
Langages de programmation
Langages de programmation
Les instructions d’un programme sont décrites à l’aide d’un langage langage machine
langage d’assemblage langage de haut niveau
Algorithmique et Langage C Introduction
Langages de programmation
Langage d’assemblage Intel Core I5
Ce programme écrit"Bonjour"sur la sortie standard
LC0:
.string "Bonjour"
.text .globl main
.type main, @function main:
.LFB0:
.c _startproc pushq %rbp
.c _def_cfa_offset 16 .c _offset 6, -16 movq %rsp, %rbp .c _def_cfa_register 6 movl $.LC0, %edi call puts movl $0, %eax popq %rbp .c _def_cfa 7, 8 ret
.c _endproc
Algorithmique et Langage C Introduction
Langages de programmation
• Unlangage de haut niveauoffre des moyens d’expression structurés proches des problèmes à résoudre
Définition
elle couvre en particulier les aspects :
1 lexicaux
2 syntaxiques
3 sémantiques (statique/dynamique) Mise en œuvre
1 compilation
2 interprétation
Algorithmique et Langage C Introduction
Langages de programmation
Bref historique
Depuis les années 50, desmilliersde 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 68 C(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)
Algorithmique et Langage C Introduction
Construction des programmes
• Construction des programmes
Programmation : difficile/complexe
Méthodes de conception et de programmation rigoureuses pour garantir la fiabilité des programmes
Programmation orientée objetvsprocédurale
Programmation descendante parraffinements successifs Algorithme
Justesse d’un programme
Axiomatique de Hoare (preuve de programme)