Лабораторная работа Паскаль. ПАСКАЛЬ Лабораторная работа. Лабораторная работа 1 1 логические операции not, and, or в условии
Скачать 26.37 Kb.
|
Лабораторная работа №1 1 ЛОГИЧЕСКИЕ ОПЕРАЦИИ NOT, AND, OR В УСЛОВИИ Задание. Запишите в тетрадь и вычислите значения выражений при a = 10, b = 20, c = true, d = false: а) (a > 5) and (b > 5) and (a < 20) and (b < 30); б) not (a < 15) or not (b < 30); в) c or d and (b = 20). Решение. а) (10 > 5) and (20> 5) and (10< 20) and (20< 30) = = true and true and true and true = true; б) not (10< 15) or not (20< 30) = not(true) or not(true) = false or false = false; в) c or d and (20=20) = true or false and true = true or false = true. Упражнения для самостоятельной работы Вычислите значения выражения: а) sqr(x) + sqr(y) <= 4 при x = 0.3, y = -1.6; Решение: (0.3)2 + (-1.6)2 = 0.09 + 2.56 = 2.65 <=4 – True. б) k mod 7 = k div5 – 1 при k = 15; Решение: 15 mod 7 = 1; 15 div 5 – 1 = 3 – 1 =4; 1 = 4 – False. в) odd(trunc(10*p)) при p = 0.182; odd(trunc(10*0.182)) = odd(1) = True. г) not odd(n) при n = 0; Решение: not odd(0) = not False = True. д) t and (p mod 3 = 0) при t = true, p = 101010; Решение. True and (101010 mod 3 = 0) = True and False = False. е) (x*y <> 0) and (y > x) при x = 2, y = 1; Решение. (2*1 <> 0) and (1 > 2) = True and False = False. ж) (x*y <> 0) or (y > x) при x = 2, y = 1; Решение. (2*1 <> 0) or (1 > 2) = True or False = True. з) a or (not b) при a = False, b = True; Решение. False or (not True) = False or False = False. Записать на Паскале отношение, истинное при выполнении указанного условия и ложное в противном случае: а) целое k делится на 7; Решение: k mod 7 = 0. б) целое k не делится на 5 Решение: k mod 5 <> 0. в) уравнение ax2 + bx + c = 0, (a 0) не имеет вещественных корней; Решение: (b*b – 4*a*c) < 0 г) точка (х, у) лежит вне круга радиуса R с центром в точке (1;0); Решение: ((x-1)*(x-1) + y*y) > R*R д) натуральное число N является квадратом натурального числа; Решение: a*a = N е) 0 < x < 1; Решение: (x >0) and (x<1). ж) x = max(x, y, z); Решение: (x>y) and (x>z). з) x max (x, y,z) (операцию not не использовать); Решение: (x <=y) or (x<=z). и) хотя бы одна из логических переменных а и b имеет значение True; Решение: (a=True) or (b=True). к) обе логические переменные а и b имеют значение True. Решение: (a=True) and (b=True). Указать порядок выполнения операций при вычислении выражений: а) a and b or not c and d; Решение: 1) a and b; 2) not c; 3) not c and d; 4) (a and b) or (not c and d) б) (x >= 0) or not c and d. Решение: 1) not c; 2) not c and d; 3) (x>=0) or not c and d; Вычислить следующие выражения при a = True, b = False: а) a or b and not a; Решение. True or False and not True = True or False and False = True or False = True б) (a or b) and not a; Решение. (True or False) and not True = True and False = False. в) not a and b; Решение. not True and False = False and False = False. г) not (a and b). Решение. not (True and False) = not True = False. Записать на Паскале выражение, истинное при выполнении указанного условия и ложное в противном случае: а) х принадлежит отрезку [0; 1]; Решение: (x>=0) and (x<=1). б) х лежит вне отрезка [0; 1]; Решение: (x<0) or (x<1). в) х принадлежит отрезку [2; 5] или [-1; 1]; Решение: (x>=2) and (x<=5) or (x>=-1) and (x<=1). г) х лежит вне отрезков [2; 5] и [-1; 1]; Решение: ((x<-1) or (x>5)) and ((x<-1) or (x>1)). д) каждое из чисел х, у, z положительно; Решение: (x>0) and (y>0) and (z>0). ж) ни одно из чисел х, у, z не является положительным; Решение: (x<=0) and (y<=0) and (z<=0). з) только одно из чисел х, у, z положительно; Решение: (x>0) and (y<=0) and (z<=0) or (x<=0) and (y>0) and (z<=0) or (x<=0) and (y<=0) and (z>0). и) логическая переменная а имеет значение True, логическая переменная b имеет значение False; Решение: a = True and b = False. к) год с порядковым номером у является високосным (год високосный, если его номер кратен 4, однако из кратных 100 високосными являются лишь кратные 400, например, 1700, 1800 и 1900 – невисокосные годы, 2000 – високосный). Решение: (y mod 4 = 0) and (y mod 100 <> 0) or (y mod 400 = 0). Какими будут значения переменных j, k после выполнения условного оператора: if j > k then j := k – 2 else dec (k, 2); если исходные значения переменных равны: а) j= 3, k= 5; б) j= 3, k= 3; в) j= 3, k= 2. Примечание – В результате выполнения оператора dec (k, 2) значение переменной k уменьшается на 2. Решение. а) 3>5 = False dec(k,2) = 5-2 = 3. а) 3>3 = False dec(k,2) = 3-2 = 1. а) 3>2 = True j = k-2 = 2-2 =0. Написать программу, которая после введенного с клавиатуры числа (1 –999), обозначающего денежную единицу, дописывает слово «рубль» в правильной форме. Например, 3 рубля, 12 рублей, 21 рубль. Решение. Var x, d:integer; Begin Write('введите натуральное число меньше 1000:'); Readln(x); d:=x mod 10; If d=1 Then Write(x,' рубль') Else if (d=2)or(d=3)or(d=4) Then Write(x,' рубля') Else Write(x,' рублей'); End. Задание (с условными операторами). Ответ: Условный оператор: if (a <= b) and (b <= c) then begin a := sqr(a); b := sqr(b); c := sqr(c); end; Вложенный условный оператор: if (a <= b) and (b <= c) then begin a := sqr(a); b := sqr(b); c := sqr(c); end else if (a > b) and (b > c) then begin b := a; c := a; end; Составной оператор: begin a := sqr(a); b := sqr(b); c := sqr(c); end Булево условие: a > b) and (b > c). Задачи для самостоятельного решения Вариант 1. Найти наибольшее из трех данных чисел. Решение. Program max3; Var n1, n2, n3, max: integer; Begin write('Введите три числа: '); readln(n1, n2, n3); if n1 > n2 then max := n1 else max := n2; if n3 > max then max := n3; writeln ('Максимальное из трех чисел: ', max); end. |