?def Vypis(Vstup):
#--------------------------------------------------------------------
#
# Číslo funkce =1=
#
# Vypíše "help" funkce
#
#
#--------------------------------------------------------------------
	Text='';
	if Vstup==2:
		Text="""#--------------------------------------------------------------------
#
# Číslo funkce =2=#
# Určí hodnoty False a True 
#
# Globální proměnné: 		Nabývá hodnoty:
#		True			1
#               False			0
#
#--------------------------------------------------------------------""";
	elif Vstup==3:
		Text="""#--------------------------------------------------------------------
#
# Číslo funkce =3=
#
# Funkce provede logický součin zadaných proměnných 
#
#--------------------------------------------------------------------""";
	elif Vstup==4:
		Text="""#--------------------------------------------------------------------
#
# Číslo funkce =4=
#
# Funkce provede logický součet zadaných proměnných 
#
#--------------------------------------------------------------------""";
	elif Vstup==5:
		Text="""#--------------------------------------------------------------------
#
# Číslo funkce =5=
#
# Funkce provede logický exkluzivní součet zadaných proměnných,
# kterých v tomto případě mohou být jen dvě. Dá se použít jako
# komparátor. 
#
#--------------------------------------------------------------------""";
	else:
		#Text='Není nápověda';
		raise RuntimeError, 'ZM - K zadané funkci není žádná nápověda'

	return Text
#+++++++++++++++++++++++++++++++++++++++++++++++++++++


def TF(Vstup):
#--------------------------------------------------------------------
#
# Číslo funkce =2=
#
# Určí hodnoty False a True 
#
# Globální proměnné: 		Nabývá hodnoty:
#		True			1
#               False			0
#
#--------------------------------------------------------------------

	global True
	global False

	TextV='';
	if Vstup=='?': 
		TextV=Vypis(2);
	False=0;
	True=1;
	
	return TextV
#+++++++++++++++++++++++++++++++++++++++++++++++++++++


def AND(*Vstup):
#--------------------------------------------------------------------
#
# Číslo funkce =3=
#
# Funkce provede logický součin zadaných proměnných 
#
#--------------------------------------------------------------------

	Jedna=0;
	Nula=0;
	Pocet=len(Vstup);
	TextV='';
	if Vstup[0]=='?' and Vstup[0].isalpha(): 
		TextV=Vypis(3);
		return TextV
	elif Vstup[0]==1 or Vstup[0]==0: pass;
	else:
		raise RuntimeError, 'ZM - Neznámá proměná';
		return
	if Pocet<2: 
		raise RuntimeError, 'ZM - Malý počet proměných - min.=2';
		return
	for i in range(Pocet):
		if Vstup[i]==1 or Vstup[i]==0: pass;
		else: raise RuntimeError, 'ZM - Některá z proněných není typu Logic';
   	for i in range(Pocet):
		if Vstup[i]==1 or Vstup[i]==0: pass;
		else: raise RuntimeError, 'ZM - Některá z proněných není typu Logic';
	for i in range(Pocet):
   		if Vstup[i]==True: Jedna+=1
   		else: Nula+=1
   	if Jedna==Pocet: return True;
   	return False
   	
#+++++++++++++++++++++++++++++++++++++++++++++++++++++

def OR(*Vstup):
#--------------------------------------------------------------------
#
# Číslo funkce =4=
#
# Funkce provede logický součet zadaných proměnných 
#
#--------------------------------------------------------------------

	Jedna=0;
	Nula=0;
	Pocet=len(Vstup);
	TextV='';
	if Vstup[0]=='?' and Vstup[0].isalpha(): 
		TextV=Vypis(4);
		return TextV
	elif Vstup[0]==1 or Vstup[0]==0: pass;
	else:
		raise RuntimeError, 'ZM - Neznámá proměná';
		return
	if Pocet<2: 
		raise RuntimeError, 'ZM - Malý počet proměných - min.=2';
		return
	for i in range(Pocet):
		if Vstup[i]==1 or Vstup[i]==0: pass;
		else: raise RuntimeError, 'ZM - Některá z proněných není typu Logic';
   	for i in range(Pocet):
   		if Vstup[i]==True: Jedna+=1;
   		else: Nula+=1;
   	if Nula==Pocet:
   		return False;
   	return True
   	
#+++++++++++++++++++++++++++++++++++++++++++++++++++++

def XOR(*Vstup):
#--------------------------------------------------------------------
#
# Číslo funkce =5=
#
# Funkce provede logický exkluzivní součet zadaných proměnných,
# kterých v tomto případě mohou být jen dvě. Dá se použít jako
# komparátor. 
#
#--------------------------------------------------------------------

	TextV='';
	if Vstup[0]=='?': 
		Text=Vypis(5);
		return TextV
	Jedna=0;
	Nula=0;
	Pocet=len(Vstup)
	if Pocet>=2: return 555
   	for i in range(Pocet):
   		if Vstup[i]==True: Jedna=Jedna+1
   		else: Nula+=1
   	if Jedna!=Pocet and Nula!=Pocet: return True
   	return False
   	
#+++++++++++++++++++++++++++++++++++++++++++++++++++++


