Simulateur de circuit logique vraiment basic

Soyez le premier à donner votre avis sur cette source.

Snippet vu 17 744 fois - Téléchargée 27 fois

Contenu du snippet

c'est un petit simulateur de circuit logique en mode texte.
les deux classes test sont des applications de la classe porteLogique.
l'une est une démo d'une port non ou connetée à une porte non. l'autre, est une démo deux portes non et cablées en bascule RS.

Source / Exemple :


public class Logique{

	boolean e1,e2,s;
	int i;
	String nom;
	String type;
	Logique porte;

	public Logique(String nom,String type){
		this.nom=nom;
		this.type=type;
	}

	public void etatE1(boolean e){
		e1=e;
		this.operation();	
	}

	public void etatE2(boolean e){
		e2=e;
		this.operation();
	}
	
	private void operation(){
            boolean anciens;
		anciens=s;
		if(type.equals("non ou")) s=!(e1||e2);
		if(type.equals("non et")) s=!(e1&&e2);
		if(type.equals("non")) s=!e1;
		if(type.equals("et")) s=(e1&&e2);
		if(type.equals("ou")) s=(e1||e2);	
		if(anciens!=s){
		if(i==1) porte.etatE1(s);
		if(i==2) porte.etatE2(s);
		}
	}

	public void niveau(){
		if(type.equals("non")){
		 	System.out.println("etat de l entree de "+nom+" : "+e1);
		}
		else{
			System.out.println("etat de l entree 1 de "+nom+" : "+e1);
			System.out.println("etat de l entree 2 de "+nom+" : "+e2);	
		}
		System.out.println("etat de la sortie "+nom+" : "+s);
	}

	public void relie(Logique porte,int n){
		this.porte=porte;
		i=n; 
	}

	public void niveauE1(){
		System.out.println("etat de l entree 1 de "+nom+" : "+e1);	
		
	}
	
	public void niveauE2(){
		System.out.println("etat de l entree 2 de "+nom+" : "+e2);	

	}
	
	public void niveauS(){
		System.out.println("etat de la sortie "+nom+" : "+s);
	}

}

class test{
	public static void main(String arg[]){	
	
        //selection des portes logiques
		Logique p1=new Logique("p1","non ou");
		Logique p2=new Logique("p2","non");
                
        //cablage
		p1.relie(p2,1);
        
        //simulation
		p1.etatE1(false);
		p1.etatE2(false);
		System.out.println("cas 1");
		p1.niveau();
		p2.niveau();
		p1.etatE1(false);
		p1.etatE2(true);
		System.out.println("cas 2");
		p1.niveau();
		p2.niveau();
		p1.etatE1(true);
		p1.etatE2(false);
		System.out.println("cas 3");
		p1.niveau();
		p2.niveau();
	}
}

class test2{
	public static void main(String arg[]){	
          
        //selection des portes logiques
		Logique p1=new Logique("p1","non et");
		Logique p2=new Logique("p2","non et");
                
        //cablage  sortie de p1 vers l'entrée 1 de p2             
		p1.relie(p2,1);
        //cablage  sortie de p2 vers l'entrée 2 de p1   
		p2.relie(p1,2);
        
        //séquence d'etat des entrées
		boolean [] entree2={false,true,true,true};
		boolean [] entree1={true,true,false,true};
                
        //simulation                
		for(int i=0;i<=3;i++){
			p1.etatE1(entree1[i]);
			p2.etatE2(entree2[i]);
			System.out.println("cas "+i);
			p1.niveauS();
			p2.niveauS();
		}	
	}
}

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.