EC
Algorithmique et programmation C
Compétences requises
Notions d'algorithmique.
--
Basic algorithmic notions.
Compétences visées
Ce cours a pour but de découvrir l’ensemble des concepts importants de la programmation impérative. Ces concepts généraux inclus la notion d’algorithme, de complexité, d’abstraction et de représentation mémoire des structures de données. La programmation se fera avec le langage C, ce qui permettra d’aborder des concepts comme la compilation, le typage, le débogage, la gestion de la mémoire et l’utilisation de librairies.
À l'issue de cet enseignement, l'étudiant sera capable de créer des programmes en utilisant des librairies existantes. Il sera capable de s’adapter rapidement et de comprendre le fonctionnement des autres langages de programmation utiliser dans la suite de la formation.
--
The goals of this lecture is to discover the important concepts behind imperative computer programming. The C programming language will be teached to present both low and high level programming concepts.
After this lecture, the student will be able to create complex programs using external libraries. He will able to adapt and understand quickly new libraries and to have a better understanding of how other programming languages works under the hood.
Syllabus
Principes de la programmation impérative.
Abstraction, utilisation de librairies.
Définition de fonctions, pré-conditions, post-conditions.
Types de base, constantes, identificateurs, expressions. Instructions et compositions séquentielle, conditionnelle, et itérative.
Etude et analyse d'algorithmes.
Introduction à la complexité d'algorithmes.
Méthodologie de gestion des erreurs, débogage.
Notion de tableau et gestion des pointeurs.
Récursivité, mécanisme de pile d'exécution et portée des variables.
Mécanisme d'allocation statique et dynamique.
Appels par valeur et par pointeur
Construction d'algorithmes et de programmes simples.
Construction des types simples et structures de données.
Entrées-sorties et formats.
Mécanismes de la compilation (pré-processeur, compilation proprement dite, assemblage et édition de liens). Compilation de librairies. Compilation séparée et structuration d'un projet informatique (makefile).
Exemples d'utilisation de libraires complexes.
--
The lecture will comprise:
Principles of imperative computer programming.
Abstraction, library usage
Function definition, preconditions, postconditions.
Basic types, constants, identifiers, expressions, instructions, sequential composition, condition, iteration.
Algorithm analysis.
Introduction to complexity
Error management, debugging.
Array, pointers.
Recursion, call stack, variable scope.
Static and dynamic memory allocation.
Call by value, by pointer.
Algorithm construction, and program structur.
Structur.
Input/Output and format.
Compilation steps. Compilation of libraries. Makefile.