13. Loogiset operaatiot 13.1

Samankaltaiset tiedostot
13. Loogiset operaatiot 13.1

Java-kielen perusteita

12. Javan toistorakenteet 12.1

11. Javan valintarakenteet 11.1

12. Javan toistorakenteet 12.1

11. Javan toistorakenteet 11.1

11. Javan valintarakenteet 11.1

Java-kielen perusteet

Ehto- ja toistolauseet

Ehto- ja toistolauseet

Sisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin

Sisällys. 16. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. Aritmetiikkaa toisin merkiten

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

16. Ohjelmoinnin tekniikkaa 16.1

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

16. Ohjelmoinnin tekniikkaa 16.1

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat

Java-kielen perusteet

Loogiset konnektiivit

Muuttujat ja kontrolli. Ville Sundberg

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3

13. Hyvä ohjelmointitapa (osa 1) 13.1

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3

14. Hyvä ohjelmointitapa 14.1

7. Näytölle tulostaminen 7.1

ITKP102 Ohjelmointi 1 (6 op)

Sisällys. 15. Lohkot. Lohkot. Lohkot

Tietotyypit ja operaattorit

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Palautetta viime luennosta

Ohjelmoinnin perusteet Y Python

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

Ohjelmoinnin perusteet Y Python

5/20: Algoritmirakenteita III

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Ohjausrakenteet:

LOGIIKKA johdantoa

-Matematiikka on aksiomaattinen järjestelmä. -uusi tieto voidaan perustella edellisten tietojen avulla, tätä kutsutaan todistamiseksi

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen.

MS-A0402 Diskreetin matematiikan perusteet

Ohjelmoinnin peruskurssi Y1

Sisällys. 16. Lohkot. Lohkot. Lohkot

Lauseet. Ehdollinen lause. Tämän osan sisältö. Ehdollinen lause. Esimerkkejä. Yksinkertainen ehto. Lohkosulut ja sisennys. Ehdollinen lause if

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin

Ohjelmoinnin peruskurssi Y1

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Python-ohjelmointi Harjoitus 2

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 8. syyskuuta 2016

Java kahdessa tunnissa. Jyry Suvilehto

1. ohjelman selitystä Muutamien ohjelman yksityiskohtien läpikäyntiä

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Sisältö. 2. Taulukot. Yleistä. Yleistä

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Nimitys Symboli Merkitys Negaatio ei Konjuktio ja Disjunktio tai Implikaatio jos..., niin... Ekvivalenssi... jos ja vain jos...

812341A Olio-ohjelmointi, Olio-ohjelmoinnin peruskäsitteet ja Java-kieli

L models. Vaatimusmäärittely. Ryhmä Rajoitteiset

Tietorakenteet (syksy 2013)

Sisältö. 22. Taulukot. Yleistä. Yleistä

Algoritmit 1. Demot Timo Männikkö

Pikapaketti logiikkaan

Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency, Date, Object, String, Variant (oletus)

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Java-kielen perusteita

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

1. Kun käyttäjä antaa nollan, niin ei tulosteta enää tuloa 2. Hyväksy käyttäjältä luku vain joltain tietyltä väliltä (esim tai )

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva

6. Muuttujat ja Java 6.1

ELEC-A4010 Sähköpaja Arduinon ohjelmointi. Jukka Helle

Luokan sisällä on lista

17. Javan omat luokat 17.1

Luento 5. Timo Savola. 28. huhtikuuta 2006

Testaa taitosi 1: Lauseen totuusarvo

Tyyppejä ja vähän muutakin. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Ohjelmointiharjoituksia Arduino-ympäristössä

1. Logiikan ja joukko-opin alkeet

Ratkaisu: Käytetään induktiota propositiolauseen A rakenteen suhteen. Alkuaskel. A = p i jollain i N. Koska v(p i ) = 1 kaikilla i N, saadaan

1. Omat operaatiot 1.1

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

ITKP102 Ohjelmointi 1, syksy 2007

Ohjelmointi 2 / 2010 Välikoe / 26.3

1 Logiikkaa. 1.1 Logiikan symbolit


ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Seuraavassa on esimerkki for-, while- ja do-while -lauseesta:

20. Javan omat luokat 20.1

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

ITKP102 Ohjelmointi 1 (6 op)

Digitaalilaitteen signaalit

Olio-ohjelmointi Javalla

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva

6. Muuttujat ja Java 6.1

Ohjelmoinnin perusteet Y Python

Transkriptio:

13. Loogiset operaatiot 13.1

Sisällys Loogiset operaatiot AND, OR, XOR ja NOT. Operaatioiden ehdollisuus. Bittioperaatiot. Loogiset operaatiot ohjausrakenteissa. Loogiset operaatiot ja laskentajärjestys. 13.2

Yleistä Operaatio Lyhyesti Merkintä Negaatio (looginen ei) NOT! Konjunktio (looginen ja) AND && ja & Disjunktio (looginen tai) OR ja Poissulkeva disjunktio XOR ^ Operandit totuusarvoja (true, false) tai ehtolausekkeita. Operaatioiden tulos myös boolean-tyyppiä. Operaatiot määritellään totuustauluina, joissa annetaan operandien arvojen yhdistelmät ja arvoyhdistelmän tulos. 13.3

AND (&&) Olkoon A ja B totuusarvoja tai totuusarvoisia lausekkeita. Lauseke A && B on tosi, vain kun A ja B ovat tosia. A B A && B false false false false true false true false false // Muuttujan y arvo epätosi. boolean x = true; boolean y = x && false; // Syödään karkkia vain, // jos on oikea päivä ja hampaat // käyttökelpoisia. if (karkkipaiva && reikia < 2) nameja = nameja - 1; true true true 13.4

OR ( ) Olkoon A ja B totuusarvoja tai totuusarvoisia lausekkeita. Lauseke A B on tosi, kun lausekkeista toinen tai molemmat ovat tosia. A B A B false false false false true true true false true // Muuttujan y arvo tosi. boolean x = true; boolean y = x false; // Syödään karkkia lähes aina: // karkkipäivänä ja/tai kun // on yksi reikä hampaissa. if (karkkipaiva reikia < 2) nameja = nameja - 1; true true true 13.5

XOR (^) Olkoon A ja B totuusarvoja tai totuusarvoisia lausekkeita. Lauseke A ^ B on tosi, kun vain toinen lausekkeista on tosi. A B A ^ B false false false false true true true false true true true false // Muuttujan y arvo tosi. boolean x = true; boolean y = x ^ false; // Syödään karkkia, // kun ei ole karkkipäivä // ja hampaissa on nolla tai yksi // reikää tai kun on karkkipäivä // ja hampaissa on useita reikiä. if (karkkipaiva ^ reikia < 2) nameja = nameja - 1; 13.6

NOT (!) Olkoon A totuusarvo tai totuusarvoinen lauseke. Lauseke!A on tosi silloin, kun lauseke A on epätosi. Lauseke!A on epätosi silloin, kun lauseke A on tosi. A!A true false false true // Muuttujan y arvo epätosi. boolean x = true; boolean y =!x; // Jos hampaissa on reikiä neljän // tai useamman kappaleen verran, // niin "pääsee" juurihoitoon. // Huom! Oletuslaskujärjestystä // muutettu suluilla. if (!(reikia < 4)) System.out.println("Juurihoito!"); 13.7

Operaatioiden ehdollisuus Edellä määritellyt loogiset AND- (&&) ja OR- ( ) operaatiot ovat ehdollisia: jos totuusarvo saadaan selville ensimmäisestä operandista, niin toista operadia ei arvioida. // Karkkipäivänä ei lisäreikiä. // Huom! Huonoa koodia. if (karkkipaiva ++reikia < 2) nameja--; Ehdottomat AND- (&) ja OR- ( ) -operaatiot laskevat molemmat lausekkeet. (Toimivat muuten kuin ehdolliset operaatiot.) Näin voidaan varmistaa, että ehtolausekkeessa annettu sivuvaikutus toteutuu. // Karkkipäivänäkin lisäreikiä. // Huom! Huonoa koodia. if (karkkipaiva ++reikia < 2) nameja--; 13.8

Bittioperaatiot (~, &, ja ^) AND, OR, XOR ja NOT voidaan kohdistaa totuus-arvojen asemasta bitteihin. Operandit ja operaation tulos kokonaislukuja. Esimerkki: byte k = 16; byte l = 17; 16 10 = 00010000 2 17 10 = 00010001 2 ~00010000 = 11101111 = -17 & 00010000 & 00010001 & 00010000 = 16 & 00010000 00010001 & 00010001 = 17 & 00010000 ^ 00010001 & 00000001 = 1 Ei pidä käyttää, jollei tiedä, mitä tekee. Ei tarvita tällä kurssilla. 13.9

Ohjausrakenteissa Loogisilla operaatioilla yhdistetyistä lausekkeista voidaan muodostaa monimutkaisempia ehtoja, jotka vastaavat sisäkkäisiä valintarakenteita. Esimerkki: if (x > 10) if (x < 20) { if ((10 < x) && (x < 20)) { Sulut parantavat loogisen lausekkeen luettavuutta. 13.10

Ohjausrakenteissa Ehtojen yhdistäminen mahdollista myös silmukoissa. Esimerkiksi: while ((i > 0) (valinta == KYLLA)) {... Break-lause voidaan korvata lippumuuttujan ja loogisen operaation avulla. Esimerkiksi: do { do { if (ehto1) break; } } while (!ehto1 && ehto2); while (ehto2); 13.11

Laskentajärjestys 1) NOT (!). 2) Aritmeettiset operaatiot. 3) Vertailut: ensin (<, <=, >, >=) sitten (==,!=). 4) Loogiset operaatiot järjestyksessä AND (&) XOR (^), OR ( ), AND (&&) ja OR ( ). 5) Lopuksi mahdollinen sijoitus. Vasemmalta oikealle. Laskentajärjestystä voi muuttaa suluilla. Sulkuja on myös joskus syytä käyttää selvyyden vuoksi. Huomaa, että lista ei sisällä kaikkia Java-kielen operaatioita. 13.12

Esimerkkejä boolean a = 1!= 1; // false boolean b = true false ^ true &&!false; // true int i = 1; int j = 2; boolean c = true ^ i == j &&!false 2 * i!= j; // true int k = 4; int l = 4; int m = 8; if (2 * k < m k == l && k!= m) {... // true // Edellinen lauseke selkeämpi näin. if ((2 * k < m) (k == l) && (k!= m)) {... 13.13

Esimerkkejä // Päätellään onko vuosi karkausvuosi. public class Karkausvuosi { public static void main (String[] args) { int vuosi = 1900; // Karkausvuosi, jos vuosi on neljällä jaollinen ja ei ole vuosisata tai // on 400:lla jaollinen vuosisata. Sulut mukana selvyyden vuoksi. boolean karkausvuosi = ((vuosi % 4 == 0) && (vuosi % 100!= 0)) (vuosi % 400 == 0); if (karkausvuosi) System.out.println(vuosi + " on karkausvuosi."); else System.out.println(vuosi + " ei ole karkausvuosi."); } } 13.14