Caractérisation d’un problème informatique
Introduction à l’informatique
Le codage binaire
Notion d’algorithme et de machine à accès direct
Langage C
Processus itératifs
Fonctions et sous-programmes
Notion de complexité
Des données aux structures de données : tableaux, calcul matriciel
Calcul numérique : fonctions numériques, résolution d’équation, intégration
Structures de données : ensembles, listes, piles, files, hachage, arbres, graphes
Algorithmes de tri
Bibliographie
Avertissement
Ce cours s’adresse aux étudiants de première année de DUT de Génie Thermique et Energie (GTE). Il leur est présenté en quelques dizaines d’heures —une trentaine— les rudiments de la programmation numérique et des notions d’algorithmique. Ces étudiants n’étant pas destinés à une carriére d’informaticien professionnel, je n’aborde pas l’algorithmique dans tous ses raffinements. En particulier les notions pourtant fondamentales de preuve de programme et d’analyse de complexité ne sont pas évoquées.
Ce cours est divisé en quatre parties :
– notion d’informatique et de codage ;
– structure d’un ordinateur : la machine à accès direct (MAD / RAM) ;
– langage de programmation : le langage C ;
– algorithmique numérique et structures de données
Caractérisation d’un problème informatique
L’art de programmer, c’est l’art de faire résoudre des problèmes par des machines. Il s’agit bien d’un art, au sens de l’artisan, qui passe par une longue période d’apprentissage et d’imitation. Dans cet exercice certains individus ont des dispositions naturelles ; pour les autres un apprentissage rigoureux fournit les rudiments d’une méthode. Le reste est affaire de travail et d’investissement personnels.
Un ordinateur est dénué d’intelligence ; il ne peut donc résoudre que les problèmes pour lesquels existe une méthode de résolution algorithmique, c’est-à-dire une recette déterministe. De plus, même si la recette existe en théorie pour résoudre tel problème, encore faut-il que l’énoncé du problème -l’espace des paramètres— et l’ensemble des solutions soient de dimension finie, en raison de la limitation en taille de la mémoire des machines. Enfin, condition ultime, la mise en oeuvre d’un algorithme doit avoir une durée finie. Un problème dont la solution nécessite de disposer d’un temps infini n’est pas considéré comme résoluble par ordinateur. Ces trivialités vont donc limiter nos ambitions de programmeur à une classe de problèmes assez restreinte, d’autant que ne nous disposons pas de puissantes machines de calcul.
2.1. Le traitement de l’information
L’informatique est la science du traitement de l’information. Une information est un élément de connaissance susceptible d’être codé, transmis et traité de manière automatique. Le codage numérique en nombres binaires étant adapté à la conception de machines électroniques, une partie essentielle du cours d’informatique porte sur la représentation des nombres et la logique (algèbre de Boole) binaires. Je considèrerai comme acquises les notions d’opération élémentaire (addition, soustraction, multiplication et division réelle et euclidienne) sur les ensembles de nombres naturels, relatifs, rationnels, réels et complexes, qui ne seront pas redéfinies, non plus que les opérations ensemblistes union, intersection, complémentation, ni les notions de relation binaire, relation d’équivalence et relation d’ordre partiel ou total. Concernant les notions de constante numérique, de variable, d’instruction d’affectation, de test, de boucle, qui sont au centre des techniques de programmation, elles seront redéfinies ou précisées selon les besoins.
2.2. Quelques exemples de problèmes
L’ordinateur fonctionne en binaire, mais il peut résoudre des problèmes autres que numériques. Et bien que le calculateur électronique soit l’instrument privilégié de l’ingénieur, ce n’est pas en programmant des problèmes numériques qu’on apprend le plus efficacement à programmer. Pourtant il est de tradition dans les sections techniques et scientifiques de commencer par des exercices numériques :
– Résoudre une équation du second degré à coefficients réels dans le corps de nombres complexes.
– Programmer la division euclidienne de deux entiers en n’employant que des soustractions.
– Trouver le plus grand diviseur commun de deux nombres naturels (PGDC).
– Enumérer les n premiers nombres premiers.
– Tester la conjecture polonaise.
Introduction à l’informatique
L’Informatique est la science du traitement automatique de l’information.
La notion d’information est assez générale. Pour l’informatique elle prend un sens particulier : Une information est un élément ou un système de connaissance pouvant être transmis au moyen d’un support et d’un codage approprié et pouvant être compris.
Par exemple des hiéroglyphes (codage) sur un papyrus égyptien (support) constituent une information sur la société égyptienne antique dés qu’on a été en mesure de les lire et d’en comprendre le sens (Champollion au XIXéme siècle). Une information est une fonction du temps, puisque le contenu d’un message est sujet à changer au cours du temps. L’information « La mer est ‘calme’ dans le Golfe de Gascogne » est particulièrement périssable… Quand le vent se lève et que la houle se forme, la mer devient ‘agitée’. L’état de la mer est une information qui peut prendre des valeurs différentes, au cours du temps
Programmation en langage C (664 KO) (Cours PDF)