Selittäkääs vähän tarkemmin tätä ehtolauseen evaluointia!
Ehtolauseen evaluointi?
Mitä ihmettä
10918
0Äänestä
Muut lukivat myös
Luetuimmat keskustelut
- Tekisin SINUT ONNELLISEKSI NAINENMutta EHKÄ onni EI OLE mitä HALUAT.
- Mitähän sitä...Tsuumailin vähän muuallekin välillä ja törmäsin ajatuksiin, että miehen tulee suojella naista kaikelta pahalta. Mutta yhtään ei oltu eritelty mitä se kaikki paha on, jolta suojella. Jotenpas kysynkin kyselyikäni kyselyn…
- Hävettävä käytösHävettääkö sinua jokin?
- Kuvittelin että oltiin läheisempiäYstäviä, tavallaan. Mutta ei sitten oltukaan sun näkökulmasta. Pettymys, mutta totun kyllä asiaan vähitellen.
- Myönnä poisLoukkaannuit mulle silloin aikoinaan? Ne viestit, väärinymmärrykset, kaikki. Miehelle
- Omapahan on vikasi jos jää loppuelämän romanssi välistä kun haluat olla itsepäinen jääräJa tuomita, jotain mitä et kykene ymmärtämään, antamatta edes mahdollisuutta, vaikka olen tehnyt parhaani elämäni edistämiseksi ja oikeasti yrittänyt!! Itken tyynyyn... tuskin edes yhtä vuotta ilman itsetuhoisia ajatuks…
- Kuka murtautu illalla kipparilleJotaki hampuusia kannettu ambulanssiin ja kipparin iso ikkuna palasina..Mitä tapahtunu??
- Susilauma KorkatissaKahdeksan suden lauma käynyt repimässä Hankosen Antin lampaat Korkatissa torstain vastaisena yönä. Mahtavaa luonnon Monimuotoisuutta. ViherVasemmisto ja Greenpeace kiittää.
- Tule sunnuntaina juna-asemalleKello kymmenen aikaan, tavataan siellä. Ainoa ja viimeinen tilaisuus tavata. Jos et tule niin et enää koskaan näe minua. En halua kirjoitella mitään, en halua kuulla selityksiä. Haluan tavata.
- Onko se sinun mielestäsiminun syyni, että tilanne on se mikä se on? En tiedä. Toisaalta, en pysty uskomaan että millään minun tekemisilläni olisi ollut juurikaan merkitystä.
- Eiköhän tämä ole jo tässäParivuotta hukkaan heitetty.
- Mitä enää haluat??Tätä on kestänyt liian kauan!
- Perjantai jälleen bläähViikonloppuna sataa, mitä meinaatte tehdä? Pian on syyslomakin, suunnitelmia tähän säähän? Mulla olis pihahommaa vielä, mutta en helvetissä mene sateeseen kastumaan. Kasvoi vähän kyr*äkin otsaan kelin takia. Eikö nyt vo…
- kunnioitan tahtoasiEn tule sinua enää lähestymään.
- Haluan sanoa sulle miesEttä pysytään molemmat pois täältä palstalta. Maltetaan olla pois, koska olosi on silloin parempi. Minä en kirjoittele enää, joten voit unohtaa tämän. Ottaisitko minuun yhteyttä muuta kautta, jos haluat. Olisin onnessan…
- Onko tarkoitus ottaa ihmisten eläkevarat valtion käyttöön?Vai mistä tässä eläkeiän nostossa hamaan tappiin on kyse? Eihän moni sitten saisi käytännössä eläkettä koskaan vaikka eläkemaksuja koko elämänsä olisi maksellutkin.
- Ei tuu mitäänNyt jo taivaskin itkee tätä tilannetta 💔😢
- Perjantain lukupaketti nyt kirjastossaMuhkea ja hitsausliekkiäkin kuumempi jallulehti nyt luettavissa kirjastossa! Lämpimästi tervetuloa!
- Oot melko .ufo :) ,,,,,,,,,,,,,,,,,,,
- Alette alas tulla sieltäMissä oletkin, täällä hidastuu koko palstan väki ilman sinua. Tarinaa ei narinaa. 🍃😆 https://youtu.be/4W4DIgbBbsk?is=Vdbj3wnuTGMchXVC
Vastaukset 10
Vanhimmat
Eli en tiedä mitä tarkalleen haet tuolla kysymyksellä, mutta luulen että kysymys on boolean algeprasta, eli en osaa nyt hahmottaa miten tämä juuri Delphiin liittyy, eli jos jotain pientä lisätietoo sais siitä mitä tarkaan ottaen haet.
Yleisesti ehtolauseen evaluionti tarkoittaa sitä että ehtolausetta tarkasttellaan matematiikan sääntöjen mukaan, kunnes lopputulos on varma, eri operandien kohdalla eri tavalla, mutta lopputulos joka tapauksessa on "Tosi" tai "epätosi",
yleensä evaluoitava lause kirjoitetaan siten että ensimmäinen ehto on se ehto joka saattaa jo "toivottavasti" riittää lopputuloksen tietämiseen, jotta ei tuhlata prosessori aikaa, jolloin nopeutetaan ohjelman suoritusta.
Delphissä tämä lauseke voidaan esittää eri tavoin, mutta lopputulos on aina tosi tai epätosi.
Eli kerron kyllä tarkemmin mutta vähän tarkennusta kysymykseen...
Mitä hyötyä on siitä että evaluoidaan kaikki?
Mikäli evaluoinnin *ainoa* tarkoitus on selvittää boolean -lausekkeen arvo, niin tuo "short-circuit evaluointi" on nopeampi koska lopettaa heti, kun lausekkeen arvo on selvillä ja myös joustavampi koska sen avulla voi esim:
var
P : PInteger;
begin
// koodia ...
if assigned(P) AND (P^ >= 5) then ShowMessage ('kokonaisluku P:n osoittamassa muistiosoitteessa on arvoltaan vähintään 5.');
end;
Jos evaluoitaisiin kaikki, tuo aiheuttaisi virhetilanteen jos P = NIL.
Tuota "evaluoidaan kaikki" käytetään yleensä vain silloin, kun siihen on erityinen syy, joita on 2 mahdollista, ja jälkimmäinen on erittäin harvinainen:
1. Kun boolean -lausekkeessa on sellainen funktiokutsu, että ko. funktiolla on sivuvaikutus, ja ko. sivuvaikutuksen halutaan tapahtuvan aina
2. Kun jostain erityisestä syystä halutaan, että evaluointi kestää aina vakion suoritusajan riippumatta siitä, että mahdollisesti jo 1. booleanarvon evaluoinnin jälkeen lopputulos jo tiedettäisiin.
Delphissä:
1. Paina F1
2. paina "Ohjeen aiheet"
3. kirjoita "complete Boolean evaluation" (1. sanan alkuosan "compl" kirjoittaminen riittää; tuplaklikkaa sitten hiirellä "complete Boolean evaluation")
4. Lue Delphin oma opaste aiheesta.
eli siis
{$B-}
tilassa Delphi takaa, että boolean -lauseke evaluoidaan vasemmalta oikealle, ja evaluointi lopetetaan heti, kun lopputulos on selvä.
Eli esimerkiksi:
var
St1 : String;
k : Integer;
begin
if (k = 1, muussa tapauksessa saadaan poikkeus !
huom2: JOS boolean -lausekkeessa on käytetty variant -tyyppiä, niin lauseke evaluoidaan aina kokonaan, eikä em . päde !
Tämän voi kuitenkin näppärästi kiertää sisäkkäisillä aliohjelmilla:
var
St1 : String;
v : Variant;
k : Integer;
function VariantOK:BOOLEAN;
begin
Result := NOT ( VarIsEmpty(v) or VarIsNull(v) );
end;
begin
if VariantOK AND (k
Pascal:ssa ohjelmoija valitsee (useimmista kielistä poiketen) kumpaa tapaa boolean-lauseke evaluoidaan.
Tapa valitaan kääntäjän ohjeella {$BOOLEVAL ON} tai {$B }.
Eli valinta voi olla tämäntapainen
{$BOOLEVAL ON}
...suoritettava boolean ehto ...
{$BOOLEVAL OFF}
Kääntäjän ohje {$BOOLEVAL ON} tai {$B } kertoo että koko lause evaluoidaan.
Vastaavasti kääntäjän ohje {$BOOLEVAL OFF} tai {$B-} kertoo että evaluoidaan vain
niin kauan kuin tarvitaan tietoa lopputuloksen saamiseksi.
Pyydettiin selittämään ehtolauseen evaluointi, vastattiin totuusarvoisen lausekkeen evaluoinnilla. Saisiko olla myös porkkanoita?
IF THEN
tai
:=
Oman koulutuksen/tiedon perusteella ehtolause on vielä tänäpäivänä sama asia kun totuuslauseke, jos tuon meinaat kumota niin rikas persoona olet, mielestäni totuuslauseen vastaus on aina tosi tai epätosi eli ehdollistettuna joko tai ei...
ELI haluan todella kuulla näkemyksesi totuus/- ja ehtolauseen erosta?!
http://www.tol.oulu.fi/kurssit/okp/Luennot/OKP_Imperatiivinen_Lauseet.html
Millaisia esimerkkejä esim. opetuksessa käytetään eri evaluointitavoissa?