Exercices de
programmation}
PascalExercices de programmation Pascal EEIGM - ENSGSI 1998/1999
APPRENDRE A PROGRAMMER EST INCONTOURNABLE
+ parce qu'un minimum de programmation est néeessaire pour certains cours et peut
Pétre pour la vie professionnelle ;
+ pour vraiment comprendre la difficulté de la qualité en programmation ;
* pour permetire de choisir P’outil adéquat entre langage et logiciel, entre L3G et L4G ;
+ pour la formation intelleetuelle (approche “constructiviste” différente des maths) +
+ et pour comprendre comment réagit un ordinateur,
Mais ici apprendre 2 programmer n'a surtout pas pour finalité de devenir un
programmeur professionnel.
BUTS DU SEMINAIRE :
Savoir aborder, analyser, programmer des problémes simples ; connaitre les concepts
fondamentaux de 1a programmation, indépendants du langage ; structurer les
connaissances et le savoir faire.
+ analyser : définir un probléme pour parvenir & exprimer l’algorithme de résolution.
fi étre sensibilisé aux méthodes de spécification descendantes pour y parvenir.
+ programmer : exprimer l'algorithme dans un langage de programimation, Pascal.
fl connaitre {a syntaxe de Pascal,
fl comprendre le fonctionnement des instructions,
fet savoir appliquer des normes de programmation,
A maitriser environnement de programmation et le systme d’exploitation.
+ valider :
fi laborer des jeux de tests ;
fl améliorer le programme pour lui donner des qualités professionnelles.
L'objectif est de permettre de réaliser des programmes simples, en insistant sur
es qualités a attcindre: correet, lisible, fiable, robuste, modulaire, maintenable,
réutilisable... La sophistication ne fait pas partie des qualités demandées.
CONTENU DU SEMINAIRE :
+ bases : traitements séquentiel, conditionnel, itératif; variables, tableaux; procédures et
fonctions; localité
+ compléments : récursivité; calcul numérique et non numérique; modularité,
programmation structurée, spécification descendante; intégration de composants
logiciels; normes de programmation ; structuration des données.
+ place de la programmation classique dans les outils informatiques de Pingénieur
ORGANISATION :
L'enseignement de la programmation en période bloquée et dense est tres efficace.
Une pratique intensive et une aide individualisée concourent 3 la réussite de
Vapprentissage.
‘Aussi fa promotion est répartie sur deux semaines par petits groupes. Chaque séance
débute par un bref amphi suivi de TD intensifs en salle ordinateurs.
Méthode: un minimum de théorie, lire et surtout écrire des programmes, pa
intensif sur machine, Matériel informatique : un poste de travail par éleve.
Site web du sminaire : nip#/dafne.mines.u-nancy.tr-tisseran/EEIGM/Exercices de programmation Pascal EEIGM - ENSGSI 1998/1999
Les séances suivent une progression qu'il faut respecter, en ajustant sur le niveau de
chaque groupe.
De méme les exercices proposés sont également progressifs, Ils ne seront généralement
pas tous traités aw cours de la séance, aussi un polycopié de corrigés est remis aux
Gloves pour leur permetire de parfaire leur assimilation, et pour pouvoir réviser le
langage Pascal plus tard si la nécessité s'en fait sentir,
A chaque séance correspondent des exercices facultatifs, destinés aux groupes forts et
aux éleves passionnés.
Les encadrants sont seuls juges de la progression d respecter et des exercices & traiter.
° séance — premier contact avec Pascal
1— Amphi : Notion de programme
Objectifs et plan, Pourquoi et comment apprendre A programmer ?
Structure générale d'un programme,
2— TD Prise en mains
*de la machine (PC),
+ du systéme d'exploitation (Windows NT),
* du compilateur Borland Turbo Pascal },
+ du langage (Pascal)
ITD par groupes de niveau, un ou deux éléves par ordinateur.
3 programmes courts sont fournis pour cette premidre expérience.
+ S'initier au compilateur et au systeme :
Editeur, commandes, premiers contacts.
Entrer et exécuter un programme :
Entrer un programme. Essais avec différentes données.
Metre au point :
Commandes de débogage.
+ Lecomprendre :
Fonctionnement des programmes instruction par instruction, Structure générale]
Jdes programmes.
+ Le modifier :
Modifications. Essais. Mise au point
|Exercices facultatifs, pour ceux qui iraient vite : la formule de Viete.Exereices de programmation Pascal EEIGM - ENSGSI 1998/1999
2° séance — itérations et tableaux
1— Amphi : développement d'un programme.
Exemple de développement d’un programme.
Notions d’itération et de récurrence, Boucles, impressions.
Procédures.
Boucle for.
Ikérations pour parcourir un tableau.
2— TD en salle machine : itérations,
Exercices sur les itgrations pour appréhender les notions de tableaux, de matrices,
diindices, de procédures,
*Le 1° exercice fait tabuler des fonctions simples, comme en amphi
+ Le 2° fait écrire une boucle for, pour reconnattre si un entier est premier.
+ Le 3° fait initialiser et afficher un tableau 2 deux dimensions.
+ Le 4° et le 5° font manipuler des indices de matrice.
+ Le 6° manipule un tableau & une dimension.
+ Le 7° apprend a lire au clavier wn élément dans une matrice
+ Le 8° surle triangle de Pascal, apprend jongler avec les indices dans les matrices.
+ Exercice supplémentaire si nécessaire : suite de Syracuse.
3— Travaux personnels encadrés.
Lorsque les exercices sont bien avancés, une heure environ avant la fin de la séance,
choisir son travail : poursuivre les exercices, revenir sur un exercice ou une notion, etc.
|4— Test, pour juger de l'assimilation des notions de base.
‘Travail pour Je lendemain :
}+ Lire dans le poly
pages 62 4 77, (§ 5.2 a 6.8) : structure d'un programme, déclarations,
indentation, structures de contrOle, affectation, variable, expressions, appel, instruction
lcomposée, itérations, for
et page 101, (§ 7.4 tableaux)
3° séance — procédures, fonctions, booléens
i— Amphi : procédures
Procédures, fonctions, paramétres.
Mécanisme des param@ires valeur et variables.
Tableaux et matrices.
Conditionnelies : if, booléens
2— TD en salle machine,
+ Exercice sur l'algebre de Boole.
+ Exercice sur les itérations et conditions : décomposition en facteurs premiers.
+ Exercices de calcu! vectorie! et de calcul matriciel : parcours avec itéra
conditions, sous forme d'une procédure accompagné d'un programme de test. Ce
[des exercices simples qu'il faut savoir faire sans hésiter.
ions et
sont}
+ Exercice facultatif : le nombre d’or.
suite!Exercices de programmation Paseal EEIGM - ENSGSI 1998/1999
3? sdance - suite
3— Travaux personnels encadrés.
Travail pour le lendemain :
+ Lire dans le poly
pages 77 8 83, § 6.9.2§ 6.11 while, repeat, if
pages 89 2 100, § 7.1 4 § 7.3 integer, boolean, intervalle, real, chaines
pages 121 4 131, chapitre 9 fonctions et procédures jusqu'au § 9.4.4 p 131
4° séance— analyse et modularité
1— Amphi : analyse et paramétres.
Pourquoi faut il une démarche d'analyse.
Exemple de la construction du tri par bulles.
Quiest-ce qu'un algorithme ?
Importance de ia modularité,
Mécanisme des paramétres, de la localité,
Exemples d’effets de bord vicieux.
2— TD sans machine ; exercices de réflexion
+ Exercices sur les effets de bord.
+ Calcul en représentation exacte : définition dune bibliothéque de composants.
+ Facultatif : Réflexion sur les tris : algorithmes, efficacité, complexité.
3— Travaux personnels encadrés.
+ Rechercher sur le web des bibliothéques de composants pour faire du calcul en
représentation exacte,
+ Faire tourner sur machine les programmes correspondants aux exercices de la séance,
5° séance — itérations et récurrence
itérations, itérations par récursivité,
: suites récurrentes et mécanismes Pascal, notion de variable.
While, repeat, for
Récursivité.
2— TD : passage des programmes de la séance précédente.
* Exécuter un programme de tri.
puis
+ Exercices de récursivité: pged, Fibonacci, McCarthy, Ackermann, triangle de Pascal,
+ Exercices sur les itérations : em
+ Exercice sur la modularité : intégrer au calcul de e ou de m les composants logiciels
ramenés du web,
+ Commencer la réflexion du jeu de la vie, qui sera traité demain. Lire !’énoncé.
* Exercices facultatifs : Cryptanalyse, Crible d’Eratosthéne.
suiteExercices de programmation Pascal EEIGM - ENSGSI 1998/1999
3? séance - suite
3— Travaux personnels encadrés.
Terminer si nécessaire les exercices.
|4— Test pour juger de Passimi
ion des bases de la programmation et de Pas
5— Pour la séance suivante, lire 'énoncé du projet "jeu de la vie".
Travail pour le lendemain :
1) Lire dans le poly d'exercices I'énoneé du “jeu de Ia vie", pp. 22 & 25. Nous
Vanalyserons et le programmerons ensemble.
2) Lire dans le poly de cours Pascal
pages 9.4 17, des programmes pour découvrir Pascal
pages 41 & 50, analyse d'un probleme
pages 59 & 61, modules et blocs
6° séance — informatique et langages
1—Amphi_ = place de la programmation dans Pinformatique.
Place des L3G et L4G dans les outils informatiques.
Implications “sociales” : droits de propriété, virus et intrusions, législations.
2— TD sans ordinateur : analyse du projet, programmation.
Exercice “jeu de la vie”
Analyse en groupe du probléme avant d'en commencer individuellement la
programmation.
3— Test final de niveau (1h 15) qui permettra de faire un bilan précis des acquis.
7° séance — méthodologie
1— Amphi : Spée
Cycle de vie du logiciel.
Assurance qualité,
16 des problémes de qualité du logiciel.
2— TD : Mise au point sur machine du projet.
‘Terminer le projet.
Exercice supplémentaire facultatif : tests de QI.
3— Evaluation .Exercices de programmation Pascal EEIGM - ENSGSI 1998/1999
Compte rendus de TD
Chaque éleve doit rendre au cours du séminaire un compte rendu de TD, sous forme
d'un exercice rédigé.
Un compte rendu doit comporter sous forme concise mais compléte :
Pénoneé précis du probléme que l'on cherche & résoudre
analyse : hypotheses, justification du choix des algorithmes,
découpage en modules, les données et les résultats,
3° Je programme commenté
+ des jeux d’essais commentés et les résultats obtenus
Se une conclusion sur Ia validité du travail effectué, ses limites, ses
prolongements possibles
Evaluation
La note finale tiendra compte de l'ensemble des aspects suivants, dans l'ordre
d'importance décroissante :
- Ianote de test final
- la progres
~ fe travail
~ la motivation et du comportement.
- lanote du compte rendu de TD
- les 2 notes de tests de fin de journéeExereices de programmation Pascal EEIGM - ENSGSI 1998/1999
remiers exer
1) Taper et exéeuter chacun des programmes suivants
lprogran ecco; (calcul itératif aun PCCD) 1
lrar a,b:incegers
lnegin
write('ai
readin(a);
weite("
readin(b);
hi
hi
while ac>b do
if a>b then
-b
writeln(a);
readin (pour Borland Turbo Pascal)
lend.
program Noyenne.de_n.valeure; 2
var n, isinteger;
s,v,m:real;
begin
repeat
read(n) ;
if neO then
weiteln(‘erreur! (n>0!)")
until m0;
120
for i:
begin
read(v):
to n do
writeln('moyennes ',m);
readin (pour Borland Turbo Pascal)
lenaExercices de programmation Pascal EEIGM - ENSGSI 1998/1999
program factorielle: 3
var n:integer: fact:real; i:integer:
begin
write('actorielle de ');
readln(n);
fact
for i:=1 to n do
fact:=fact*i;
writeln(n,'! = ', fact);
readin {pour Borland Turbo Pascal)
Jend.
2) Décrire le fonctionnement de chaque programme, par oral, instruction par
instruction, en examinant le programme
3) Déerire le fonctionnement, sur
dexécution par la pose de points d'arrét et l'exécution pas a pa
Te mécanisme
4) Modifier ces programmes, pour les traitements suivants :
#1 : imprimer les valeurs intermédiaires de a et b, les numéroter,
#2: afficher un message d’invite A chaque lecture.
#3: imprimer la suite des factorielles inféricures & 100 000.
Exercice facultatif supplémentaire, pour ceux qui vont vite : la formule de Vidte
(Gnoneé en fin de poly).Exercices de programmation Pascal EEIGM - ENSGSI 1998/1999
1— Tabuler une fonction.
‘Tabuler par une boucle for les valeurs des fonctions x, x? et x3, pour x de -5 4 15.
Indications : 4 Vamphi nous avons vu le programme suivant
program TableDesinusztpecosinus; { tabuler les fonctions sinus et cosinus )
procedure tete; (imprimer L‘en-téte de 1a table)
begin writeln{‘angle':15, ‘sin’ :15,'cos':15) end
procedure pied; {impriner le pied de 1a tabl
Begin writeln{’ ':15,‘cos's15, ‘sin’ 15, ‘angle':15) end)
procedure table; (inprimer 1a table des sinus et cosinus)
var angle: integer;
Eunotion R(d:integer) :xeal; {conversion en radians d'un angle en degeéa)
agin Rr=d/180.0*3.141592653509793238 end; (function R)
begin (table)
for angle:s0 to 45 do {calcul de degré en degré)
weiteln(angle:15,sin(R(angle) ):15:10,cos (Riangle) } :15:10,90-angle:15)
end; (table)
begin
tete; table; pied; readin (pour Borland Turbo Pascal}
end.
2— Reconnaitre un nombre premier.
Entrer un nombre N au clavier.
ae Programmer une boucle for qui affiche les restes des divisions successives de N. par
tous les entiers 22 et 7(541) then
échanger Tj] et TI3+1]
Gchanger s'écrit en Pascal: x:=?{41;
rigell:
1) simuler & {a main Vexécution de cet algorithme, en examinant & chaque étape le
contenu du tableau et les valeurs de indices de boucle.
2) In deuxigme boucle n’a pas besoin daller jusque n-1 : pourquoi ? Modifier
Palgorithme.
3) la premidre boucle n’a pas besoin d’aller jusque n : pourquoi ? Modifier lalgorithme.
2. Exercice facultatif : Chercher d’autres méthodes de tri.
Les décrire.
Evaluer leur performance: le nombre d’opérations est il k
ou bien est il kn loggn?
Les programmer.
Les tester.
En mesurer la performance sur machine. Le temps d’exécution est il en o(n?) ou bien en
o(n logan) ? Combien vaut le Facteur k théorique ?
‘On pourra remplir les tableaux trier avec des nombres tirés au sort
sur PC en QuickPascal Is fonction random reourne un nombre récl entre 0.0 et 1.0; te genérateur aléztoire
peut tre iitialiséalgatoirement par appel & Ia procécre randomize
Sur Mae en ThinkPascal la fonction zandom rend un nombre algatoire entier compris enue -32768 et 32767:
Te générateur algatoire peut re initalisé en modifiant ta variable RndSeed
(On pourra aussi mesurer le temps d'exécution : sur PC en QuickPascal la fonction GetTime retoume eure (le
programme doit componter uses DOS)
GetTime(var heure, minute, seconde, centiemes : integer)
0..23' 0..59 0.59 | 0.99
IsExereices de programmation Pascal EEIGM - ENSGSI 1998/1999
La société de services en informatique « X DATA » a été chargée de réaliser le logiciel
dun terminal de payement par carte de erédit, terminal qui sera lové & des commergants.
Pour maximiser s
autres sociétés :
n cash-flow, X DATA a sous-traité la réalisation du logiciel & deux
— ZBROGLOWYTCH ZLYPRNCK GROBT, dans un pays de l'Est ot les salaires
@ingénieurs sont bas malgré la compétence élevée. Cette société a réalisé le module de
calcul du code secret. Ila été testé intensivement, et fonctionne correctement,
— YIN GO SHU, en Indonésie, Ceite société a développé tous les autres modules, &
exception du programme principal. Elle a livré une version beta de ses modules il y a
six semaines, Depuis, la crise du sud-est asiatique est passée par la, la société a fait
faillie. Les programmeurs s'étant tous fait hara kiri, fa mise au point définitive des
modules est compromise.
Le programme principal a été réalisé par Kevin DUGSEM, éléve de premitre année
dans une école européenne d’ingénieurs, qui vient de suivre un séminaire de
programmation, et neven du beau-frére par alliance de ta secrétaire du directeur de X
DATA. Il semblerait que ce programme comporte des errcurs..
X DATA doit livrer une version de démonstration de son logiciel impérativement pour
ce soir 4 17h30, sous peine d’indemnités de retard qui conduiraient a la faillite,
Votre mission consiste & mettre au point & temps ce logiciel.
Vous trouverez le programme dans son état actuel !'URL :
http: //dafne.mines.u-nancy.fr/~tisseran/EEIGM/documents/test2.htm
Pour le ramener sur voire PC sous Turbo Pascal, vous allez
= sous Netscape sauvegarder en format texte, dans un fichier U:\est2.txt (commande
« Enregistrer sous », attention 2 prendre le format texte et non pas html)
~ quitter Netscape, lancer Turbo Pascal
~ ouvrir le fichier U\Mext2.txt contenant le texte du programme
= sauvegarder sur Us\test2.pas le programme source
Puis vous corrigerez, les fautes de syntaxe.
Enfin vous testerez le fonctionnement du programme. Selon Kevin, qui avait commencé
Ja mise au point en décembre 199¥ Ie logiciel fonctionne parfaitement, Selon un testeur
qui aessayé le logiciel avec sa carte de crédit personnelle toute neuve, fin janvier 1998,
le programme plante, Le code secret de la carte est 2183. Si vous renconirez, une faute
de fonctionnement, notez-la ct identifiez Ia bogue.
Dans l'attente de cette mise au point, confiant en votre diligence, et vous en remerciant
par avance, nous vous prions de croire en l'expression de notre considération la plus
distinguée.
Les professeurs
16Exercices de programmation Pascal EEIGM - E
1998/1999
IES iteration
ee Igorithmique:
Exécuter un programme de tri.
1— Suite de Fibonacci.
Programmer récursivement le calcul du n't terme de la suite de Fibonacci (exercices
facultatifs, 3° séance)
F(n) = F(n-l) + F(-2) avec FQ) =0 et F(I)=1
Placer des ordre d’écriture pour suivre le déroulement de I’algorithme.
2— Fonetion étrange de MacCarthy.
MacCarthy(100) vaut 91 avec les définitions suivantes :
pourn>!00 MacCarthy (n) = n-10
pour ng100 MacCarthy (n) = MacCarthy(MacCarthy (n+111))
Exercices facultatifs complémentaires sur_la_récursivité
3— Fonction d'Ackermann.
Elle est définie par les équations récurrentes suivante:
Ackermann (i, j) = Ackermann (i-1, Ackermann(i, j-1))
Ackermann (i, 0) = Ackermann (-1, 1)
Ackermann (0,j) = j#1
4— Triangle de Pascal.
Calculer directement par récursivité les combinaisons (2° séance) : CyP= Cy.1P"! + Cy?
pour n et p donnés, avec Ob pgcd(a,b) = pged(a-b,b) sinon pged(a,b) = pgeda,b-a)
7Exercices de programmation Pascal EEIGM - ENSGSI 1998/1999
‘aleuldee==
Calculer e par son développement en série
se
o Dai
ie
Caleuler m par fa formule de John Machin :
m= 16 AtnL-4 Atan gL
16 Atan 5-4 Aan a5
Pour calculer la valeur de m, ta premigre idée revient & partir de la formule de Leibnitz
m=Atan(1) et de calculer l’are tangente par son développement en série :
Alana) =x Atan(x) &! Oe
Vx tel que -I 7| —
3 NAISSANCE. Sur une case vide comportant exactement trois cellules voisines,
il nait une cellule a la génération suivante.
*E}—> CE
Ces régles sont simultanées pour une génération donnée : la naissance d'une
cellule sur une case n’influe pas sur la survie ou la mort des cellules de la génération
précédente. Autrement dit, les seules cellules que l’on doit prendre en compte pour
Pétablissement de la génération future sont celles de la génération “actuelle”.
Pour réaliser le programme de simulation, les générations successives peuvent étre
représentées dans un méme tableau a deux dimensions G —Génération— en
donnant & chaque élément du tableau Ia valeur 1 pour la présence dune cellule, la valeur
O pour absence de cellule. Si le tableau a Xmax colonnes et Ymax lignes :
const trax = 25; (I"univers torique est représenté dans un tableau)
Ynax + 6; (dei: 6 lignes 25 colonnes)
type univers = arvay(1..tmasc, 1..Ymax) of 0
ver G : univers;
{coordonnées d’affichage du tableau 23. xmax }
i ee He ete e tee
t Zee el
C - ~ ~ i
¢ mx 7 TLD
Un premier tableau auxiliaire ¥ —Voisins— servira & compler Je nombre de voisins
de chaque cellule : Vii_ = ({Guy)-Gij_u de i-1 4 i+, v de j-1 a i+]
20Exercices de programmation Pascal EEIGM - ENSGSI 1998/1999
Un second tableau auxiliaire P —Prochaine génération— permettra de construire 1a
nouvelle génération avant de la faire devenir, d'un coup, la génération en cours :
SGi=T alors si(Vy=2ou Vj=3) alors Py = 1 SURVIE
sinon Pi MORT.
si Gi=Oalors si (Vy =3) alors Py = 1 NAISSANCE
sinon Pi MORT
ce qui peut se programmer =
Si(Vi= 3) alors Py = 1 SURVIE_ou NAISSANCE
sinon si (Vj =2) alors Py= Gi CONSERVATION
sinon Pi MORT
puis le programme effectue le basculement a la nouvelle genération =
Gin P
Dans notre simulation, nous allons utiliser un espace fini, rectangulaire, de géométrie
torique, Cela revient & identifier le rectangle avec la surface dun tore qui aurait &é
dgcoupé selon un petit cercle et un grand cercle puis aplati, c’est A dire que nous
considérons que les cétés droits et gauches du rectangle se rejoignent, ainsi que les
cdtés haut et bas, Par ce biais on confine les populations dans le domaine considéré tout
en évitant les effets de bord, chaque case posséde effectivement hit voisines.
Attention cependant, la notion de case voisine posséde des propriétés déconcertantes !
En effet lorsqu’une case est intérieure au domaine, ses voisines sont identiques a celles
qu'elle aurait sur Je plan infini_ (quatre voisines adjacentes orthogonales et quatre
voisines adjacentes diagonales). En revanche, pour une case “de bord” ou “de coin”, les
cases voisines sont disposées “de l'autre cOté"(figure 6). Ceci peut se programmer par
une fonetion qui catcule x4! et recentre le résultat dans Vintervalle I..n:
function ada (i,xn : integer) ; integer; ( calcule x recadré dans 1..n )
begin if (lexdel then addran else if (ieclon then addi=1 else addi-iex end
Un autre aspect déroutant de la vie sur un tore est qu’un méme organisme peut se
présenter 8 V'écran sous plusieurs formes différentes, selon la fagon dont on découpe le
fore sur lequel il vit. En effet une permutation circulaire des lignes ou des colon:
laisse invariant le tore ; si par ce procédé on peut passer d'une structure de cellules &
une autre, ces deux structures représentent Je méme organisme (figure 6).
Choisissez. maintenant quelques organismes simples (a trois, quatre ou cing cellules
adjacentes, soit orthogonalement, soit diagonalement ) et étudiez leurs générations
successives. Un peu d’expérimentation vous montrera que dans quelques cas ces
organismes meurent mais que le plus souvent ils conduisent soit 4 des organismes
tables, c*est A dire identiques de génération en génération, soit & des oscillateurs, c'est
A dire des organismes qui se retrouvent identiques A eux mémes et 2 la méme place au
bout d’un certain nombre de générations appelé la période de 'oscitlateur.
L’affichage d’une génération n’a pas besoin d’utiliser des graphismes élaborés,
car il s’agit de valider lalgorithme de simulation et non pas de faire une belle interface.
On peut par exemple programmer une procédure qui affiche des ‘' et des blancs :
procedure affichers var x.y : integers
Begin
‘eritein; weiteln(tunGeneration):
for yie 2 to wimax do begin (parcours ligne @ Ligne)
for x:= 1 to imax do. (parcours des colonnes dane une Ligne)
if Gly;x) = 1 then write("o') elge write(’ ")7
weiteln
end
ends
Le programme principal pourrait avoir la forme suivante :
var richar; .. initialisations; repeat calcul; affichage; readin(r) untdl ro-' *)
Comment ruser ?
En cas de besoin, des modules du programme peuvent étre déchargés depuis le web
hhetp://dafne.mines.u-nancy.fr/~tisseran/cours/pascal/jeu.de_la_vie-heml
20Exercices de programmation Pascal EEIGM - ENSGSI 1998/1999
i Ter
Tiere: | i tier Tei
Tere! Ter Terer_t
rrttt ert
Pris Perr
petit tte ter Ee
oie | jet ier tf fel fel i it teiei
fei iet : | le, jet Titel Tel it tel jet 7
ttere, | lier ert lem 11 lel lel
Cer er TT foto]
eee a er eT}
4. Queiques formes de vie stables sur le plan injiné
Terao
Tere
5. Quelquer voisseaux sur le plan injini
fale rie
Pela eed
tr] 7 Ti
eee] ere
22Exereices de programmation Pascal
EEIGM « ENSGSI 1998/1999
Ea octopre 1970, date ou oremer Ro
amelede Marin Gardner, joan Conway
avant fait la conjecture aw aucun ora
fusme ne pouvait eroitre indéiniment.
EEE
SS
——
——
= 2
ET ES
Un mots apres des chercneurs aus M.L.T.
trouverent, 3 l'aide d'un orcinateur. ce
quils appeigrent un « canon @ vais
seau » (ceprezenté sur ia figure 7). Cette
configuration ejecte un vausseau a cing
ceilules a ia 40¢ generation. puis osciile
avec une période de 30 génerations. en
Gectant un nouveau vaisseau & chaque
période. Comme chaaue vaisseau ajoute
Ging cellules & organisme. cet orga-
nisme croit indéGniment et la conjecture
de J. Conway ext done réfutée.
Une question venant navurellement &
esprit a propos du jeu deJ. Conway est
la suivante; existe-til un organisme aut
ne posséde pas d'antéeédent, c'esti-dire
qui ne peut étre engendré par un autre
organisms ? Longtemps conjectures, cos
wadams » (ou Eden pour les Angio-
saxons) n'ont éé découverts gue beau-
coup plus tard, Le premier a ctéconsiruit
en 1974 par Jean Hardown-Dupare ce
VUniversté de Bordeaus i surun rectan-
ale 6 x 122. Par la suite, Roger Banks
et Steve Ward du MIT en ont eonstrutt
‘ua plus peuit baptisé « orphelin », sur
wun rectangle 9 33
‘Avant d’en terminer avec fe jew de Ia
vie sur un plan infin je conseille au
lecteur de ne pas se lancer « &lamain »
dans étude des générations successives
du pentomina A ci-demous
Cher
Thee
Corer
Ter Tat
Tne se stabilise qu’a la 1103 généra~
tion en donnant 19 formes stables (pas
toutes diférentes) inserites dans un ree-
tangle SI X 109, cequi ext pour le moins
jimprévisible : John Conway aime ce cété
«« imprevisible » de la reproduction,
(a)
(bo)
{1
(a)
i)
an
(a)
th)
7. Le canon & veisseau du M.LT.
oT 7
Ter [Ter
| jer | jet
Li ie} {ite
Torer
CO
tr
rH
Tei | elit
ott [Ter
Tiel Tite
LLiie jie
[TTT
COMI
eT Tet
tt
tt
Sere [ere Te]Exercices de programmation Pascal EEIGM - ENSGSI 1998/1999
1— Formule de Viete : soient deux suites récurrentes u et v
alors quand ne,
Vérifier par un programme cette assertion, La convergence est-elle assez rapide pour
ne pas introduire trop d'ecreurs d'arrondi ?
2— Généralisation: soient deux suites récurrentes u et v:
{ wo=Vi) van e4/ EB |
{ =U0) t= 22}
alors quand neo uy f(x) et val
En choisissant certaines valeurs pour les fonctions U et V, on peut obtenir ainsi un
grand nombres de lignes trigonométriques et hyperboliques f:
UG) = V(x) = f(x) = conditions
x Thx ‘Ate sin (x) “TEKST
Tix? x Are cos (x) “Tex=s1
i Are tg
ix? lax?
1 aon ‘Are cote @)
Lex? Vix?
Hx-J) T+ rTncey x50
: ¥x241 Arg sh (x)
x21 x Aigeh Ket
Aigin@y Tex
we
we
Les rests de QL:
EEIGM - ENSGSI