15. Loogiset operaatiot.

Slides:



Advertisements
Samankaltaiset esitykset
@ Leena Lahtinen Helia Ohjelman perusrakenteet 1. PERÄKKÄISRAKENNE 2. VALINTARAKENNE 3. TOISTORAKENNE.
Advertisements

Olio-ohjelmoinnin perusteet luento 3: Muuttujista ja funktioista Sami Jantunen LTY/Tietotekniikan osasto.
JavaScript (c) Irja & Reino Aarinen, 2007
Ohjelman perusrakenteet
1 Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra.
Rakenteinen ohjelmointi
Taulukot: Array Taulukko Javassa pitää aina perustaa (new)
22. Taulukot.
Ohjelmointitaito (ict1td002, 12 op) Syksy 2008
© Jukka Harju, Jukka Juslin
13. Pakkaukset.
Näytölle tulostaminen. 7.2 Sisällys System.out.println - ja System.out.print -operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden.
Java-ohjelmointi Opas ammattimaiseen osaamiseen Luku 4 Toistolauseet
© Jukka Harju, Jukka Juslin1 Java-ohjelmointi Opas ammattimaiseen osaamiseen Luku 4 Ehto- ja toistolauseet.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Ehto- ja toistolauseet
16. Lohkot Sisällys Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat.
© Jukka Harju, Jukka Juslin1 Tuloksellinen Java-ohjelmointi Luku 4 Ehto- ja toistolauseet Tuloksellinen Java-ohjelmointi.
Toiston tekeminen Javalla  Mikä toistorakenne on?  while toistorakenne  do-while toistorakenne  for toistorakenne 1.
Ohjelmoinnin tekniikkaa Sisällys for -lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely.
TAULUKKO YKSIULOTTEINEN TAULUKKO. TAULUKKO  Taulukon tarkoitus Ohjelmassa tarvitaan paljon samantyyppisiä samaan kohdealueeseen kuuluvia muuttujia Näitä.
Ohjelman perusrakenteet
13. Hyvä ohjelmointitapa (osa 1)
1 Kertaus koetta varten oleellisista asioista Jukka Juslin.
Java-ohjelmointi Opas ammattimaiseen osaamiseen Luku 2 Ensimmäiset ohjelmat © Jukka Harju, Jukka Juslin.
7. Oliot ja viitteet.
ict1td002 - Copyright Raine Kauppinen 1 Alkuarvot ja tyyppimuunnokset (1/5)  Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int.
String-vertailusta ja Scannerin käytöstä (1/2)
11. Javan toistorakenteet
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op
4. Attribuutit 4.1. Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2.
10. Abstrakti luokka Johdanto Abstrakti luokka (abstract class) poikkeaa konkreettisesta luokasta (ei-abstrakti luokka) siten, että siitä ei.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Näppäimistöltä lukeminen Sisällys Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä. In -luokka.
22. Taulukot.
Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen
@ Leena Lahtinen Toistorakenne Ohjelmassa toistetaan tiettyjä toimenpiteitä monta kertaa peräkkäin Toisto noudattaa sille kuuluvia tarkkoja standardoituja.
@ Leena Lahtinen TIETOKONEOHJELMAN RAKENNE OHJELMALLA ON KAKSI OSAA:  MÄÄRITYSOSA TIETOJEN KUVAUKSIA VARTEN  SUORITUSOSA TIETOJEN KÄSITTELYÄ.
Visual Basic -ohjelmointi
Tuloksellinen Java-ohjelmointi Luku 2 Ensimmäiset ohjelmat
Antti-Jussi Lakanen Nuorten peliohjelmointi 2009 / Jyväskylän yliopisto.
Kontrollirakenteet laajemmin
Visual Basic -ohjelmointi
14. Poikkeukset Sisällys Johdanto poikkeuksiin. Poikkeusten käsittely: − Poikkeusten käsittely paikallisesti. − Poikkeusten heittäminen. Exception.
String-vertailusta ja Scannerin käytöstä (1/2)
1. Omat operaatiot.
Yhden bitin asettaminen Javalla
Siirtorekisterin toteutus Javalla
13. Loogiset operaatiot.
3. Luokat, oliot ja metodit Java-kielessä (Lausekielinen ohjelmointi I ja II –kursseilla opitun kertausta.)
15. Lohkot.
7. Näytölle tulostaminen
do-while -toistolause
Toisto Toistolausekkeet for, while(ehto){…} ja do {…} while(ehto)
do-while -toistolause
9. Aritmeettiset operaatiot
10. Javan ohjausrakenteet
9. Aritmeettiset operaatiot
16. Ohjelmoinnin tekniikkaa
14. Hyvä ohjelmointitapa.
11. Javan valintarakenteet
12. Javan toistorakenteet
15. Lohkot.
12. Javan toistorakenteet
7. Näytölle tulostaminen
Kontrollirakenteet laajemmin
13. Loogiset operaatiot.
Ohjelman perusrakenteet
12. Javan toistorakenteet
16. Ohjelmoinnin tekniikkaa
Esityksen transkriptio:

15. Loogiset operaatiot

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

Yleistä 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. Operaatio Lyhyesti Merkintä Negaatio (looginen ei) NOT ! Konjunktio (looginen ja) AND && ja & Disjunktio (looginen tai) OR || ja | Poissulkeva disjunktio XOR ^

AND (&&) Olkoon A ja B totuusarvoja tai totuusarvoisia lausekkeita. Lauseke A && B on tosi, vain kun A ja B ovat tosia. // 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; A B A && B false true

OR (||) Olkoon A ja B totuusarvoja tai totuusarvoisia lausekkeita. Lauseke A || B on tosi, kun lausekkeista toinen tai molemmat ovat tosia. // 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; A B A || B false true

XOR (^) Olkoon A ja B totuusarvoja tai totuusarvoisia lausekkeita. Lauseke A ^ B on tosi, kun vain toinen lausekkeista on tosi. // 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; A B A ^ B false true

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. // 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!"); A !A true false

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--;

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

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

Ohjausrakenteissa Ehtojen yhdistäminen mahdollista myös silmukoissa. Esim. 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);

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

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)) { ...

Esimerkkejä 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."); }