Vous êtes sur la page 1sur 6

INF Z13 - Programmation en C++ (niveau 1)

Leçon 0 : Présentation
Centre Informatique pour les Lettres
et les Sciences Humaines

1 - Objectif .............................................................................................................................2

Positionnement par rapport aux autres UE d'informatique proposées à Aix ................ 2


Positionnement dans un Centre orienté vers les Lettres et les Sciences Humaines...... 2
La vraie nature d'INF Z13 ......................................................................................... 3

2 - Choix techniques...............................................................................................................4

3 - Méthode de travail .............................................................................................................4

Organisation générale............................................................................................... 4
Limites d'efficacité pédagogique ................................................................................ 4

4 - Le manuel .........................................................................................................................5

5 - Calendrier 2002/2003 .......................................................................................................5

6 - Foire Aux Questions ..........................................................................................................6

Document du 12/11/02 - Retrouvez la version la plus récente sur http://www.up.univ-mrs.fr/wcpp/lecons.htm


C++ - Leçon 0 Présentation 2/6

1 - Objectif
L'unité d'enseignement (UE) INF Z13 poursuit un objectif très simple : proposer à tous les
étudiants du centre d'Aix de l'Université de Provence des bases théoriques et pratiques saines
en vue de l'acquisition d'une véritable compétence en programmation.
En dépit de sa simplicité, cet objectif appelle sans doute deux types de commentaires, pour
expliquer tout d'abord en quoi cette UE se distingue des autres enseignements d'informatique
proposés à Aix et, ensuite, pour tenter d'illustrer l'intérêt qu'il peut présenter pour un étudiant
du Centre des Lettres et des Sciences Humaines.

Positionnement par rapport aux autres UE d'informatique proposées à Aix

La plupart des autres unités d'enseignement INF sont focalisés sur des outils particuliers
(tableurs, gestionnaires de bases de données, éditeurs de pages Web, etc.) dont l'utilisation ne
relève pas, a priori, de ce qu'on appelle habituellement la programmation. Même si cette
distinction est certainement beaucoup moins substantielle qu'elle ne le semble, l'expérience
montre que ce sont surtout les rapports entre INF Z11 et INF Z13 qui suscitent des
interrogations chez les étudiants. En effet, ces deux modules s'annoncent explicitement comme
des modules de "programmation" destinés à des débutants, et leur différence la plus visible (le
langage utilisé) n'est sans doute pas un bon critère de choix.
La véritable différence entre INF Z11 et INF Z13 réside dans l'esprit dans lequel ces
enseignements sont conçus, et c'est cette différence d'esprit qu'il faut comprendre pour faire un
choix judicieux entre les deux UE.
Dans leur immense majorité, les étudiants du Centre d'Aix ont passé des baccalauréats
littéraires. Leur exposition à l'usage de l'informatique avant leur entrée à l'Université a été,
dans le meilleur des cas, assez succincte, et, le plus souvent, pratiquement inexistante. En
conséquence, la première mission du CILSH est certainement culturelle : il faut faire en sorte
que le plus d'étudiants possible puissent acquérir les notions de base leur permettant d'utiliser
un micro-ordinateur pour réaliser des tâches bureautiques élémentaires, et il est souhaitable
que les plus curieux d'entre eux aient la possibilité de se faire une meilleure représentation de
la technique informatique.
Dans ce contexte, le module INF Z11 joue un rôle tout à fait clair et indispensable : il s'agit
avant tout de compléter la formation intellectuelle générale de nos étudiants. L'importance
prévisible des techniques informatiques dans la société industrielle du début du XXI° siècle est
telle qu'il semble souhaitable qu'une éducation relativement avancée en la matière soit
proposée en dehors du cercle des ingénieurs spécialisés. Etant donné cet objectif d'ouverture
intellectuelle, il n'est donc pas question que le module INF Z11 (Programmation - niveau 1) soit
orienté radicalement vers l'acquisition de compétences : le public visé comporte une majorité
d'étudiants qui n'avaient aucune idée de ce que pouvait bien être l'activité de programmation
au moment où ils se sont inscrits, et un grand nombre d'entre eux n'écriront plus jamais
aucun programme après la fin du semestre. Cette UE est donc conçue de façon à leur
permettre de voir de quoi il s'agit, tout en restant suffisamment attrayant et facile pour jouer
son rôle culturel.
Ce cahier des charges ne correspond pas exactement à celui d'une UE dont la finalité est de
servir de point d'entrée à une formation débouchant sur des compétences réellement
opérationnelles.

Positionnement dans un Centre orienté vers les Lettres et les Sciences Humaines

Des "compétences réellement opérationnelles" en programmation ? Dans une fac de lettres ?


Oui. Certainement pas pour tous les étudiants, ni même pour une majorité d'entre eux, mais le
besoin est cependant bien réel. En effet, on assiste actuellement à une émergence notable
d'une demande de la maîtrise de la programmation, en tant que seconde compétence, chez de
jeunes diplômés dont la formation de base relève des Lettres et Sciences Humaines.
Une des réponses possibles passe par les DESS "double compétence" en informatique, qui
peuvent accueillir des étudiants du niveau "troisième cycle lettres". Mais cette réponse n'est ni
la seule envisageable, ni nécessairement la plus adaptée. Il semble en effet que, dans de
nombreux cas, le besoin soit particulièrement focalisé sur la maîtrise de la programmation (ce

J-L Péris - 12/11/02


C++ - Leçon 0 Présentation 3/6

qui n'est qu'un des aspects de la formation proposée dans ces DESS), et que la "valeur ajoutée"
par cette seconde compétence soit fortement augmentée si l'articulation entre les deux
disciplines est avérée chez le jeune diplômé, et s'est traduite par des réalisations concrètes. Or
ce profil n'est pas obtenu en ajoutant, en fin d'études, une année supplémentaire de formation
générale en informatique.
On peut, schématiquement, distinguer deux manifestations du besoin qu'auraient certains des
étudiants Aixois de maîtriser réellement la programmation.
Certains projets de troisième cycle seraient sans doute abordables dans de meilleures
conditions si les étudiants disposaient de cette compétence au moment où ils soutiennent leur
maîtrise. Toutes les disciplines ne sont pas également concernées, mais les besoins sont
actuellement clairement exprimés dans certains secteurs de la linguistique (traitement
automatique du langage) et de la psychologie cognitive (expérimentation pilotée par ordinateur,
modélisation et, dans le cas de l'ergonomie, maquettage d'interfaces). On peut, en outre, penser
que la disponibilité d'une telle compétence ne ferait qu'accélérer l'évolution des disciplines et
favoriser l'apparition de ce genre de préoccupations dans d'autres champs thématiques.
La seconde manifestation du besoin apparaît au niveau des offres d'emplois. Il s'agit alors,
typiquement, de mettre en œuvre une compétence de géographe, de linguiste, de musicien, etc.
dans le contexte de la mise en place d'un système informatisé. La compétence (et,
éventuellement, une certaine expérience) en programmation est alors un gage réel de capacité à
adapter des connaissances fondamentales (qui relèvent d'une des disciplines enseignées à Aix)
à une exploitation concrète dans le cadre de la conception d'un produit.
Dans un cas comme dans l'autre, il semble que la meilleure stratégie soit un effort de
formation réparti sur plusieurs années, pendant le cours normal de l'étude de la discipline
principale. La répartition sur plusieurs années présente plusieurs avantages déterminants :
elle permet d'exiger un effort moins intense que celui requis par un DESS double compétence,
elle donne une véritable chance d'articuler réellement les deux compétences, et elle élimine le
risque de perdre une année (avec toutes les conséquences financières et psychologiques que
cela présente) en étant conduit à abandonner un DESS qui s'avèrerait finalement trop difficile.
Il reste, bien entendu, une différence évidente : cet effort de formation peut vous procurer une
compétence, mais pas un diplôme en informatique. Si vous décidez finalement de tenter
d'ajouter un DESS double compétence à votre panoplie de chercheur d'emploi, l'effort à
fournir et le risque d'échec seront cependant largement diminués par une compétence en
programmation déjà acquise.

La vraie nature d'INF Z13

Une des conséquences de l'analyse présentée ci-dessus est qu'il n'est pas question ici
d'enseigner une programmation "pour étudiants en lettres" qui serait une version édulcorée de
cette technique, utilisant des outils spécifiques (et, de préférence, n'ayant aucune existence en
dehors de nos salles de cours) et évitant soigneusement toutes les difficultés conceptuelles. Il
s'agit au contraire d'enseigner une programmation "pour étudiants en lettres" qui rende
accessible à des spécialistes de ces disciplines la plus grande partie possible de la considérable
capacité de traitement offerte par les machines actuelles.
Comme son nom l'indique, INF Z13 est une UE qui s'adresse à des débutants en
programmation. Mais des débutants d'un genre particulier : des débutants qui ont déjà décidé
(par goût ou par nécessité) qu'ils allaient cesser d'en être, et qui sont prêts à investir quelques
heures de travail hebdomadaire pour y parvenir.
Il va sans dire que cet objectif ne peut pas être atteint en une dizaine de séances de cours.
Pour prendre tout son sens, l'enseignement proposé dans ce module doit s'inscrire dans une
stratégie de formation développée sur plusieurs années. C'est la raison pour laquelle la
technique pédagogique mise en place privilégie l'auto-formation (ce qui permet de s'affranchir
partiellement des contraintes horaires d'une UE) et se focalise préférentiellement sur les
questions les plus fondamentales (qui sont sans doute celles où l'intervention d'un enseignant
est la plus utile). Le matériel pédagogique disponible dépasse largement le cadre de l'UE
INF Z13, et une seconde unité (INF Z23) peut également être validée.

J-L Péris - 12/11/02


C++ - Leçon 0 Présentation 4/6

2 - Choix techniques
Etant donné l'objectif poursuivi, il semblait nettement préférable d'adopter un langage dont la
disponibilité ne soit pas liée à un fabriquant particulier et s'étende au-delà du seul univers
micro-informatique. Il n'est par ailleurs pas possible de connaître avec exactitude les
problèmes réels que les différents étudiants rencontreront effectivement (problèmes qui seront,
de toutes façons, certainement très divers), ce qui plaide en faveur de l'adoption d'un langage
assez général. Notre choix s'est donc porté sur C++, étant entendu qu'il reste de la
responsabilité de l'enseignant de ne pas se perdre dans les détails d'un langage ou d'un
compilateur donné, mais de veiller à assurer une certaine généralité aux concepts transmis.
Les modalités pratiques d'enseignement de l'informatique à Aix imposent que les étudiants
soient en mesure de déployer sur leur machine personnelle le système de développement
choisi. La prise en compte de ce facteur contraint pratiquement à l'adoption d'un compilateur
Windows, et les TD ont donc été conçus pour Visual C++ 6.0.

3 - Méthode de travail
La caractéristique majeure de ce cours est qu'il est intégralement disponible sous forme écrite
(ce qui rend les UE correspondantes accessibles via le service de télé-enseignement).

Organisation générale

Le matériel proposé se présente d'une part sous la forme de Leçons qu'il s'agit simplement de
lire et de comprendre (il arrive, exceptionnellement, que quelques manipulations exigeant un
ordinateur permettent de mieux saisir certains points) et, d'autre part, sous la forme de TD
qu'il faut effectivement réaliser (ce qui nécessite évidemment une machine sur laquelle est
installé l'environnement de développement utilisé).
La progression est calculée pour un "étudiant moyen" qui consacre, en plus des trois heures de
cours, deux à trois heures de travail personnel par semaine à ce module. Ce travail personnel
est essentiellement consacré à anticiper sur le déroulement du cours : chaque Leçon doit avoir
été lue attentivement, et chaque TD au moins commencé avant la séance correspondante.
Cette façon de travailler vous permet de franchir seul les étapes qui ne vous posent aucun
problème, et de rentabiliser la présence de l'enseignant en lui soumettant les cas où vous
rencontrez des difficultés ou souhaitez des explications complémentaires.

L'exposé que l'enseignant fait pendant un cours n'est qu'une version abrégée de la Leçon, et la
durée de la séance consacrée au TD ne permet qu'exceptionnellement de le terminer.

S'il vous arrive de rencontrer une difficulté sérieuse (par exemple un problème vous bloquant
dès le début d'un TD et vous empêchant donc de le préparer) ou si vous avez une question qui
ne porte pas sur la Leçon en cours (parce que vous avez pris du retard, ou parce que vous êtes
en train de réviser), envoyez sans hésiter un courrier électronique à infz13@up.univ-aix.fr
Cette adresse électronique est exclusivement prévue à votre intention. Si je réponds très vite,
tant mieux, sinon je sais que c'est de ma faute, et non de la vôtre !

Limites d'efficacité pédagogique

Le volume horaire évoqué ci-dessus est nécessaire pour réellement tirer parti du cours : une
simple étude attentive des Leçons peut éventuellement vous permettre de réussir les examens
de l'UE INF Z13 en investissant beaucoup moins de temps que cela, mais vous n'apprendrez
jamais à programmer ainsi.

Pour que ce que vous apprendrez dans les Leçons ait une chance de vous servir un jour à
quelque chose, il vous faudra consacrer beaucoup de temps aux TD. Dans la plupart de ceux-
ci, les manœuvres nécessaires à la réalisation du projet sont décrites en détail, dans l'ordre où
elles doivent être effectuées. Si vous vous contentez d'obéir à ces injonctions sans chercher à
en saisir la logique, vous obtiendrez très rapidement le programme décrit par le TD, mais pas
grand chose de plus. Essayez d'imaginer des variantes à la solution proposée, testez vos idées
sur la machine, et ne négligez pas les exercices complémentaires qui vous sont suggérés !

J-L Péris - 12/11/02


C++ - Leçon 0 Présentation 5/6

4 - Le manuel
Les Leçons essaient de vous conduire (en douceur, si possible) vers un degré de compétence à
partir duquel vous pourrez progresser en vous appuyant uniquement sur des documents
publiés (livres, articles de revues, etc). L'accent y est donc surtout mis sur la maîtrise des
notions essentielles, ce qui veut dire que tous les détails ne sont pas exposés, car leur présence
nuirait à la compréhension du propos principal. Si vous utilisez réellement le langage, vous
aurez donc parfois besoin d'un ouvrage de référence pour "boucher les trous" des Leçons.
A la demande insistante des étudiants, je me suis donc résolu à adopter officiellement un
manuel :
Visual C++ 6.0, Ivor Horton, Eyrolles, Paris, 1999. (ISBN 2-212-094043-9)
Cette adoption ne signifie pas que je trouve cet ouvrage au-dessus de toute critique. Sa
traduction laisse parfois à désirer et, surtout, il me semble (contrairement à ce qu'il prétend)
parfaitement inutilisable en tant que tutoriel. Vous n'avez, à mon avis, pas plus de chances
d'apprendre C++ en lisant ce livre que vous n'en auriez d'apprendre l'américain en lisant le
Webster, ou le français en lisant le Robert. Il s'agit, dans les trois cas, d'ouvrages qu'il est utile
de consulter, mais dont la lecture serait finalement assez peu profitable.
Un avantage supplémentaire offert par le livre de Horton est qu'il inclut un CD sur lequel se
trouve un exemplaire du compilateur Microsoft, accompagné de sa documentation complète1.
Vous pourrez donc, en toute légalité, installer sur votre machine personnelle2 une version du
compilateur identique à celle présente sur les machines de l'Université.

5 - Calendrier 2002/2003
Les Leçons du module INF Z13 peuvent être vues comme constituant deux cycles successifs :
le premier vise à l'acquisition des éléments fondamentaux du langage, alors que le second
aborde quelques-unes des techniques élémentaires en matière de structuration des données.
Ces deux cycles sont séparés par un examen partiel, qui offre une occasion de faire le point et
de s'assurer que le second cycle de Leçons peut s'appuyer sur une maîtrise raisonnable des
notions les plus élémentaires.
Cet examen partiel, tout comme l'épreuve finale, prend la forme d'une série d'exercices écrits,
à réaliser individuellement et en durée limitée. La consultation de documents écrits (notes
personnelles, texte des Leçons, manuels, dictionnaires...) est autorisée pendant ces épreuves.
Le déroulement du module nous conduira donc normalement à consacrer la douzaine de
séances prévues aux sujets suivants :
Vendredi, en C212, Vendredi, en C206,
de 13h à 14h30 de 14h30 à 17h
11 Octobre Préambule 11 Octobre
TD 01
18 Octobre Principes de base 18 Octobre
25 Octobre Variables 25 Octobre TD 02
8 Novembre Fonctions 8 Novembre TD 03
15 Novembre Structures de contrôle 15 Novembre TD 04
22 Novembre Fonctions avec paramètres 22 Novembre TD 05
L'examen partiel aura lieu le Samedi 23 Novembre, de 10h à 12h, amphi H
29 Novembre Usage de pointeurs 29 Novembre TD 06
6 Décembre Allocation dynamique 6 Décembre TD 07
13 Décembre Fichiers 13 Décembre TD 08
20 Décembre Tableaux 20 Décembre TD 09
10 Janvier Listes chaînées 10 Janvier TD 10
L'examen final aura lieu le Samedi 11 Janvier, de 10h à 12h, amphi D

1 En anglais, hélas. D'autres ouvrages s'accompagnent maintenant d'une offre équivalente, et on a même vu cette

édition de Visual C++ figurer sur les CD joints à certaines revues d'informatique...
2 N'importe quel système fonctionnant sous l'une des versions 32 bits de Microsoft Windows (c'est à dire 95, 98, 2000,

NT ou XP) fera l'affaire.

J-L Péris - 12/11/02


C++ - Leçon 0 Présentation 6/6

6 - Foire Aux Questions

Faut-il suivre INF Z11 avant d'entreprendre INF Z13 ?


Pas du tout. La plupart des "vrais débutants" en programmation qui suivent INF Z13
réussissent l'examen.
Est-ce un avantage déterminant d'avoir déjà fait de la programmation ?
Pas sûr. Plusieurs des candidats qui ont échoué aux examens de Z13 avaient déjà une
expérience dans un ou plusieurs autres langages. Certains avaient même déjà fait du C++.
Est-ce un module très difficile ?
Je dirais plutôt qu'il s'agit d'un module auquel il est totalement impossible de réussir sans
travailler. La disponibilité totale et permanente de l'intégralité du cours sous forme écrite, ainsi
que des annales de l'examen (accompagnées de leur correction) rend, en revanche, l'échec
extrêmement improbable pour un étudiant moyen qui s'est préparé dans de bonnes conditions.
Où peut-on se procurer le matériel correspondant au cours ?
Tout ce qui vous est nécessaire et peut vous être fourni par l'Université se trouve sur le serveur
local du CILSH, dans le dossier
X:\INF Z13
Ces documents sont aussi disponibles sur Internet : http://www.up.univ-mrs.fr/wcpp
Une copie de ces fichiers peut également vous être communiquée sur CD, en échange d'un CD
vierge (dans son enveloppe d'origine).
Est-il possible de réussir Z13 sans assister aux cours ?
Oui, sans aucun doute. J'ai (à ma grande surprise) attribué des notes supérieures à 15 sur 20
à des candidats que j'ai rencontrés pour la première fois le jour de l'examen final. Attention,
toutefois : cette façon de travailler ne convient pas forcément à tout le monde. Dans tous les
cas, inscrit ou non inscrit, assidu ou non assidu, passionné ou en déroute, n'hésitez pas à
utiliser le courrier électronique.
A quoi sert l'adresse électronique infz13@up.univ-aix.fr ?
- A poser des questions.
- A appeler au secours quand on ne sait même plus quelle question poser.
- A signaler les erreurs encore présentes dans les Leçons ou les TD.
Tout ceci reste évidemment possible de vive voix, lors des séances de cours. Le mail n'est
qu'une option supplémentaire qui vous est offerte. Cependant, même si vous n'avez pas besoin
de faire des phrases très raffinées (un mail n'est pas un courrier officiel), le fait d'avoir à
exposer votre problème par écrit est souvent un facteur qui favorise largement votre
compréhension de la réponse... Par ailleurs, le mail fonctionne toute l'année, même en dehors
des périodes de cours, et y compris pendant les semestres durant lesquels le module qui vous
intéresse n'est pas administrativement ouvert !
Est-il indispensable de disposer d'un ordinateur personnel ?
Je le croyais, jusqu'à ce que la réussite brillante de certains étudiants ne prouve le contraire.
Aller très au-delà de Z13 sans ordinateur personnel continue pourtant à m'apparaître comme
une mission quasi impossible.
Peut-on suivre les UE INF Z13 et INF Z23 la même année ?
Certains étudiants l'ont déjà fait, mais ce n'est pas nécessairement la meilleure approche : le
volume de travail requis risque de porter ombrage à votre réussite dans votre discipline de
base, ce qui compromettrait la logique de votre stratégie de formation.
Ne serait-il pas plus judicieux d'apprendre le langage Ada (ou Basic, ou Cobol
ou DieuSaitQuoi...) ?
Il existe une multitude de langages de programmation, et chacun d'entre eux mérite sans
doute, à un titre ou un autre, qu'on s'y intéresse. Le choix de C++ pour les modules Z13 et Z23
résulte d'un compromis où interviennent de nombreux facteurs, et il n'a pas été fait à la légère.
S'il ne vous convient pas, il vous suffit de ne pas vous inscrire dans ces modules !

J-L Péris - 12/11/02

Vous aimerez peut-être aussi