***une idée... ***
de ce qui était attendu
en première session 2001
***uv16472***


1-preuves :


retour énoncé


2-Sémantique Structurelle :

	CTX |-	e     '-e->'    b
 Rf :	-----------------------------------------
	CTX |-	<bool> e </bool>    '-f->'    b

	CTX |-	e1   '-e->'    b1	e2   '-e->'    b2
Re1 :	-------------------------------------------si b= b1 &  b2
	CTX |-	<et> e1  e2 </et>  '-e->'    b	

	CTX |-	e1   '-e->'    b1	e2   '-e->'    b2
Re1 :	---------------------------------------------------- si b= b1 v  b2
	CTX |-	<ou> e1  e2 </ou>  '-e->'    b	

	CTX |-	e1   '-e->'    b1	
Re1 :	-------------------------------------- si b= ~b1
	CTX |-	<non> e1 </non>  '-e->'    b	
	 				
Re1 :	------------------------------
		b  '-e->'    b	

Re1 :	--------------------------- si b= CTX(v)
	CTX |-	v  '-e->'    b	


retour énoncé


3-DCG + Prolog :

f(B) --> ['<bool>' ] , e(B) , ['</bool>'].

e(B1 & B2) --> ['<et>' ] , e(B1) , e(B2) , ['</et>'].

e(B1 v B2) --> ['<ou>' ] , e(B1) , e(B2) , ['</ou>'].

e(~ B) --> ['<non>' ] , e(B) , ['</non>'].

e(X) --> [X] , {member(X , [vrai , faux , a , b , c , d])}.

f(CTX ,B , V) --> ['<bool>' ] , e(CTX ,B , V) , ['</bool>'].

e(CTX ,B1 & B2 ,V) -->

                       ['<et>' ] , e(CTX ,B1 , V1) , e(CTX ,B2 , V2) , ['</et>'], {et(V1 , V2 ,V)}.

e(CTX ,B1 v B2 ,V) -->

                       ['<ou>' ] , e(CTX ,B1 , V1) , e(CTX ,B2 , V2) , ['</ou>'], {ou(V1 , V2 ,V)}.

e(CTX ,~ B , NV) -->

                       ['<non>' ] , e(CTX ,B , V) , ['</non>'], {non(V , NV)}.

e(_ ,X , X ) --> [X] , {member(X , [vrai , faux])}.

e(CTX ,X , V) --> [X] , {member(X , [a , b , c , d]) , member(X=V , CTX)}.

retour énoncé


4-Java :

import java.util.*;
class FilterNumbers implements Iterator {
        private final Iterator iter;
        private Object nextnum;
public FilterNumbers(Iterator iter) {
   this.iter = iter;
        }
public boolean hasNext() {
   if (nextnum != null) return true;
   while (iter.hasNext()) {
                nextnum = iter.next();
                if (nextnum instanceof Number) {
                    return true;
                }
            }
            nextnum = null;
            return false;
        }
        public Object next() {
           if (nextnum == null && !hasNext()) throw new NoSuchElementException();
          Object savenum = nextnum;
            nextnum = null;
            return savenum;
        }
      public void remove() {
            throw new UnsupportedOperationException();
        }
    }      

    import java.util.*;
    
    
    public class IIterator {
        public static void main(String args[]) {
    
            // créer une liste
            List list = new ArrayList();
    
            // lui ajouter des éléments de différents types
    
            list.add(null);
            list.add("test1");
            list.add(new Integer(37));
            list.add(new Double(12.34));
            list.add(null);
            list.add("test2");
            list.add(new Long(12345));
            list.add(null);
            list.add(new Byte((byte)125));
    
            // filtrer et afficher les seuls elements de classe Number
   
            Iterator iter = new FiltrerClasse( list.iterator() , Number.class);
            while (iter.hasNext()) {
                System.out.println(iter.next());
            }
            iter = new FiltrerClasse( list.iterator() , String.class);
            while (iter.hasNext()) {
                System.out.println(iter.next());
            }
        }
    }

     import java.util.*;
    
    class FiltrerClasse implements Iterator {

        private final Iterator iter;
    
        private Object objet;
        private Class classe;
    
        public FiltrerClasse(Iterator iter, Class classe) {
            this.iter = iter; 
            this.classe = classe;

        }
    
        public boolean hasNext() {
    
            if (objet!= null) {
                return true;
            }
    
    
            while (iter.hasNext()) {
                objet = iter.next();
                if (classe.isInstance(objet)) {
                    return true;
                }
            }
    
            objet = null;
            return false;
        }
    
        public Object next() {
    
            if (objet == null && !hasNext()) {
                throw new NoSuchElementException();
            }
    
            Object savenum = objet;
            objet = null;
            return savenum;
        }
    
        public void remove() {
            throw new UnsupportedOperationException();
        }
    }




retour énoncé