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 valintarakenteet 11.1

Java-kielen perusteet

11. Javan toistorakenteet 11.1

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

Ehto- ja toistolauseet

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

Ehto- ja toistolauseet

Loogiset konnektiivit

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

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

16. Ohjelmoinnin tekniikkaa 16.1

7. Näytölle tulostaminen 7.1

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

16. Ohjelmoinnin tekniikkaa 16.1

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

13. Hyvä ohjelmointitapa (osa 1) 13.1

Java-kielen perusteet

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

14. Hyvä ohjelmointitapa 14.1

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

ITKP102 Ohjelmointi 1 (6 op)

Muuttujat ja kontrolli. Ville Sundberg

5/20: Algoritmirakenteita III

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

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

Tietotyypit ja operaattorit

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

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

Palautetta viime luennosta

Sisällys. 15. Lohkot. Lohkot. Lohkot

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

Python-ohjelmointi Harjoitus 2

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

LOGIIKKA johdantoa

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

MS-A0402 Diskreetin matematiikan perusteet

Tietorakenteet (syksy 2013)

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

Ohjelmoinnin peruskurssi Y1

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

Ohjelmoinnin peruskurssi Y1

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

Java kahdessa tunnissa. Jyry Suvilehto

Metodien tekeminen Javalla

1. Omat operaatiot 1.1

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

Sisällys. 16. Lohkot. Lohkot. Lohkot

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

Ohjelmoinnin peruskurssi Y1

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin

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

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

17. Javan omat luokat 17.1

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Java-kielen perusteita

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

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

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

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

Pikapaketti logiikkaan

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

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

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

20. Javan omat luokat 20.1

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

4. Luokan testaus ja käyttö olion kautta 4.1

Pong-peli, vaihe Koordinaatistosta. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana

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

Ohjelmointi 2 / 2010 Välikoe / 26.3

Olio-ohjelmointi Javalla


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

Olio-ohjelmointi Syntaksikokoelma

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

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op)

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 )

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Ohjelmoinnin perusteet Y Python

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

Ohjelmointiharjoituksia Arduino-ympäristössä

ITKP102 Ohjelmointi 1 (6 op)

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

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

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

Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen:

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

6. Muuttujat ja Java 6.1

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

Tutoriaaliläsnäoloista

1 Logiikkaa. 1.1 Logiikan symbolit

Testaa taitosi 1: Lauseen totuusarvo

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 true true true // 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; 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 true true 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; 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; // Syödään karkkia, // jos on väärä päivä tai hampaat // ovat rikki. Oletuslaskujärjestystä // on muutettu suluilla. if (!(karkkipaiva && reikia < 2)) { nameja = nameja - 1; 13.7

Operaatioiden ehdollisuus Edellä määritellyt loogiset AND- (&&) ja OR- ( ) operaatiot ovat ehdollisia: jos totuusarvo saadaan selville ensimmäisestä operandista, niin toista operandia 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. // Sisäkkäiset if-lauseet. 10 < x < 20, jos ehdot totta. if (x > 10) { if (x < 20) { // Yhdistettyä lauseketta käyttämällä tarvitaan yksi if-lause. if (10 < x && x < 20) { 13.10

Ohjausrakenteissa Monimutkaisia lausekkeita tulee välttää ja käytettäessä kommentoida. Lausekkeita voidaan selventää ylimääräisiä sulkeilla käyttämällä. // Vertailujen ympärille lisätyt sulkeet eivät muuta laskujärjestystä, // mutta voivat helpottaa lausekkeen lukemista. if ((10 < x) && (x < 20)) { Älä käytä ylimääräisiä sulkeita tarpeettomasi muissa yhteyksissä. Ne vain hämäävät ohjelmasi lukijaa. // Tässä suljeparista on lähinnä haittaa lukijalle. Älä tee näin! int i = (i + 1); 13.11

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

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.13

Esimerkkejä Alla olevia lausekkeet on ajateltu vain laskujärjestyksen havainnollistamiseen ja ovat liian monimutkaisia esimerkiksi if-lauseessa käytettäviksi todellisuudessa. 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 13.14

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.15