Tudd Intuíció, előadás, logikai típusú, rendszerelemek

Abstract: Az előadás átfogó adatok a logikai adat. Meglévő típusú logikai műveletek rájuk, valamint a komponensek TCheckBox, TCheckGroup, TRadioButton, TRadioBox. Mintaprogramok bizonyítani valamennyi dolgozik a logikai típusok.

A cél az előadás

Tanulás módon dolgozni a logikai adattípusok. Tanulás alapvető összetevők dolgozni az ilyen típusú.

A logikai adattípus

A korábbi előadások már találkozott ezzel a típusú - bizonyos tulajdonságait a komponensek esetén csak a két érték egyikét: vagy True (Igazság) vagy False (hamis). Ez logikus adattípust. Pascal a Boolean. amely elfoglalja egy bájtot. A Lazarus, sőt, vannak olyan típusok ByteBool (szintén 1 bájt), WordBool (2 bájt) és LongBool (4 byte). Minden ilyen típusú lehet, hogy csak két értéket vehet fel: igaz vagy hamis. A gyakorlatban azonban ez a sokféleség nem alkalmazzák, a programozók igazán sikerült csak egy szabványos logikai típusú. Akkor hozzon létre egy változót az ilyen típusú, és kijelölheti azt igaz vagy hamis. Ezen kívül, gyakran vannak olyan kifejezések, amelyek szintén adott akár eredményeként az igazság. vagy hamis. ők is tekinthető logikus. Például ha egy nevet logikai változó kifejezése 3> 2. A változó lesz igaz. mivel a három valójában több, mint kettő.

Szóval, mit lehet tenni a logikai adatokat, továbbá a bízzák azokat az értékeket igaz vagy hamis. Ők lehet hasonlítani egymással összehasonlító operátort használ:

Nézzük meg az intézkedések ezen műveletek részletesebben.

A művelet nem (NOT), ellentétben más logikai műveleteket, a munka csak egy operandust. Ez - üzemeltetés, Changeling: ha az operandus tartalmaz Igaz. A visszaadott eredmény hamis lesz. és fordítva. Ez a művelet nagyon gyakran használják annak érdekében, hogy módosítsa az értéket a logikai változó (vagy tulajdonságok) az ellenkező, azaz például,

A művelet AND (ÉS) True csak akkor, ha mindkét operandus összehasonlított tartalmaznak Igaz. Ha az első operandus tartalmaz hamis. további vizsgálat nem kerül végrehajtásra (nincs értelme), és és FALSE. Ha az első operandus tartalmaz Igaz. ÉS ez nem teszteli a második operandus - ha nem felel meg a valóságnak. akkor a visszatérési érték True. máskülönben hamis.

Művelet vagy (OR) jár el hasonló módon, de cserébe Igaz, ha legalább az egyik operandus tartalmaz Igaz. VAGY ellenőrzi az első operandus. Ha ez igaz. további vizsgálat nem kerül végrehajtásra, és az OR True. Ellenkező esetben ellenőrizze a második operandus vagy - ha a True. és akkor True. máskülönben hamis.

Működés XOR (kizáró VAGY) ellenőrzi, mindkét operandus és True csak akkor, ha az egyik operandus igaz. és a többi szükségszerűen hamis. Azonban a XOR gyakorlatban általában nem használják, mert mindig könnyebb elvégezni teszt A <> B. hogy pontosan ugyanazokat a eredményt.

Így, példák a logikai adatok (a Lazarus nincs rájuk szükség):

IF ellenőrzési struktúra

Egy logikai adattípus lenne igazán hasznos, ha nem tudjuk alkalmazni a különböző cselekvések függően a vizsgálati eredmények - ha a változó az igazság. akkor végre ugyanezt a kódot, vagy végre más kódot. Ez biztosítja a lehetőséget, ha a vezetés szerkezetét.

A legegyszerűbb szintaxisa ez a szerkezet:

Angol IF fordítja IF. majd - AKKOR. Ez az egész elég világos: ha néhány feltételt (logikai vagy logikai bab ingatlan) True. Ezután a megadott műveletet. Most már tanulmányozza a példát a gyakorlatban. Töltse Lazarus egy új projekt. Az ablak közepén válassza TButton gombot. Mentse el a projekt a 07-01 nevű mappát MyBool; ne felejtsük el, a fő formája az úgynevezett fMain. és a tárolt modul - Főbb. Ezután létrehoz egy eseményt a gomb megnyomásával, aki elkészítette a következő módon:

Itt minden egyszerű: állapítsa Egy logikai változó b. majd hozzárendeli a True (Igazság). on line

ellenőrizhetjük, hogy a B igaz (azaz, ha b igaz), akkor az üzenet nyomtatásához „igazság.” Mentés és működteti a projekt. A gomb megnyomása hatására a kijelzőn az üzenet. Akkor például rendelni egy b értéke False - ebben az esetben, a gomb megnyomása nem okoz semmilyen üzenetet.

By the way, ebben az esetben, mivel a feltétel már megadott egy változó nevét b. Végül is, ez már tartalmazza Igaz. Ahhoz, hogy a vonal

Ha kiterjesztjük a feltétel a szokásos műveletek, mind operandusok kell zárójelek közé. Kivételt képez ez alól a NOT művelet. amely csak akkor működik, az egyik operandus. Változtassuk meg a kódot:

Itt ellenőrizzük két feltételnek. És ha az első (a = b) visszatér Hamis minket. majd a második b True. És mivel mi használjuk a művelet vagy. elegendő, hogy legalább az egyik operandus volt igaz. Tehát az üzenet kerül végrehajtásra. Ha a második operandus, összehasonlítottuk a b még valamit, akkor is meg kellett volna zárójelbe. Például,

Ebben a példában az „igazság” üzenet jelenik meg, mint a második operandus b valóban több, mint egy. Ha elfelejtette a zárójelben a fordító nem mutatni, hogy egy hiba, és a program elindul. Azonban az eredmény érvénytelen lehet. Például, ha eltávolítjuk a zárójelben az első példában:

Az üzenet: „igazság” nem teljesül. Végtére is, a HA az utasítás egy vizsgálat, akkor ellenőrizni fogja csak a = b. Része a feltételek a műtőbe kihagyja, mert nem kötött operandusok zárójelben. Tehát, ha a feltételek érvényesek művelet ÉS. OR vagy XOR. ne felejtsük el, hogy adja meg az operandusok zárójelben. A zárójelek nem lehet használni, ha a két operandus megadása egy feltétel változó vagy tulajdonság, például a kód:

megjeleníti az üzenet „igazság”, mint a b tartalmazza Igaz.

Kezelése IF állítás nem a semmiért hívják a szerkezet, a szintaxis állhat több részből áll:

Angol más fordította másképp. Itt, ha valami feltétel értéke igaz. ez fog történni action1. Egyébként ez fog történni action2. Felhívjuk figyelmét, hogy mielőtt ELSE pontosvessző nem tesz! Változtassuk meg a kódot:

A gomb megnyomása hatására az üzenet „igazság”, de ha majd rögzítse a kódot, és a változó helyett b tegye True False. Az üzenet: „hazugság” - nézd meg magad.

Azonban az IF design is nehezebb. Mi van, ha kell néznünk nem egy, hanem két állapotot? Vagy több? A teljes szintaxisát a szerkezete a következő:

Nézzük vizsgálja. Ebben a konstrukcióban, ha CONDITION1 True. ez fog történni Destvie1. és ez a konstrukció felett. Ha False. ellenőrzések folytatódni fog. Ha a következő CONDITION2 True. ez fog történni Destvie2. és így tovább, ezek az ellenőrzések bármilyen szám lehet. Ha minden feltétel teszt visszatér hamis. ez fog történni DeystvieINAChE. Változtassuk meg a kódot:

Mit gondol, mi az üzenet jön ki ebben az esetben? És hány fog üzeneteket? Ha azt mondta, hogy fog megjelenni csak egy üzenetet „Action №2”, akkor megtanulták a IF design. Egyébként, azt tanácsolom, hogy menjen vissza, és gondosan áttekintjük a fenti.

Köszönöm a csodálatos természetesen!

Az önálló munka №2 összeállításához MyCript.pas modul (OS: Windows 7 x64, Lazarus 1.4 Win64) kiadott egy hiba assembly kódot

mycript.pas (54,5) Hiba: Asm: [tolja reg32] érvénytelen kombinációját műveleti kód és operandusok
mycript.pas (95,5) Hiba: Asm: [pop reg32] érvénytelen kombinációját műveleti kód és operandusok

Megértem, hogy a pálya kész a 32 bites operációs rendszer, de mi a helyzet abban az esetben a 64 bites rendszereket?

A rakodók FileCreate menüpontok és FileOpen, valamint a záró formájában felvezető OnClose - e három eljárások ugyanazt a kódot tartalmazza

nekik, mielőtt az új szöveg>
ha Memo1.Modified ezután kezdődik
// ha a felhasználó vállalja, hogy mentse a változásokat:
ha MessageDlg ( „Mentés másként”
„A jelenlegi fájl megváltozott. Változások mentése?
mtConfirmation, [mbYes, mbNo, mbIgnore], 0) = mrYes majd
FileSaveClick (feladó);
végén; // ha

Hadd kérdezzem meg: nem lenne jobb, ha ezt a kódot egy külön eljárás, például - formájában egy eseménykezelő OnCloseQuery? Amennyire vissza tudok emlékezni Delphi tapasztalat, hívja ezt az eljárást önmagában nem vezethet bezárása formájában. Ez azt jelenti, hogy lehet használni eljárások Memo1 tisztítás és olvasni a fájlt. Vagy Lazarus nem tudod?

Kapcsolódó cikkek