language c

Download Language c

Post on 30-Jun-2015

277 views

Category:

Documents

6 download

Embed Size (px)

TRANSCRIPT

I.U.T. de Marne-La-Valle

Introduction l'informatique et programmation en langage C(DUT Gnie Thermique et Energie) Jean FruitetJean.Fruitet@univ-mlv.fr

1999

Introduction la programmation

I.U.T. de Marne-La-Valle

Introduction l'informatique et programmation en langage C(DUT Gnie Thermique et Energie)Jean FruitetJean.Fruitet@univ-mlv.fr

Avertissement Caractrisation dun problme informatique Introduction linformatique Le codage binaire Notion dalgorithme et de machine accs direct Langage C Processus itratifs Fonctions et sous-programmes Notion de complexit Des donnes aux structures de donnes : tableaux, calcul matriciel Calcul numrique : fonctions numriques, rsolution d'quation, intgration Structures de donnes : ensembles, listes, piles, files, hachage, arbres, graphes Algorithmes de tri Bibliographie Table des matires

3 3 5 7 14 19 43 44 48 50 61 76 112 123 122

Jean Fruitet - IUT de Marne La Valle - 2

Introduction la programmation

Avertissement Ce cours sadresse aux tudiants de premire anne de DUT de Gnie Thermique et Energie (GTE). Il leur est prsent en quelques dizaines dheures une trentaine les rudiments de la programmation numrique et des notions dalgorithmique. Ces tudiants n'tant pas destins une carrire dinformaticien professionnel, je naborde pas lalgorithmique dans tous ses raffinements. En particulier les notions pourtant fondamentales de preuve de programme et danalyse de complexit ne sont pas voques. Ce cours est divis en quatre parties : - notion d'informatique et de codage ; - structure d'un ordinateur : la machine accs direct (MAD / RAM) ; - langage de programmation : le langage C ; - algorithmique numrique et structures de donnes. Aprs quelques notions de thorie de l'information et de codage (codage binaire, reprsentation des entiers et des flottants) j'introduis la programmation de fonctions numriques sur ordinateur PC sous MS-DOS puis l'utilisation de quelques structures de donnes fondamentales (tableaux, piles, files, arbres, graphes) et les principaux algorithmes de tri. Ce cours ne fait donc aucune place la technologie des ordinateurs, leur architecture, systme d'exploitation et de fichiers. Il n'est pas non plus question d'apprentissage de logiciels bureautiques (traitement de texte ou de tableur). Ce n'est pas que ces connaissances ne soient pas ncessaires aux techniciens, mais je laisse d'autres enseignants le soin d'y contribuer. Sagissant de la syntaxe dun langage de programmation, jintroduis le langage RAM, pour passer rapidement au langage C. J'insiste beaucoup dans ce cours sur la ncessit d'une programmation structure descendante. Cette dmarche est recommande depuis des lustres par tous les spcialistes. Malheureusement l'exprience montre que livr lui-mme le programmeur moyen se permet des liberts qui rendent rapidement ses programmes illisibles et inutilisables. Mais ce ne sera pas faute d'avoir t prvenu... Caractrisation dun problme informatique L'art de programmer, c'est l'art de faire rsoudre des problmes par des machines. Il sagit bien dun art, au sens de lartisan, qui passe par une longue priode dapprentissage et dimitation. Dans cet exercice certains individus ont des dispositions naturelles ; pour les autres un apprentissage rigoureux fournit les rudiments dune mthode. Le reste est affaire de travail et dinvestissement personnels. Un ordinateur est dnu dintelligence ; il ne peut donc rsoudre que les problmes pour lesquels existe une mthode de rsolution algorithmique, cest--dire une recette dterministe. De plus, mme si la recette existe en thorie pour rsoudre tel problme, encore faut-il que lnonc du problme lespace des paramtres et lensemble des solutions soient de dimension finie, en raison de la limitation en taille de la mmoire des machines. Enfin, condition ultime, la mise en oeuvre dun algorithme doit avoir une dure finie. Un problme dont la solution ncessite de disposer dun temps infini nest pas considr comme rsoluble par ordinateur. Ces trivialits vont donc limiter nos ambitions de programmeur une classe de problmes assez restreinte, dautant que ne nous disposons pas de puissantes machines de calcul.Jean Fruitet - IUT de Marne La Valle - 3

Introduction la programmation

2.1. Le traitement de linformation Linformatique est la science du traitement de linformation. Une information est un lment de connaissance susceptible dtre cod, transmis et trait de manire automatique. Le codage numrique en nombres binaires tant adapt la conception de machines lectroniques, une partie essentielle du cours dinformatique porte sur la reprsentation des nombres et la logique (algbre de Boole) binaires. Je considrerai comme acquises les notions dopration lmentaire (addition, soustraction, multiplication et division relle et euclidienne) sur les ensembles de nombres naturels, relatifs, rationnels, rels et complexes, qui ne seront pas redfinies, non plus que les oprations ensemblistes union, intersection, complmentation, ni les notions de relation binaire, relation dquivalence et relation dordre partiel ou total. Concernant les notions de constante numrique, de variable, dinstruction daffectation, de test, de boucle, qui sont au centre des techniques de programmation, elles seront redfinies ou prcises selon les besoins. 2.2. Quelques exemples de problmes Lordinateur fonctionne en binaire, mais il peut rsoudre des problmes autres que numriques. Et bien que le calculateur lectronique soit linstrument privilgi de lingnieur, ce nest pas en programmant des problmes numriques quon apprend le plus efficacement programmer. Pourtant il est de tradition dans les sections techniques et scientifiques de commencer par des exercices numriques : - Rsoudre une quation du second degr coefficients rels dans le corps de nombres complexes. - Programmer la division euclidienne de deux entiers en nemployant que des soustractions. - Trouver le plus grand diviseur commun de deux nombres naturels (PGDC). - Enumrer les n premiers nombres premiers. - Tester la conjecture polonaise. - Calculer le nime lment de la suite de Fibonacci. - Calculer le minimum, le maximum, la moyenne et lcart-type dune distribution numrique. - Calculer les zros dun polynome, tracer graphiquement le graphe d'une fonction numrique - inverser une matrice. Dautres problmes qui ne sont pas strictement numriques sont pourtant tout aussi instructifs pour lart de la programmation. Ils seront soit traits soit voqus : - Trouver un mot dans un dictionnaire. - Construire un arbre hirarchique - Ordonner une liste de mots. - Fusionner deux listes de mots dj ordonns. - Enumrer les parcours dun graphe et trouver le plus court chemin entre deux sommets. - Filtrer une image, etc. Dmarche Partant dun problme lmentaire nous montrerons comment le reformuler en des termes susceptibles dtre traits par un ordinateur idal. Puis nous coderons ces algorithmes en langage C. Nous encourageons le lecteur implanter ses propres solutions, les modifier, ventuellement les amliorer ou les rutiliser pour dautres applications.Jean Fruitet - IUT de Marne La Valle - 4

Introduction la programmation

Tous les exemples fournis en C ont t tests sur compilateur Turbo C sur PC et Think C sur Macintosh. Je remercie par avance celles et ceux qui voudront bien me transmettre remarques et suggestions. Introduction linformatique L'Informatique est la science du traitement automatique de l'information. La notion d'information est assez gnrale. Pour l'informatique elle prend un sens particulier : Une information est un lment ou un systme de connaissance pouvant tre transmis au moyen d'un support et d'un codage appropri et pouvant tre compris. Par exemple des hiroglyphes (codage) sur un papyrus gyptien (support) constituent une information sur la socit gyptienne antique ds qu'on a t en mesure de les lire et d'en comprendre le sens (Champollion au XIXme sicle). 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 particulirement prissable... Quand le vent se lve et que la houle se forme, la mer devient 'agite'. L'tat de la mer est une information qui peut prendre des valeurs diffrentes, au cours du temps. Langage La plupart des informations que les Humains changent sont supportes par un langage, c'est-dire des groupes de sons (les mots), qu'il faut assembler "d'une certaine manire" (grammaire) pour que les phrases aient un sens... Avec l'invention de l'criture, ces mots ont eu une transcription (recodage) sous forme de symboles graphiques (des formes) dessins ou imprims. Le concept de mot est fondamental en informatique, de mme que celui de langage. Un langage est un ensemble de mots construits avec les lettres choisies dans un alphabet. Les mots sont assembls en phrases selon des rgles de grammaire prcises qui dfinissent la syntaxe du langage. Le sens attach ces phrases, c'est--dire leur signification, constitue la smantique. L'essentiel de ce cours va consister expliquer comment sont commandes les machines que nous nommons ordinateurs, capables d'excuter des tches complexes de traitement de l'information. Traitement de l'information Le traitement de l'information consiste en une suite d'oprations transformant une reprsentation de cette information en une autre reprsentation plus facile manipuler ou interprter. Exemples : "3*2" remplac par "6" "Mille neuf cent quatre vingt treize" est remplac par "1993" "La somme des carrs des cts de l'angle droit d'un triangle rectangle est gale au carr de l'hypotnuse" est remplac par "Thorme de Pythagore" "Championne olympique 1992 et 1996 du 400 mtres fminin" est remplac par "Marie-Jos Prec". Dans une entreprise, traiter l'information peut consister tablir la paye, faire la facturation, grer le stock, dresser un bilan. Dans un atelier, diriger un robot. En mtorologie, reconnatre un cyclone sur une phot