F90: Tabela verdade do OU Exclusivo

From AdonaiMedrado.Pro.Br
Jump to: navigation, search

Versão sem FUNCTION

PROGRAM aula
	!Formas de se escrever um OU El1clusivo:
	!(l1 .AND. .NOT. l2) .OR. (.NOT. l1 .AND. l2)
	!ou
	!(l1 .OR. l2) .AND. (.NOT. l1 .OR. .NOT. l2)
	!ou
	!(l1 .OR. l2) .AND. .NOT. (l1 .AND. l2)
	!ou
	!.NOT. ((l1 .OR. .NOT. l2) .AND. (.NOT. l1 .OR. l2))
	!Usarei aqui a primeira forma.
	LOGICAL :: l1, l2
	l1=.TRUE.
	l2=.TRUE.
	WRITE (*,*) "T ou exclusivo T =", (l1 .AND. .NOT. l2) .OR. (.NOT. l1 .AND. l2)
	WRITE (*,*) "T ou exclusivo F =", (l1 .AND. l2) .OR. (.NOT. l1 .AND. .NOT. l2)
	WRITE (*,*) "F ou exclusivo T =", (.NOT. l1 .AND. .NOT. l2) .OR. (l1 .AND. l2)
	WRITE (*,*) "F ou exclusivo F =", (.NOT. l1 .AND. l2) .OR. (l1 .AND. .NOT. l2)
END PROGRAM aula

Versão com FUNCTION

PROGRAM aula
	LOGICAL :: l1, l2
	l1=.TRUE.
	l2=.TRUE.
	WRITE (*,*) "T ou exclusivo T =", ExecutarOUExclusivo(l1,l2)
	WRITE (*,*) "T ou exclusivo F =", ExecutarOUExclusivo(l1,.NOT. l2)
	WRITE (*,*) "F ou exclusivo T =", ExecutarOUExclusivo(.NOT. l1, l2)
	WRITE (*,*) "F ou exclusivo F =", ExecutarOUExclusivo(.NOT. l1,.NOT. l2)
CONTAINS
	LOGICAL FUNCTION ExecutarOUExclusivo(x,y)
		LOGICAL, INTENT(IN) :: x,y
		!Formas de se escrever um OU Exclusivo:
		!(x .AND. .NOT. y) .OR. (.NOT x .AND. y)
		!ou
		!(x .OR. y) .AND. (.NOT. x .OR. .NOT. y)
		!ou
		!(x .OR. y) .AND. .NOT. (x .AND. y)
		!ou
		!.NOT. ((x .OR. .NOT. y) .AND. (.NOT. x .OR. y))
		!Usarei aqui a primeira forma.
		ExecutarOUExclusivo = (x .AND. .NOT. y) .OR. (.NOT x .AND. y)
	END FUNCTION ExecutarOUExclusivo
END PROGRAM aula