278.72K
Category: physicsphysics

Шартты өрнек

1.

ШАРТТЫ ӨРНЕК. ЖОЛДАРҒА ҚОЛДАНЫЛАТЫН
АМАЛДАР. IF ШАРТТЫ КОНСТРУКЦИЯСЫ
PYTHON-ДАҒЫ MATCH-CASE ОПЕРАТОРЫ.

2.

Жоспары:
1.Шартты өрнек.
2.Жолдарға қолданылатын амалдар.
3.if шартты конструкциясы. Мысалдар
4. Python-дағы match-case операторы.

3.

• Шартты өрнектер
• Бірқатар операциялар шартты өрнектерді қолданады. Барлық осы
операциялардың нәтижесі Python-да boolean түрін білдіретін логикалық мәнді
қайтарады. Яғни, True (өрнек ақиқат) және False (өрнек жалған).

4.

САЛЫСТЫРУ ОПЕРАЦИЯЛАРЫ
Қарапайым шартты өрнектер екі мәнді салыстыратын салыстыру амалдарын білдіреді. Python келесі
салыстыру әрекеттерін қолдайды:
• == –тең. Егер екі операнд тең болса, True, әйтпесе False қайтарады.
• != –тең емес. Егер екі операнд тең болмаса, True қайтарады.
• > (артық). Егер бірінші операнд екіншісінен үлкен болса, True қайтарады.
• < (кем). Егер бірінші операнд екіншісінен кем болса, True қайтарады.
• > = (артық немесе тең). Егер бірінші операнд екіншісінен үлкен немесе оған тең болса, True
қайтарады.
• < = (кем немесе тең). Егер бірінші операнд екіншісінен кіші немесе оған тең болса, True
қайтарады.

5.

a=5
b=6
result = 5 == 6 # операция мәнін айнымалыда сақтау
print(result) # False - 5 саны 6-ға тең емес
print(a != b) # True
print(a > b) # False - 5 саны 6-дан кіші
print(a < b) # True
bool1 = True
bool2 = False
print(bool1 == bool2) # False - bool1 bool2-ға тең емес

6.

• Салыстыру операциялары әртүрлі нысандарды - жолдарды, сандарды, логикалық
мәндерді салыстыра алады, алайда операцияның екі операндасы да бірдей типте
болуы керек.

7.

ЛОГИКАЛЫҚ ОПЕРАЦИЯЛАР
• Күрделі шартты өрнектерді жасау үшін логикалық амалдар қолданылады. Python-да
келесі логикалық операторлар бар:
• and (логикалық көбейту)
• Егер екі өрнек те ақиқат болса, True, әйтпесе False мәнін қайтарады
age = 22
weight = 58
result = age > 21 and weight == 58
print(result) # True

8.

age = 22
weight = 58
isMarried = False
result = age > 21 and weight == 58 and isMarried
print(result)
# False, себебі, isMarried = False
Егер and операторының операндтарының бірі жалған болса, онда басқа операндтың
мәніне тәуелсіз оператор кез-келген жағдайда жалған мәнді қайтарады. Бұл өнімділікті
сәл арттыруға мүмкіндік береді, себебі, екінші операндты бағалауға ресурстарды
жұмсаудың қажеті жоқ.

9.

OR (ЛОГИКАЛЫҚ ҚОСУ)
• Егер өрнектердің кем дегенде біреуі ақиқат болса, True әйтпесе False мәнін
қайтарады.
age = 22
isMarried = False
result = age > 21 or isMarried
print(result) # True, себебі age > 21 мәні True
егер or операторының операндтарының бірі True-ді қайтарса, онда екінші операнд
бағаланбайды, өйткені оператор кез-келген жағдайда True-ді қайтарады.

10.

• not (логикалық терістеу)
• Егер өрнек жалған болса, True мәнін қайтарады.
age = 22
isMarried = False
print(not age > 21) # False
print(not isMarried) # True

11.

ЖОЛДАРҒА ҚОЛДАНЫЛАТЫН ОПЕРАЦИЯЛАР
• Жол тырнақшаға алынған Юникодты кодтаудағы таңбалар тізбегін білдіреді.
Python-да біз бір және қос тырнақшаларды қолдана аламыз:
name = "Tom"
surname = 'Smith'
print(name, surname) # Tom Smith

12.

• Жолдардағы ең көп қолданылатын операциялардың бірі-оларды біріктіру немесе
байланыстыру. Жолдарды біріктіру үшін плюс (+) белгісі қолданылады:
name = "Tom"
surname = 'Smith'
fullname = name + " " + surname
print(fullname) # Tom Smith

13.

• Жол мен санды біріктіру үшін алдымен str() функциясын қолдана отырып, санды
жолға түрлендіру керек:
name = "Tom"
age = 33
info = "Name: " + name + " Age: " + str(age)
print(info) # Name: Tom Age: 33

14.

ЖОЛДАРДЫ САЛЫСТЫРУ
• Жолдарды салыстыру кезінде таңбалар мен олардың регистрі ескеріледі. Онда,
олардық сандық кодтары салыстырылатындықтан сандық таңба кез-келген
алфавиттік таңбадан шартты түрде кем, сол сияқты жоғарғы регистрдегі алфавиттік
таңба төменгі регистрдегі алфавиттік таңбаларға қарағанда шартты түрде кем
болады.

15.

str1 = "1a"
str2 = "aa"
str3 = "Aa"
print(str1 > str2) # False, str1 – бірінші символ цифр
print(str2 > str3) # True, str2 – бірінші символ төмен регистрде
Сондықтан "1a" жолы шартты түрде "aa"жолынан кем. Алдымен салыстыру бірінші
таңба бойынша жүреді. Егер екі жолдың бастапқы таңбалары сандарды білдірсе,
онда кіші сан аз деп саналады, мысалы, "1A" "2A" - дан аз.

16.

• lower () функциясы жолды төменгі регистрге, ал upper () функциясы жоғарғы
регистрге айналдырады.
str1 = "Tom"
str2 = "tom"
print(str1 == str2) # False -жолдар тең емес
print(str1.lower() == str2.lower()) # True

17.

ШАРТТЫ IF ҚҰРЫЛЫМЫ
• Шартты конструкциялар шартты өрнектерді қолданады және олардың мәніне байланысты
бағдарламаның орындалуын жолдардың біріне бағыттайды. Олардың бірі -if құрылымы. Ол
төмендегідей анықталады:
if логикалық өрнек:
инструкциялар
[elif логикалық өрнек:
инструкциялар]
[else:
инструкциялар]

18.

• Қарапайым түрде, if кілт сөзінен кейін логикалық өрнек беріледі. Егер бұл
логикалық өрнек True-ді қайтарса, онда келесі нұсқаулар блогы орындалады,
олардың әрқайсысы жаңа жолдан басталады, бірақ, жолдың басынан шегіністер
болуы керек:
age = 22
if age > 21:
print("Рұқсат")
print(“Жұмысты аяқтау")

19.

• Шегіністі 4 бос орынға немесе 4-ке еселі ретінде берген дұрыс.
• "Жұмысты аяқтау"хабарын көрсететін соңғы жолдағы кодқа назар аударыңыз.
Жолдың басынан ешқандай шегініс жоқ, сондықтан ол if блогына жатпайды және
кез-келген жағдайда орындалады, тіпті егер if конструкциясындағы өрнек жалған
мәнді қайтарса да.

20.

• Егер біз балама шешімді анықтауымыз керек болса, яғни, егер шартты өрнек
жалған болса, онда біз басқа блокты қолдана аламыз:
age = 18
if age > 21:
print("Рұқсат")
else:
print("Рұқсат жоқ")

21.

if a < b:
print “Компьютер қосылды”
else:
print “Компьютер істен шыққан”
іf және else нұсқауларының денелері шегініспен бөлінеді. еlse нұсқаулығы міндетті емес.
• Ешқандай әрекет жасамайтын бос денені құру үшін pass нұсқаулығын төменде көрсетілгендей
пайдалануға болады:
if a < b:
pass # ешқандай іс-әрекет орындалмайды
else:
print “Компьютер”

22.

КІРІКТІРІЛГЕН IF КОНСТРУКЦИЯЛАРЫ
• If конструкциясы өз кезегінде кіріктірілген if конструкцияларына ие болуы мүмкін:
age = 18
if age >= 18:
print("18-ден үлкен")
if age > 21:
print(" 21-ден үлкен")
else:
print(" 18 -бен 21-дің арасында")

23.

• Кіріктірілген if өрнектері де шегіністерден басталуы керек, ал кіріктірілген
конструкциялардағы нұсқаулар да шегіністерге ие болуы керек. Дұрыс
орналастырылмаған шегіністер бағдарламаның логикасын өзгерте алады.
Сондықтан, алдыңғы мысал келесіге ұқсас емес:

24.

# ПРОГРАММА ВАЛЮТА АЙЫРБАСТАУ
money = int(input("Айырбастайтын соманы енгіз: "))
currency = int(input(" Валюта кодын таңда (доллар - 465, евро - 495): "))
if currency == 465:
cash = round(money /currency, 2)
print("Валюта: доллар АҚШ")
elif currency == 495:
cash = round(money /currency, 2)
print("Валюта: евро")
else:
cash = 0
print("Басқа валюта")
print("Алуға:", cash)

25.

• іnput () функциясын қолдана отырып, пайдаланушы енгізген деректерді консольге
аламыз. Сонымен қатар, бұл функция деректерді жол түрінде қайтарады,
сондықтан енгізілген деректерді арифметикалық амалдарда қолдануға
болатындай етіп, оны бүтін санға int () функциясын қолдана отырып келтіреміз.
• Бағдарлама пайдаланушы айырбасталатын қаражат мөлшерін және
айырбасталатын валюта кодын енгізуді талап етеді. Валюта кодтары: доллар үшін
465 және евро үшін 495.

26.

• If конструкциясын қолдана отырып, біз валюта кодын тексеріп, тиісті валюта
бағамына есептейміз. Бөлу процесін round()дөңгелектеу функциясын қолдана
отырып орындаймыз. Онда үтірден кейін 2 мәнді санды қалдырып дөңгелектейміз.
• Соңында алынған мән консольге шығарылады.

27.

• if операторында шарт әртүрлі болуы:
1. бір айнымалы
2. сан
3. True немесе False
4. күрделі логикалық өрнектер, (және, немесе т.б. операциялар арқылы
байланысқан болуы мүмкін)

28.

a=?
if a:
a=1
1. Егер сұрақ белгісінің орнына 0 болса, онда логикалық жағынан ол False деп
есептелінеді, яғни if операторының денесі орындалмайды. 2. Егер a басқа кез келген
санға тең болса ол True деп есептелінеді және шартты оператор денесі
орындалады.

29.

a=5>0
if a:
print(a)
мұнда a булдік мәнмен байланысқан. Бұл жерде оның мәні True.
a = 5 > 0 өрнегінде меншіктеу операторы салыстырудан кейін орындалады.
Бұл жерде қажет болса операторлардың басымдылығын анықтауға жай жақша қолдануға
болады
a = (5 > 0)

30.

ЕНГІЗІЛГЕН САННЫҢ ТАҢБАСЫН АНЫҚТА
a = int(input(«Санды енгіз:"))
if a < 0:
print("Neg")
elif a == 0:
print("Zero")
else:
print("Pos")

31.

Мысал 1: Берілген формула бойынша
функцияның мәнін есепте.
Шешуі: Есепті шартты оператордың көмегімен шығарамыз. Негізгі шарттардың саны 3-еу
болғандықтан, шартты операторды қолдану барысында біз екеуін тексереміз, ал 3-і шарт
оператордың әйтпесе жағдайында қарастырылады, сондықтан оны тексерудің қажеті жоқ.
Жалпы жағдайда шарттың саны n-ға тең болса, программада (n-1) – шарт тексеріледі. If – elif
– else операторын ішкі конструкция ретінде бірнеше рет қолдану барысында else қызметші
сөзінің қандай if –ке қатысты екенін анықтап отыру қажет. Есепте else-ні ең жақын тұрған ifке қатысты деп аламыз.

32.

Есептің екі түрлі шешімі келтірілген. Программаны шарт бойынша әртүрлі мәндер беріп тексеріңдер.
Мәндерін дәптерге жазыңдар
from math import *
x=float(input("x-enter:"))
if x<0:
y=1/x
elif x>1:
y=2/sqrt(x)
else:
y=x**2
print("y=",y)
from math import *
x=float(input("x-enter:"))
if x<0:
y=1/x
elif 0<=x<=1:
y=x**2
else:
y=2/sqrt(x)
print("y=",y)

33.

Мысал 2: Берілген сурет бойынша жазықтықтағы нүктенің қандай ширекте жататынын анықтайтын
программа құр. Экранға егер нүкте (х, у) берілген облысқа тиісті болса “тиісті”, әйтпесе “тиісті емес” деген
сөздерін шығар.
Шешуі: Есептің берілгені бойынша, алдымен облыстың қандай қисықтармен шектелгенін тексеріп аламыз.
Облыс бірінші ширекте жатыр. Ол
түзулерімен шектелген. Нүкте облысқа тиісті
болу үшін осы шектеулерден шартты шығарып аламыз. Шарт күрделі болады. Нүкте облысқа тиісті болуы
үшін оның координаттары мына шарттарды:
қанағаттандыруы тиіс.
Сонымен, (x>=0) and (y>=0) and (x<=1) and (y<=1) бізге қажетті күрделі шарт болып табылады.

34.

Есептің шешімі келтірілген. Программаны шарт бойынша әртүрлі мәндер беріп тексеріңдер. Мәндерін
дәптерге жазыңдар
x=float(input("x-enter:"))
y=float(input("y-enter:"))
if x>=0 and y>=0 and x<=1 and y<=1:
print("Нүкте тиісті")
else:
print("Нүкте тиісті емес" )

35.

Мысал 3. Функция график бойынша берілген. Осы функцияның мәндерін есептейтін программа құр.
Шешуі: Есепті шешу үшін оны формула түрінде өрнектеп жазып аламыз. График бойынша егер x<-2, онда
y= -2, -2<= x <=2 болса y=x , ал x>2 болса y=2 болатынын анықтап, берілген есепті келесі формула
бойынша
өрнектеп, есептейміз.

36.

Есептің шешімі келтірілген. Программада қате бар. Соны дұрыстап шарт бойынша әртүрлі мәндер беріп
тексеріңдер. Мәндерін дәптерге жазыңдар
x=float(input("x-enter:"))
if (x<-2):
y=-2
elif -2<=x<=2
y=x
else:
y=2
print("y=",y)

37.

Python-дағы match-case операторы
•3.10 нұсқасынан бастап Python тілінде pattern matching (үлгілерді сәйкестендіру) сияқты
функционалдылығы пайда болды.
•Pattern matching өрнектің кейбір үлгіге сәйкес келуіне мүмкіндік беретін match
конструкциясын қолдануды білдіреді.
•Егер өрнек үлгіге сәйкес келсе, онда белгілі бір әрекеттер орындалады.
• Бұл мағынада match конструкциясы кейбір шарттарға байланысты белгілі бір
әрекеттерді орындайтын if/else/elif конструкциясына ұқсас. Дегенмен, match
функционалдығы әлдеқайда кең - ол сонымен қатар құрама түрлерден деректерді алуға
және нысандардың әртүрлі бөліктеріне әрекеттерді қолдануға мүмкіндік береді

38.

match конструкциясының жалпы түрі:
match өрнек:
case үлгі_1:
әрекет_1
case үлгі_2:
әрекет_2
................
case үлгі_n:
әрекет_n
case _:
әдепкі әрекет

39.

match кілт сөзінен кейін салыстырылатын өрнек келеді. Содан кейін қос
нүктеден кейін келесі жолдарда case өрнектері орналасады. Әрбір case
өрнегінен кейін match өрнегі салыстырылатын үлгі көрсетіледі. Үлгіден
кейін қос нүкте арқылы case блогының орындалатын әрекеттер жиынтығы
көрсетіледі.
match конструкциясы өрнекті case блоктарының үлгілерімен дәйекті түрде
салыстырады. Егер case блогынан, match өрнегіне сәйкес келетін үлгі
табылса, онда осы case блогынан нұсқаулар орындалады.
Өрнектер салыстырылатын үлгілер ретінде қарапайым типтегі деректерді
де, класс элементтері мен объектілерінің реттілігін де қолдануға болады.

40.

#Үнсіз келісім бойынша
def print_hello(language):
match language:
case "kazakh":
print("Сәлем")
case "english":
print("Hello")
case "german":
print("Hallo")
# Сәлем
case _:
# Hello
print("Undefined")
# Hallo
def print_hello(language):
match language:
case "kazakh":
print("Сәлем")
case "english":
print("Hello")
case "german":
print("Hallo")
print_hello("kazakh")
print_hello("english")
print_hello("german")
print_hello("kazakh")
print_hello("english")
print_hello("german")
print_hello("spanish")
Undefined
# Сәлем
# Hello
# Hallo
#

41.

# Бірнеше мәндер
def print_hello(language):
match language:
case "russian":
print("Привет")
case "american english" | "british english" | "english":
print("Hello")
case _:
print("Undefined")
print_hello("english")
print_hello("american english")
print_hello("spanish")
# Hello
# Hello
# Undefined

42.

Келесі сұрақтарға қысқаша жауап жаз:
Пысықтау сұрақтары:
1. Шартты оператордың түрлерін атап, олардың жазылуын көрсет ?
2. Шартты алгоритмдерді қандай жағдайларда қолданамыз?
3. Операторда қолданылатын шарт күрделі болуы мүмкін бе?
4. Операторда күрделі шарттардың орналасу реті немесе
тексерілуі жалпы программаның орындалуына әсер ете
ме ?
5. Операторда қолданылатын шарт қандай типтегі мәндерді қабылдайды ?
6. Шартты операторды жазу барысында қолданылатын қызметші сөздерді ата?
7. Шартты оператордың ішінде шарт қолдануға бола ма?
8. match-case қандай уақытта қолданылады?
9. Операторда өрнек қандай қызмет атқарады?
10. Үнсіз келісім мәні қалай жүзеге асырылады?
English     Русский Rules