Логічний тип даних

Логічний тип даних

На цій сторінці показано неперевірені зміниНеперевірена версія (що робити?)

Question book-new.svg

Ця стаття не містить посилань на джерела. Ви можете допомогти поліпшити цю статтю, додавши посилання на надійні джерела. Матеріал без джерел може бути підданий сумніву та вилучений. (липень 2013)

Логічний (булевий) тип даних — примітивний тип даних в інформатиці, що може приймати два можливих значення, що іноді називаються істиною і хибою (також так й ні). Присутній в переважній більшості мов програмування як самостійна сутність або реалізований через числовий тип. Зазвичай за хибне приймають нульове значення, за істину одиницю чи будь-яке інше відмінне від нуля число.

Зміст

  [сховати] 

1 Реалізація

2 Доступні операції

3 Застосування

4 Використання в С++

5 Див. також

Реалізація[ред. • ред. код]

Булів тип даних може бути реалізований з допомогою тільки одного біта, але зазвичай використовується мінімально адресовуваний елемент пам'яті (байт) або машинне слово, як ефективна одиниця роботи з регістрами та оперативною пам'яттю.

Доступні операції[ред. • ред. код]

До цього типу даних застосовні наступні операції:

І (логічне множення) (AND, &, *),

АБО (логічне додавання) (OR, |, +),

виключальне АБО (множення з переносом) (xor, NEQV, ^),

еквівалентність (рівняння) (EQV, =, ==)

інверсія (NOT, ~, !)

порівняння (>, <, <=, >=)

Також можуть використовуватися і інші операції алгебри логіки. Більшість мов програмування легко дозволяють використовувати булів тип і в арифметичних операціях, приводячи його до чисельного типу згідно з прийнятим в мові правилам приведення типів. C# є прикладом мови, що не виконує автоматичного приведення.

Застосування[ред. • ред. код]

Змінні логічних типів використовуються для виразу результатів логічних операцій.

Всі операції порівняння двох величин, операції входження елемента в множину і перевірка на перетинання множин повертають як результат булівський тип.

Використання в С++[ред. • ред. код]

 bool b1 = a == b;

 

 bool is_open (File*);

 bool greater (int a, int b) { return a>b; }


 bool b2 = 7;

 int i = true;

 

 bool a = true;

 bool b = true;

 bool x = a + b;

 bool y = a | b;




 Const a=2; b=10;
 var x:boolean;
begin
  x:=a < b;
  Writeln(x);
end. 

a=2; b=10. Тому a < b вірна нерівність. Отже, x має значення TRUE, яке і виводиться на екран
TRUE
Const a=TRUE;    b=FALSE;
Begin
 writeln(b > a);
end. 
a=TRUE, тобто 1; b=FALSE, тобто 0. Тому b>a - невірна нерівність, тобто такий логічний вираз має значення FALSEFALSE
 Const X=-2; y=2;
 Var Z:Boolean;
Begin
Z:=sqr(x)-sqr(y)=0; writeln(z);
end. 
X=-2; y=2. Тому sqr(x)-sqr(y)=0 - вірна рівність, тому Z має значення TRUETRUE
 Const F=7; D=5;
 Var Z:Boolean;
Begin
 Z:=1/F > 1/D;
 writeln(z);
end. 
F=7; D=5, F > D. Тому 1/F<1/D. Звідки 1/F > 1/D -невірно, тому Z має значення FALSEFALSE




program pro78;

uses crt;
var a,b,c,d,n,m,t1,t2,t3:byte;
BEGIN
writeln('poizd prihov');read(a,d);
writeln('poizd uihov ');read(c,d);
t1:=a*60+b;
t2:=c*60+b;
t3:=n*60+m;
if(t3>=t1)and(t3<=t2)
then writeln('yes')
else writeln('no');
END.


program Kilkist;

uses crt;
Var a,b,c,p:real;
BEGIN
read(a,b,c);p:=1;
if(a>=-10)and(a<=10) then p:=p*a;
if(b>=-10)and(b<=10) then p:=p*b;
if(c>=-10)and(c<=10) then p:=p*c;
writeln(p:1:1);
END.


program liftt;

uses crt;
const
hl=8;
dv=10;
d=87;
g=75;
max=500;
 Var  x,a,b,c,f,p:integer;
BEGIN
writeln('vedit cilcist hl');
read(x );
x:=x*hl;
if x<= max then  writeln  ('yes') else writeln ('no');
writeln('vedit cilcist dv');
read(a);
a:=a*dv;
if a<=max then writeln ('yes') else writeln('no');
writeln('veditcilcist d ') ;
read(b);
b:=b*d;
if b<=max then writeln('yes') else writeln('no');
writeln('vedit cilcist g') ;
read(c);
c:=c*g;

if  c<=max then writeln ('yes') else writeln('no');


END.


program kilkist2;

uses crt;
Var a,b,c:real;k:integer;
BEGIN
read(a,b,c); k:=0;
if a<0 then k:=k+1;
if b<0 then k:=k+1;
if c<0 then k:=k+1;
writeln(k);
END.

program kilkist3;

uses crt;
Var a,b,c,s:integer;
BEGIN
read (a,b,c); s:=0;
if a mod 2=0 then s:=s+a;
if b mod 2=0 then s:=s+b;
if c mod 2=0 then s:=s+c;
writeln(S);
END.





Немає коментарів:

Дописати коментар