Operator dan ekspresi logika
Operator dan Ekspresi LOGIKA

Fortran memiliki lima operator LOGICAL yang hanya dapat digunakan dengan ekspresi yang hasilnya adalah nilai logika ( yaitu , .TRUE. atau .FALSE. ). Semua operator LOGICAL memiliki prioritas lebih rendah daripada operator aritmatika dan relasional . Oleh karena itu, jika suatu ekspresi melibatkan operator aritmatika, relasional, dan logika, operator aritmatika dievaluasi terlebih dahulu, diikuti oleh operator relasional, diikuti oleh operator logika.
Lima operator logika ini adalah
- .TIDAK. : tidak logis
- .DAN. : logis dan
- .ATAU. : logis atau
- .EQV. : kesetaraan logis
- .NEQV. : logika bukan kesetaraan
Jenis | Operator | Asosiatif | |||||
Hitung | ** | kanan ke kiri | |||||
* | / | kiri ke kanan | |||||
+ | - | kiri ke kanan | |||||
Relasional | < | <= | > | >= | == | /= | tidak ada |
Logis | .BUKAN. | kanan ke kiri | |||||
.DAN. | kiri ke kanan | ||||||
.ATAU. | kiri ke kanan | ||||||
.EQV. | .NEQV. | kiri ke kanan |

Tabel Kebenaran
.BUKAN. | Operan | Hasil |
.BENAR. | .PALSU. | |
.PALSU. | .BENAR. |
Perhatikan bahwa .NOT. adalah operator unary. Oleh karena itu, .NOT. a menghasilkan .TRUE. ( resp. , .FALSE. ) jika nilai variabel LOGICAL a adalah .FALSE. ( resp. , .TRUE. ).
.DAN. | .BENAR. | .PALSU |
.BENAR. | .BENAR. | .PALSU. |
.PALSU. | .PALSU. | .PALSU. |
Oleh karena itu, hasil ekspresi logika a .AND. b adalah .TRUE. jika dan hanya jika kedua operan a dan b adalah .TRUE. . Dalam semua kasus lainnya, hasilnya selalu .FALSE.
.ATAU. | .BENAR. | .PALSU |
.BENAR. | .BENAR. | .BENAR. |
.PALSU. | .BENAR. | .PALSU. |
Oleh karena itu, hasil ekspresi logika a .OR. b adalah .FALSE. jika dan hanya jika kedua operan a dan b adalah .FALSE. . Dalam semua kasus lainnya, hasilnya selalu .TRUE. Dengan kata lain, jika salah satu dari dua operan operator .OR. adalah .TRUE. , hasilnya adalah .TRUE.
.EQV. | .BENAR. | .PALSU |
.BENAR. | .BENAR. | .PALSU. |
.PALSU. | .PALSU. | .BENAR. |
Oleh karena itu, hasil ekspresi logika a .EQV. b adalah .TRUE. jika dan hanya jika kedua operan a dan b memiliki nilai yang sama ( yaitu , keduanya .TRUE. atau keduanya .FALSE. ). Seperti yang disebutkan dalam ekspresi relasional , operator relasional hanya dapat membandingkan nilai aritmatika dan tidak dapat digunakan untuk membandingkan nilai logika. Untuk membandingkan apakah dua nilai logika sama, gunakan .EQV.
.NEQV. | .BENAR. | .PALSU |
.BENAR. | .PALSU. | .BENAR. |
.PALSU. | .BENAR. | .PALSU. |
Oleh karena itu, hasil ekspresi logika a .NEQV. b adalah .TRUE. jika dan hanya jika kedua operan a dan b tidak memiliki nilai yang sama. Seperti disebutkan dalam ekspresi relasional , operator relasional hanya dapat membandingkan nilai aritmatika dan tidak dapat digunakan untuk membandingkan nilai logika. Untuk membandingkan jika dua nilai logika tidak sama, gunakan .NEQV. Perhatikan bahwa .NEQV adalah kebalikan dari .EQV. . Oleh karena itu, untuk menguji apakah variabel logika x dan y memiliki nilai yang berbeda, seseorang dapat menggunakan .NOT. (x .EQV. y) . Di sini, jika x dan y memiliki nilai yang sama, x .EQV. y adalah .TRUE. dan .NOT. (x .EQV. y) adalah .FALSE. Di sisi lain, jika x dan y memiliki nilai yang berbeda, x .EQV. y adalah .FALSE. dan .NOT. (x .EQV. y) adalah .TRUE.
Prioritas
Berikut beberapa contohnya:
- Biarkan variabel LOGICAL Sesuatu dan Lain memiliki nilai .TRUE. dan .FALSE. , berturut-turut..TIDAK. Sesuatu .DAN. Yang lain--> .TIDAK. .BENAR. .DAN. .SALAH.--> [.TIDAK. BENAR.] .DAN. SALAH.--> .SALAH. .DAN. .SALAH.--> .SALAH.Dalam contoh di atas, karena .NOT. memiliki prioritas tertinggi, maka ia dievaluasi terlebih dahulu. Sekarang, lihat contoh berikut:.TIDAK. (Sesuatu .DAN. Yang Lain)--> .TIDAK. (.BENAR. .DAN. .SALAH.)--> .TIDAK. ([.BENAR. .DAN. .SALAH.])--> .TIDAK. .SALAH.--> .BENAR.
- Biarkan variabel LOGICAL a , b dan c memiliki nilai .TRUE. , .TRUE. dan .FALSE. , berturut-turut..TIDAK. a .ATAU. .TIDAK. b .DAN. c--> .TIDAK. .BENAR. .ATAU. .TIDAK. .BENAR. .DAN. .SALAH.--> [.TIDAK. .BENAR.] .ATAU. .TIDAK. .BENAR. .DAN. .SALAH.--> .SALAH. .ATAU. .TIDAK. .BENAR. .DAN. .SALAH.--> .SALAH. .ATAU. [.TIDAK. .BENAR.] .DAN. .SALAH.--> .SALAH. .ATAU. .SALAH. .DAN. .SALAH.--> .SALAH. .ATAU. [.SALAH. .DAN. .SALAH.]--> .SALAH. .ATAU. .SALAH.--> .SALAH.
- Biarkan variabel INTEGER n memiliki nilai 4:n**2 + 1 > 10 .DAN. .TIDAK. n < 3--> 4**2 + 1 > 10 .DAN. .TIDAK. 4 < 3--> [4**2] + 1 > 10 .DAN. .TIDAK. 4 < 3--> 16 + 1 > 10 .DAN. .TIDAK. 4 < 3--> [16 + 1] > 10 .DAN. .TIDAK. 4 < 3--> 17 > 10 .DAN. .TIDAK. 4 < 3--> [17 > 10] .DAN. .TIDAK. 4 < 3--> .BENAR. .DAN. .TIDAK. 4 < 3--> .BENAR. .DAN. .TIDAK. [4 < 3]--> .BENAR. .DAN. .TIDAK. .SALAH--> .BENAR. .DAN. [.TIDAK. .SALAH]--> .BENAR. .DAN. .BENAR.--> .BENAR.Perhatikan bahwa ekspresi di atas, jika Anda suka, dapat ditulis ulang dengan tanda kurung sebagai berikut:
(n**2 + 1 > 10) .DAN. .TIDAK. (n < 3)
- Biarkan variabel INTEGER m , n , x dan y memiliki nilai masing-masing 3, 5, 4 dan 2:.TIDAK. (m > n .DAN. x < y) .NEQV. (m <= n .DAN. x >= y)--> .TIDAK. (3 > 5 .DAN. 4 < 2) .NEQV. (3 <= 5 .DAN. 4 >= 2)--> .TIDAK. ([3 > 5] .DAN. 4 < 2) .NEQV. (3 <= 5 .DAN. 4 >= 2)--> .TIDAK. (.SALAH. .DAN. 4 < 2) .TIDAK. (3 <= 5 .DAN. 4 >= 2)--> .TIDAK. (.SALAH. .DAN. [4 < 2]) .TIDAK. (3 <= 5 .DAN. 4 >= 2)--> .TIDAK. (.SALAH. .DAN. .SALAH.) .NEQV. (3 <= 5 .DAN. 4 >= 2)--> .TIDAK. ([.SALAH. .DAN. .SALAH.]) .NEQV. (3 <= 5 .DAN. 4 >= 2)--> .TIDAK. (.SALAH.) .NEQV. (3 <= 5 .DAN. 4 >= 2)--> [.TIDAK. .SALAH.] .NEQV. (3 <= 5 .DAN. 4 >= 2)--> .BENAR. .NEQV. (3 <= 5 .DAN. 4 >= 2)--> .BENAR. .NEQV. ([3 <= 5] .DAN. 4 >= 2)--> .BENAR. .NEQV. (.BENAR. .DAN. 4 >= 2)--> .BENAR. .NEQV. (.BENAR. .DAN. [4 >= 2])--> .BENAR. .NEQV. (.BENAR. .DAN. .BENAR.)--> .BENAR. .NEQV. ([.BENAR. .DAN. .BENAR.])--> .BENAR. .NEQV. (.BENAR.)--> .BENAR. .NEQV. .BENAR.--> .SALAH.

Tugas
LOGIS :: Hasil1, Hasil2, Hasil3, Hasil4Hasil1 = .TIDAK. Sesuatu .DAN. Yang lainHasil2 = .TIDAK. a .ATAU. .TIDAK. b .DAN. cHasil3 = (n**2 + 1 > 10) .DAN. .TIDAK. (n < 3)Hasil4 = .TIDAK. (m > n .DAN. x < y) .NEQV. (m <= n .DAN. x >= y)
Komentar
Posting Komentar