Langages et Concepts de Programmation -  Introduction à la programmation enlangage C
142 pages
Français

Langages et Concepts de Programmation - Introduction à la programmation enlangage C

Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres
142 pages
Français
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Description

L’objectif général de ce cours est l’apprentissage de méthodes et outils permettant de résoudre certains problèmes de l’ingénieur nécessitant un traitement automatisé de l’information.

Informations

Publié par
Nombre de lectures 17
Licence : En savoir +
Paternité, pas d'utilisation commerciale, partage des conditions initiales à l'identique
Langue Français
Poids de l'ouvrage 4 Mo

Extrait

Langages et Concepts de Programmation Introduction á la programmation en langageC
Cours 1A 2013-2014
Jean-Jacques Girardot, Marc Roelens girardot@emse.fr, roelens@emse.fr Septembre 2013
Ècole Nationale Suprieure des Mines de Saint-Etienne 158 Cours Fauriel 42023 SAINT-ÈTIENNE CEDEX
2
Version du 7 septembre 2013.
Premire partie Cours
3
Introduction
0.1 Objectifsdu cours L’objectif gnral de ce cours est l’apprentissage de mthodes et outils permettant de r-soudre certains problmes de l’ingnieur ncessitant un traitement automatis de l’information. L’une des finalits est galement de proposer aux lves entrant en premire anne Ā l’Ècole des Mines de Saint-Etienne une introduction Ā l’informatique (en tant que science). Il s’agit donc, dans un premier temps, d’analyser un problme, d’en proposer un modle, et d’tablir une mthode de rsolution possible. Cette phase relve des techniques gnrales de modlisation. Dans un second temps, le modle et la mthode de rsolution choisis sont impl-ments en utilisant efficacement la technologie informatique retenue : l’criture d’un programme de traitement en langageC.
0.2 Organisationdu cours
0.2.1 Courset travaux pratiques Le cours de Langages et concepts de programmation est organis en deux phases : la premire phase, relativement intensive (4 journes rparties sur 15 jours, soit 24 heures au total), aborde les premiers concepts de la programmation, dans le but d’amener chaque lve Ā un niveau de comptences permettant la rsolution d’un problme simple (pro-gramme de quelques centaines de lignes n’utilisant que les procdures et les tableaux, avec des algorithmes simples). Cette phase est organise de faÇon Ā ce que chaque lve dispose d’un poste de travail (actuellement, par demi-promotion), et l’valuation se fait donc de faÇon individuelle. la seconde phase, plus tale (21 heures sur 4 semaines), permet de complter cette in-troduction en introduisant notamment les notions d’entres-sorties et de structures de donnes. L’objectif est d’arriver Ā un niveau de comptences permettant d’crire un pro-gramme de traitement de donnes de type rel : programme de quelques milliers de lignes utilisant entres-sorties, structures de donnes, procdures. Cette phase est organise en promotion complte, et les lves travaillent par binÔmes. Lors de ces deux phases, chaque sance comprend une partie de prsentation thorique en salle de cours, puis une partie de ralisation pratique en salle machine. 5
6 0.2.2 Projet Au dbut de la seconde phase, les lves choisissent par binÔmes un sujet de projet (parmi une liste d’une quarantaine de sujets) : ce projet est Ā raliser en deux mois environ. Les notions ncessaires Ā la ralisation du projet sont abordes durant la seconde phase.
0.2.3 Travailpratique de recherche oprationnelle Le cours comprend galement, en commun avec le cours de Recherche oprationnelle (qui fait partie du pÔle de modlisation mathmatique), la ralisation d’un programme permettant de rsoudre un problme typique d’optimisation. Ce travail se ralise sous forme de deux sances de travaux pratiques (en principe, le sujet trait est abord de faÇon thorique lors des sances de travaux dirigs de recherche oprationnelle).
0.2.4 Evaluation L’valuation du cours se fait essentiellement par l’valuation du projet de programmation : cette valuation comprend une note de prsentation orale (dure : 20 minutes), une note de rapport crit, et une note lie Ā la qualit de la ralisation informatique (qui intgre une partie de motivation). De faÇon complmentaire, certains travaux pratiques du cours ainsi que le travail pratique de recherche oprationnelle sont valus, et pourront intervenir dans la note finale.
0.3 LelangageC Ce cours est une premire introduction aux mthodes de programmation. Pour des raisons qui sont dtailles plus loin, cette introduction s’effectue au travers du langageC. Le langage de programmation particulier utilis comme support de la pense dans un cours d’informatique ne devrait jouer qu’un rÔle assez secondaire vis Ā vis des concepts enseigns. Ce n’est malheureu-sement presque jamais le cas, et, en particulier dans le cas des « initiations » Ā l’informatique, ce choix du langage joue un rÔle prpondrant. L’exprience montre que l’apprenant est en effet rapidement proccup (voire envahi) par les seuls aspects de mise en œuvre du langage choisi, et que les concepts, parfois de haut vol, que l’enseignant vise Ā mettre Ā sa disposition sont largement ignors (lorsqu’ils ne sont pas traits par le mpris). Nous voulons construire des programmes solides, et le langage de programmation va nous permettre de crer nos briques. Mais il ne sert Ā rien de construire sur du sable ; la comprhension de la nature et de la structure des donnes, la connaissance de l’algorithmique constituent les fondations de toute construction correcte. C’est un passage difficile, mais oblig. Pour cette raison, nous insistons beaucoup sur les aspects fondamentaux (et en particulier, algorithmiques) de la programmation. Le choix d’un langage de programmation pour une initiation Ā l’informatique n’est pas, comme on l’a djĀ laiss entendre, entirement anodin. L’Ècole des Mines de Saint-Etienne, qui ne rpugne Ā aucune exprience dans le domaine, a utilis pour ce faire des langages aussi
0.4. LAFINALITé DE CE COURS
7
varis queFortran,Algol 60,APL,Pascal,Scheme,ADA,C,C++,Matlab,Scilab, et probablement quelques autres encore. Qu’ils soient impratifs, fonctionnels, dclaratifs, Ā 1 objets ou Ā enzymes gloutons, ces langages ont leurs avantages et leurs inconvnients, leurs partisans et leurs dtracteurs, et ont fait parmi les tudiants des heureux, des insatisfaits, et dans tous les cas beaucoup d’indiffrents. Ce cours a choisi comme langage support le langageCqui est en lui-mme un petit lan-gage relativement simple Ā apprendre, et comportant peu de concepts. Il constitue une bonne 2 introduction ,pour le programmeur, aux langages Ā objets tels queC++etJava. Malgr cette simplicit, c’est un langage largement utilis dans le domaine industriel : on le trouve ainsi comme langage de dveloppement du systme Unix (et toutes ses variantes) et des utilitaires associs. On l’utilise galement dans des applications d’informatique embarque, de contrÔle de procds industriels, de calculs scientifiques, de traitements de donnes diverses.. . C’est enfin un langage mature, donc peu soumis Ā des (r)volutions rendant les anciens pro-grammes incompatibles, et disposant sur quasiment toutes les plates-formes d’environnements de dveloppement performants (et du domaine public, ce qui est un avantage non ngligeable). Le langageC, bien sÛr, ne prsente pas que des avantages. ConÇu pour permettre au pro-grammeur d’utiliser de manire efficace la machine sous-jacente, il impose Ā son utilisateur : de connatre l’architecture gnrale d’un ordinateur, afin de comprendre comment ces concepts se matrialisent dans ce langage de programmation; de savoir manipuler le systme d’exploitation, puisque,Ctant unlangage compil, la mise en œuvre d’un programme ncessite une squence d’oprations non triviales pour le nophyte. Le chapitre 1 a donc pour objectif annexe de prsenter la structure d’un ordinateur (du mat-riel jusqu’au logiciel), et de dcrire sommairement la mise en œuvre du langageCsur le systme le mieux adapt : UNIX, et en l’occurence, Linux.
0.4 Lafinalit de ce cours Ce document a pour but de prsenter des techniques d’analyse permettant de passer, par tapes successives, d’un problme, nonc en franÇais, Ā un programme rsolvant ce problme, crit dans le langage choisi pour cet apprentissage, Ā savoir le langageC. Le lecteur averti pourra aisment transposer les concepts Ā tout langage du mme genre que C, c’est-Ā-dire un langage de type procdural, intgrant la notion de fonctions (ou procdures, ou sous-programmes), ainsi que la possibilit de crer des structures de donnes :Pascal,C++, VBA, sont des langages ne posant pas de problme Ā ce niveau. Cette prsentation s’appuie largement sur des exemples, simples au dpart, puis de plus en plus complexes. Il est difficile en effet de prsenter d’emblelamthodologie universelle (Ā supposer qu’il en existe une) : ceci, Ā notre avis, ne revt un intrt qu’aprs une certaine pratique effective de la rsolution de problmes de complexit non triviale. Dans cette prsentation sont successivement abordes diffrentes facettes de cette analyse, Ā savoir l’algorithmique, la structuration par les traitements et la structuration par les donnes. 1. Termede remplissage, utilis ici en attendant la prochaine rvolution. . . 2. Neserait-ce que par sa syntaxe. . .
8
Il faut bien comprendre que ce qui est prsent ne revt pas le caractre de rgles abso-lues : ne pas les suivre ne condamne pas ncessairement Ā obtenir des programmes incorrects. Cependant, les suivre permet d’obtenir des programmes plus facilement comprhensibles par 3 quelqu’un qui ne les a pas crits, et amliore donc la maintenance de ceux-ci (que ce soit pour corriger ou pour amliorer le programme). On est donc ici plutÔt dans le domaine desbonnes pratiques.
0.5 Droulementdu cours La premire phase du cours comporte huit sances de trois heures. Les sept premires sances comportent une phase magistrale suivie d’une phase de travaux dirigs et pratiques, la dernire sance est intgralement consacre au travail pratique (ralisation du projet).
0.5.1 Sance1 : introduction au matriel et au logiciel ButSavoir diter, compiler et excuter un programme; apprendre la syntaxe des expressions arithmtiques.
ThoriePrsentation de notions sur l’informatique, les machines, les algorithmes, les envi-ronnements de dveloppement. Introduction au langageC: premiers lments de syntaxe, types de donnes (entiers, rels, caractres) ; reprsentation des donnes ; variables ; expressions.
PratiqueMatriser un environnement de programmation. Dmonstration de l’environnement. Le clbre programme « Salut, monde ».
0.5.2 Sances2 et 3 : quelques problmes lmentaires ButComprendre les notions de variable, d’expression, et les itrations (boucles et tests)
ThorieModlisation de problmes.
PratiquePartir d’un problme simple, (calculer unPGCD, un sinus), en dcrire les tapes de la rsolution.
0.5.3 Sance4 : procdures ButComprendre la notion de procdure.
ThorieDescription et appel de procdure. Passage de paramtres. Prototypes des procdures. 3. oune les a pas relus depuis un moment. . .
0.6. LESSUPPORTS DE COURS
9
PratiqueÈtapes de la cration d’une application : dcomposition en procdures. Procdures et compilations spares. Utilisation de procdures de bibliothque correspondant aux fonctions mathmatiques usuelles.
0.5.4 Sance5 : tableaux ButLes tableaux.
ThorieOprations simples sur tableaux. Tableaux Ā deux dimensions, ou matrices. Tableaux et procdures. Quelques algorithmes sur les tableaux.
PratiqueRecherches de minimums, maximums, etc. Remplissage de tableau par des valeurs alatoires. Exemple du calcul des moyennes.
0.5.5 Sance6 : du problme au programme ButSavoir traiter un problme plus complexe.
ThorieAnalyse de problme, dcomposition en sous-problmes par les donnes ou par les traitements.
PratiqueAnalyse, conception du problme trait en mini-projet.
0.5.6 Sance7 : complments ButApporter quelques complments sur procdures et tableaux.
0.5.7 Sance8 : une application ButSance d’intgration pour obtenir le logiciel dont la ralisation est vise dans le cadre du cours.
PratiquePrsentation de quelques principes de mise au point.
0.6 Lessupports de cours Les supports de cours se composent notamment du prsent document, des documents proje-ts pendant les sances de cours, et des notes personnelles des lves. De nombreuses informations (complments de cours, exercices corrigs, rfrences biblio-graphiques ou Internet, copies des supports de cours) sont disponibles sur le site Internet du cours informatique : http://kiwi.emse.fr/INTROINFO/
10 0.7 Notestechniques Ce support de cours a t rdig par Jean-Jacques Girardot et Marc Roelens Ā partir de divers documents antrieurs. Le document lui-mme a t cr sous Linux et MacOS X, en utilisant le logiciel de com-A position LT X. Une partie du document a t ralise au moyen de L X ([3]), un diteur de E Y A document qui fournit un interface WYSIWYM avec T X et LT X ([2]). E E
Chapitre 1
Introduction
1.1 Cours Ce premier chapitre introduit les diverses notions de l’informatique pratiquement indispen-sables Ā la comprhension de l’activit de programmation : ce qu’est un ordinateur, un fichier, un compilateur, et comment mettre en œuvre toutes ces choses.. . Aprs cette prsentation sommaire, le cours dcrit quelques lments de base du langageC ainsi que l’utilisation de celui-ci sur les machines.
1.1.1 Modlede l’ordinateur 1.1.1.1 Architectured’un ordinateur
FIGURE1.1 – L’architecture de Von Neumann Les ordinateurs actuels drivent d’une architecture dfinie en 1946, laMachine de von Neu-mann(cf. figure 1.1). Les quatre composantes principales de cette architecture sont : ; c’est elle qui effectue les calculs (additions, multiplica-l’unit arithmtique et logique tions) et les tests (galit, infriorit); 11
  • Univers Univers
  • Ebooks Ebooks
  • Livres audio Livres audio
  • Presse Presse
  • Podcasts Podcasts
  • BD BD
  • Documents Documents