Pregramme simulant une machine de Turing
Discussion fermée
Affichage des résultats 1 à 2 sur 2

Pregramme simulant une machine de Turing



  1. #1
    invite80294156

    Pregramme simulant une machine de Turing


    ------

    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()

    -----
    Dernière modification par brhmagupta ; 23/01/2018 à 08h17.

  2. #2
    JPL
    Responsable des forums

    Re : Pregramme simulant une machine de Turing

    Comme c’est obsolète en effet le sujet est clos.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

Discussions similaires

  1. Machine de turing en physique
    Par Bartoutatis dans le forum Physique
    Réponses: 2
    Dernier message: 18/01/2018, 11h24
  2. fabrication machine de turing
    Par benjamin38 dans le forum Électronique
    Réponses: 18
    Dernier message: 14/03/2015, 13h26
  3. Machine de Turing en Légo
    Par yoda1234 dans le forum Science ludique : la science en s'amusant
    Réponses: 0
    Dernier message: 24/06/2012, 05h59
  4. Machine de turing
    Par invite251213 dans le forum Discussions scientifiques
    Réponses: 12
    Dernier message: 11/12/2010, 18h19
  5. Machine de turing
    Par invitecc1b7100 dans le forum Mathématiques du supérieur
    Réponses: 7
    Dernier message: 10/02/2010, 00h02