Ce programme a été réalisé avec le langage "obsolète" EGO.
Ce programme permet de créer, modifier, enregistrer, rappeler tout "programme" créé pour la machine de Turing.
·(init)·Eff(255)·Pstyle(40)·Pi nceau(38)·Rect(0,0,1151,863)·P style(5)·Droite(0,80,1151,80)· Pstyle(1)[recommence:=0 , rappel:=0]··Chafic(schemes,1024)·Pause(0 )
[blancs:='bbbbbbbbbbbbbbbbbbbbb bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb bbbbbbbbbbbbbbbbbbbbbb']
·Peint(60,60,1,45)·Pinceau(20) ·Police(Arial,50)·Pos(250,25)M A C H I N E D E T U R I N G
·Pinceau(236)·Police(Arial,20) ·Brosse(255)[ruban:=''][indices:='']
·· Macros axes ruban et schéme
[axes_ruban:='·DefAxes(55,250,2 0,20)'][axes_scheme:='·DefAxes(65,350, 50,-30)'][axes_liste:='·DefAxes(370,450, 50,-20)']
·· Affichage du ruban "mémoire" de la machine
·(debut)·Axes(-)·Brosse(14)·Boite(30,140,1120 ,300)[ruban:='' , indices:='']
[axes_ruban]
[i:=0]
·Droite(-1,1,53,1)·Droite(-1,2,53,2)
·(ruban)·Aig([i],1,1,90)[i:=i+1]
·Remonte(52,ruban)
·· INITIALISATION (CREER RAPPELER EFFACER ARRÊTER)
·Si([rappel=1])·Saut(creer)
·Axes(-)·Brosse(66)·Boite(353,381,985 ,580)
·Pinceau(255)·Pos(590,400)·Pol ice(Arial,40)C H O I X
·Brosse(10)·Boite(420,470,470, 520)·Brosse(9)·Boite(640,470,6 90,520)·Brosse(11)·Boite(860,4 70,910,520)·Brosse(13)·Boite(6 40,670,690,720)
·Police(Arial,20)·Pos(380,540) Créer un schéme
·Pos(590,540)Rappeler un schéme
·Pos(815,540)Effacer un schéme
·Pinceau(236)
·Pos(628,730)ARRÊTER
·(choix)·Inter()
·Ptc([ewclicx],[ewclicy],c)
·Si([c=10])·Saut(creer)
·Si([c=9])·Saut(rappeler)
·Si([c=11])·Saut(effacer)
·Si([c=13])·Fin()
·Saut(choix)
·(effacer)·Brosse(66)·Boite(35 3,381,985,580)
·Pos(480,400)·Pinceau(255)·Pol ice(Arial,40)LISTE DES SCHEMES:
·Pinceau(236)[liste:=schemes{1}]·ChaRemp(liste,'/',' ')
·Si([liste=''])·Pos(525,480)·Pinceau(255)AUC UN SCHEME·Pause(0)·Saut(init)
·Police(Arial,20)·Pinceau(255)
[axes_liste]
[i:=1]
·(l_39)·Pos([i],1)[chamot(liste,[i],' ')][i:=i+1]
·Remonte([chalong(liste,' ')-1],l_39)
·Inter()
[n:=tba(ewclicx)]
[ewmessage:=chamot(schemes{1},[n],'/')]
·FiSup([ewmessage].cha)
·ChaSup(schemes{1},[ewmessage],'/')
·Pause(0)
·Saut(debut)
·(rappeler)·Brosse(66)·Boite(3 53,381,985,580)[rappel:=1]
·Pos(480,400)·Pinceau(255)·Pol ice(Arial,40)LISTE DES SCHEMES:
·Pinceau(236)[liste:=schemes{1}]·ChaRemp(liste,'/',' ')
·Si([liste=''])·Pos(525,480)·Pinceau(255)AUC UN SCHEME[rappel:=0]·Pause(0)·Saut(init)
·Police(Arial,20)·Pinceau(255)
[axes_liste]
[i:=1]
·(listsche)·Pos([i],1)[chamot(liste,[i],' ')][i:=i+1]
·Remonte([chalong(liste,' ')-1],listsche)
·Inter()
[n:=tba(ewclicx)]
[ewmessage:=chamot(liste,[n],' ')] )
[profond:=[[ewmessage]{1}]] ··Axes(-)·Pinceau(236)·Police(Arial,30 )·Pos(300,330) XXX[[ewmessage]{1}]WWW ·Pause(0)
[i:=2]
·(lignes)[ligne[i-1]:=[ewmessage]{i}][i:=i+1]
·Remonte([profond-1],lignes)
[i:=1]
[axes_scheme]
·Pstyle(2)·Brosse(7)·Boite(0,0 ,3,16)·Rect(0,0,3,16)·Droite(0 ,1,3,1)·Pinceau(12)·Droite(1,0 ,1,16)·Pstyle(1)·Pinceau(236)· Droite(2,0,2,16)
·(l_55)·Droite(0,[i],3,[i])[i:=i+1]
·Remonte(14,l_55)
·Police(Arial,20)·Pinceau(12)· Pos(0.35,0.25)qi·Pinceau(9)·Po lice(Arial,40)·Pos(1.35,0.15)* ·Police(Arial,20)
[x:=0.2 , y:=1.1 , j:=1]
·(affich)·Pos([x],[y])[Chamot(ligne[j],1,'/')]·Pos([x+1],[y])[chamot(ligne[j],2,'/')]·Pos([x+2],[y])[chamot(ligne[j],3,'/')]
[j:=j+1 , y:=y+1]
·Remonte([profond-1],affich)
[recommence:=1]
·Saut(debut)
·· Inscription des informations sur le ruban
·(creer)·Brosse(255)·Boite(353 ,381,985,580)
·Axes(+)
·Brosse(0)·Boite(25,5,26,4)
·Axes(-)
·Pstyle(5)·Pinceau(9)·Rect(30, 140,1120,300)·Pstyle(1)·Pincea u(236)·Police(Arial,20)
·Pos(360,100)Placez les astérisques (clic gauche) ou rien (clic droit)·Pinceau(85)·Police(Aria l,40)
·Axes(+)
·(init_tape)·Inter()
[x:=ewclicx , y:=ewclicy]
·Ptc([x],[y],c)
·Si([c=0])·Saut(suite1)
[x:=tba(x) , y:=tba(y)]
·Si([y<1 | y>2])·Saut(init_tape)
[indices:=indices+num([x])+'/']
·Si([ewsourisb=1])·Pos([x+0.2],[y+1.1])*[ruban:=ruban+'*']
·Si([ewsourisb=2])·Police(Arial,20)[ruban:=ruban+'b']·Police(Arial,40)
·Saut(init_tape)
·(suite1)[indice:=[[chamot(indices,1,'/')]]]
[long_ruban:=chalong(ruban)]
[gauche:=indice-1 , droite:=51-(gauche+long_ruban)]
[ruban:=Chaextract(blancs,1,gau che)+ruban+Chaextract(blancs,l ong_ruban+1,droite)]
·Police(Arial,20)
·Objet(tete.tif,[tba(indice)+0.1],0.8,3,2)
·Si([recommence=1])·Saut(correction)
·· Création et correction du schéme fonctionnel (progammation)
·Axes(-)
·Pos(35,320)·Pinceau(236)Créez le schème fonctionnel:
[axes_scheme]
[i:=1]
·Pstyle(5)·Brosse(7)·Boite(0,0 ,3,16)·Pinceau(3)·Rect(0,0,3,1 6)·Droite(0,1,3,1)·Pinceau(12) ·Droite(1,0,1,16)·Pstyle(1)·Pi nceau(236)·Droite(2,0,2,16)
·(etats)·Droite(0,[i],3,[i])[i:=i+1]
·Remonte(14,etats)
·Pinceau(12)·Pos(0.35,0.25)qi· Pinceau(9)·Police(Arial,40)·Po s(1.35,0.15)*·Police(Arial,20)
[x:=0.2 , y:=1.1 , j:=1][ligne1:='']·PolRep(Arial,20)
·(scheme)·FenRep([x],[y],0.7,0.9,236,7)
·(reprise1)·Inter()
·Comod(verif1)
·Si([verif1=1])·Beep(2)·Saut(reprise1)
·Si([ewmessage=''],continue)
·(correction)·Si([recommence=1])[axes_scheme][j:=1]
·Axes(-)·FenRep()
·Brosse(2)·Boite(353,381,985,5 80)·Pstyle(5)·Pinceau(11)·Rect (353,381,985,580)·Pstyle(1)
·Pinceau(14)·Police(Arial,30)· Pos(580,400)CORRECTION
·Pos(470,460)·Police(Arial,20) Cliquez sur la case contenant la commande à corriger.
·Pos(425,500)Sinon, ou les corrections effectuées, cliquez à droite du schéme.
[axes_scheme]
·(corrige)·Inter()
·Comod(verif2)
·Si([verif2=1])·Beep(2)·Saut(corrige)
·Si([ewclicx>3])·Saut(suite2)
[rang:=tba(ewclicx) , ligne:=tba(ewclicy)]
·FenRep([rang+0.1],[ligne+0.1],0.7,0.9,13,7)
·(reprise2)·Inter()
·ChaSup(ewmessage,' ')
·Comod(verif2)
·Si([verif2=1])·Beep(2)·Saut(reprise2)
·ChaSubst(ligne[ligne],[ewmessage],[rang+1],'/')
·FenRep()
·Saut(corrige)
·(continue)·ChaSup(ewmessage,' ')[ligne[j]:=ligne[j]+ewmessage+'/']
·FenRep([x+0.9],[y],0.8,0.9,13,7)
·(reprise3)·Inter()
·Comod(verif2)
·Si([verif2=1])·Beep(2)·Saut(reprise3)
·ChaSup(ewmessage,' ')[ligne[j]:=ligne[j]+ewmessage+'/']
·FenRep([x+1.9],[y],0.8,0.9,13,7)
·(reprise4)·Inter()
·Comod(verif2)
·Si([verif2=1])·Beep(2)·Saut(reprise4)
·ChaSup(ewmessage,' ')[ligne[j]:=ligne[j]+ewmessage+'/']
[x:=0.2 , y:=y+1 , j:=j+1]
[ligne[j]:='']
·FenRep()
·Saut(scheme)
·· Choix de la vitesse d'exécution: Très lente: 5 secondes par déplacement de la tête ou 1 seconde pour lente
·(suite2)·Axes(-)
·Brosse(2)·Boite(353,381,985,5 80)·Pstyle(5)·Pinceau(11)·Rect (353,381,985,580)·Pstyle(1)
·Pinceau(14)·Pos(570,400)REGLA GE DE LA VITESSE
·Brosse(11)·Boite(500,500,550, 550)·Pinceau(15)·Pos(500,450)T rès lente
·Brosse(13)·Boite(650,500,700, 550)·Pinceau(15)·Pos(650,450)L ente
·Brosse(9)·Boite(800,500,850,5 50)·Pinceau(15)·Pos(800,450)Ra pide
·Brosse(255)·Boite(500,650,780 ,780)
·(faux)·Inter()
·Ptc([ewclicx],[ewclicy],c)
·Si([c=11])[p:=5]
·Si([c=13])[p:=1]
·Si([c=9])[p:=0.1]
·Si([c<>9 & c<>13 & c<>11])·Saut(faux)
[nbl:=j-1]
[j:=1 , k:=tba(indice)]
·· Exécution du schéme (programme) avec affichage des commandes exécutées.
·(prov)·Evt(fini,2)
·Axes(-)
·Brosse(2)·Boite(353,381,985,5 80)·Pstyle(5)·Pinceau(11)·Rect (353,381,985,580)·Pstyle(1)
·Brosse(14)·Boite(400,500,450, 550)·Brosse(76)·Boite(550,500, 600,550)·Brosse(12)·Boite(700, 500,750,550)·Brosse(95)·Boite( 850,500,900,550)
·Pinceau(236)·Police(Arial,40) ·Pos(570,400)CONTRÔLE
·Police(Arial,30)·Pos(400,460) Etat·Pos(530,460)Ecriture·Pos( 660,460)Mouvement·Pos(810,460) Etat suivant
[etat:=chamot(ligne[j],1,'/')]
·Si([chamot(ligne[j],2,'/')<>''],deux)
[ecriture_un:=chamot(ligne[j],2,'/')][ecriture_un:=chamot(ecriture_u n,1)]
[mouvement_un:=chamot(ligne[j],2,'/')][mouvement_un:=chamot(mouvement _un,2)]
[etat_suivant_un:=chamot(ligne[j],2,'/')][etat_suivant_un:=chaextract(et at_suivant_un,3,2)][j_un:=chamot(etat_suivant_un,2 )]
·(deux)·Si([chamot(ligne[j],3,'/')<>''],trois)
[ecriture_deux:=chamot(ligne[j],3,'/')][ecriture_deux:=chamot(ecriture _deux,1)]
[mouvement_deux:=chamot(ligne[j],3,'/')][mouvement_deux:=chamot(mouveme nt_deux,2)]
[etat_suivant_deux:=chamot(lign e[j],3,'/')][etat_suivant_deux:=chaextract( etat_suivant_deux,3,2)][j_deux:=chamot(etat_suivant_de ux,2)]
·(trois)·Si([chamot(ruban,[k])='*'],blanc)
[j:=j_un]
[ecriture:=ecriture_un , mouvement:=mouvement_un , etat_suivant:=etat_suivant_un]
·(blanc)·Si([chamot(ruban,[k])='b'],suite3)
[j:=j_deux]
[ecriture:=ecriture_deux , mouvement:=mouvement_deux , etat_suivant:=etat_suivant_deu x]
·(suite3)·Pinceau(9)·Pos(415,5 10)[etat]·Pos(570,515)[ecriture]·Pos(720,510)[mouvement]·Pinceau(9)·Pos(860,510)[etat_suivant]·Pinceau(255)
·Brosse(14)·Boite(39,233,1076, 295)
[axes_ruban]·Objet(tete.tif,[k+0.2],0.8,3,2)·Pause([p])
·Si([ecriture='*'])·Police(Arial,40)·Pos([k+0.2],2.1)·Pinceau(9)[ecriture]·ChaSubst(ruban,'*',[k])
·Si([ecriture='b'])·Brosse(14)·Boite([k+0.1],1.9,[k+0.90],1.2)·ChaSubst(ruban,'b',[k])
·(enjamb)·Si([mouvement='D'])[k:=k+1]
·Si([mouvement='G'])[k:=k-1]
·Si([mouvement='S'])·Saut(fini)
·Saut(prov)
·· Arrêt de la machine
·(fini)·Axes(-)·Evt(-)
·Brosse(255)·Boite(500,650,780 ,780)
·Brosse(2)·Boite(353,381,985,5 80)
·Pinceau(255)·Police(Arial,40) ·Pos(510,400)ACTION SUIVANTE
·Brosse(11)·Boite(440,500,490, 550)·Brosse(12)·Boite(565,500, 615,550)·Brosse(10)·Boite(700, 500,750,550)·Brosse(13)·Boite( 840,500,890,550)
·Pinceau(255)·Police(Arial,20)
·Pos(440,470)Répéter·Pos(545,4 70)Sauvegarder·Pos(670,470)Rec ommencer·Pos(830,470)ARRETER
·(erreur)·Inter()
·Ptc([ewclicx],[ewclicy],c)
·Si([c=11])[recommence:=1]·Pinceau(0)·Saut(debut)
·Si([c=10])·Saut(init)
·Si([c=13])·Fin()
·Si([c=12],erreur)
·Brosse(2)·Boite(353,381,985,5 80)
·Pinceau(255)·Police(Arial,40) ·Pos(510,400)Nom du scheme:
·PolRep(Arial,30)
·FenRep(530,480,200,30,255,236 )
·Inter()
·ChaSup(ewmessage,' ')
·ChaFic([ewmessage],100)[schemes{1}:=schemes{1}+ewmessa ge+'/']
[[ewmessage]{1}:=num([nbl])]
[i:=2]
·(sauvegarde)[[ewmessage]{i}:=ligne[i-1]][i:=i+1]
·Remonte([nbl],sauvegarde)
·FenRep()
·Saut(debut)
·Fin()
-----