3.3. Деректердің типтері
Информатика, 6 сынып. Оқулық: Қадырқұлов Р. А., Нұрмұханбетова Г. К. (Алматыкітап баспасы, 2023). 3 бөлім: Python тілінде программалау. 82–85-беттер.
Нені үйренесің
- Деректер типі дегеніміз не және ол не үшін керек екенін түсіндіруді.
- Python-ның төрт типін ажыратуды: бүтін сан, нақты сан, жол және логикалық мән.
- Айнымалының типін
type()функциясымен анықтауды. - Мәндерді бір типтен екінші типке ауыстыруды:
int(),float(). - Әртүрлі типтер қатар жұмыс істейтін программалар жазуды.
Ой қозғау
- Компьютерде мәтін, сан, дыбыс және сурет бір-бірінен немен ерекшеленеді? Бәрі де әртүрлі деректер. Мәтінге таңбалар, санға цифрлар керек, оларды әртүрлі өңдейді.
- Математикадан қандай сан түрлерін білесің? Натурал (1, 2, 3), бүтін (нөл мен теріс сандарды қоса, мысалы −13), нақты (бөлшек бөлігі бар, мысалы −45,5).
- Айнымалы дегеніміз не? Аты бар жад ұяшығы. Оған мән салады, ал мәннің типі болады.
- «Айнымалы қабылдайтын мәннің типі» дегенді қалай түсінесің? Оқулықтағы суретте X айнымалысы 1, 2, 4, 8, 16 мәндерін қабылдайды. Бұлар — бүтін сандар, демек, X айнымалысының типі — бүтін.
Тақырыпты талдаймыз
Деректер және ақпарат
Деректер — өңделмеген әртүрлі фактілер мен цифрлар. Ал деректерді өңдегенде олар бір мағына берсе, ақпарат шығады. Мысалы, «37,2» — жай ғана сан. Ал «Айдардың температурасы 37,2» — ақпарат.
Компьютер деректерді өңдей алу үшін оларды типтерге жіктейді. Математикада да сандарды натурал, бүтін және нақты деп бөледі.
📌 Тұрақты, айнымалы және өрнектер қабылдай алатын мәндерді, олармен орындауға болатын амалдардың жиынтығын деректер типі деп атайды.
Бүтін сандармен (1 және 2) қосуға, азайтуға, көбейтуге болады. Ал IBM және PC мәндері жолдық типке жатады. Оларды біріктіріп жазуға болады: IBM PC. Жолдарға математикалық амалдарды орындауға болмайды.
Python-ның төрт басты типі
| Тип | Типтің атауы | Қабылдайтын мәндері |
|---|---|---|
int |
бүтін сандар | −27885, −156, 25, 152 |
float |
нақты сандар (бөлшек бөлігі бар) | 25.56, 5.0, −365.5633 |
str |
жолдық (тырнақшадағы мәтін) | "1vdkdv", "t" |
bool |
логикалық (тек екі мән) | True, False |
📕 Оқулықтың кестесінде (83-бет) логикалық типтің атауы
Bool()деп жазылған, бірақ Python-да ол кіші әріппен жазылады:bool(). Python бас және кіші әріпті ажыратады, сондықтан бас әріппен жазылған команда жұмыс істемейді.
⚠️ Жиі кететін қате. Python-да бөлшек бөлік нүктемен бөлінеді, үтірмен емес: 5.0, 25.56. Үтір олай жұмыс істемейді. Сондай-ақ
1500(сан) мен'1500'(жол) бір нәрсе емес: тырнақша санды мәтінге айналдырады.
Типті қалай білеміз: type() функциясы
type() функциясы мәннің қандай типке жататынын көрсетеді.
a = 126.858; k = 748
print('a =', type(a)) # a = <class 'float'>
print('k =', type(k)) # k = <class 'int'>
b = int(a) # бөлшек бөлігін алып тастадық
t = float(k) # бүтін санды нақты санға айналдырдық
print('b =', b) # b = 126
print('b =', type(b)) # b = <class 'int'>
print('t =', t) # t = 748.0
print('t =', type(t)) # t = <class 'float'>
💡 Біз
int(input())деп сондықтан жаздық.input()жол әкеледі, алint()оны бүтін санға айналдырады. Ал бөлшек бөлігі бар сан енгізу керек болса,float(input())керек болады.
👨👩👧 Ата-анаға. Баладан сұраңыз: «Телефон нөмірі — сан ба, әлде мәтін бе?» Нөмірлерді қосудың қажеті жоқ, демек, бұл — жол. Ал санына көбейтілетін теңгемен жазылған баға — сан. Осылай тип деректермен не істейтініне қарай таңдалатыны түсінікті болады.
Түсінгеніңді тексер
Өзіңді тексер
- Деректер типі деген не? Ол деректердің қандай мәндері болатынын және олармен қандай амалдар орындауға болатынын анықтайды.
- Біз қандай типтерді үйрендік? int (бүтін), float (нақты), str (жолдық), bool (логикалық).
type()не үшін керек? Мәннің немесе айнымалының типін көрсетеді.- Енгізілген жолды санға қалай айналдыруға болады? Бүтін сандар үшін
int(input()), бөлшектер үшінfloat(input()).
Жаттығуларды шығарамыз
№ 1
(Практикада қолдану, 1-практикалық тапсырма.) Тәуліктің басынан бері $N$ секунд өтті ($0 < N < 86400$). Тәуліктің басынан бері неше толық сағат, минут және секунд өткенін тап.
Қалай ойлаймыз. Бір сағатта 3600 секунд, бір минутта 60 секунд бар. Алдымен бүтін бөлумен сағатты тап, содан кейін қалдықты 60-қа бөліп минутты аласың, одан қалғаны — секунд.
Шешуі.
N = int(input())
K = N // 3600 # толық сағаттар
N = N % 3600 # сағат ішіндегі қалған секундтар
P = N // 60 # толық минуттар
N = N % 60 # қалған секундтар
print(K, 'sagat', P, 'minut', N, 'sekund')
16896 үшін: сағат 16896 // 3600 = 4, қалдық 2496. Минут 2496 // 60 = 41, секунд 2496 % 60 = 36. $N = 1$ үшін: 0 sagat 0 minut 1 sekund.
Жауабы: 16896 үшін программа 4 sagat 41 minut 36 sekund шығарады.
№ 2
(Практикада қолдану, 2-практикалық тапсырма.) Құрылысқа әр күні 3 жүк көлігі топырақ тасиды. Жүк көліктерінің сыйымдылығы (тонна) сәйкесінше $a = 8.5$, $b = 8.25$, $c = 7.25$ нақты сандармен өрнектеледі. Егер жүк көліктері бір күнде $N$ рет қатынайтын болса, онда $P$ күнде құрылысқа барлығы неше тонна топырақ тасылады? Жүк көліктері бір күнде орташа есеппен неше тонна топырақ тасиды?
Қалай ойлаймыз. $N$ рейс жасалған бір күнде: $N \cdot (a + b + c)$ тонна. $P$ күнде — $P$-ға көбейтеміз. Бір көлікке орташасы: күндік көлемді 3-ке бөлеміз.
Шешуі.
N = int(input()) # бір күндегі рейс саны
P = int(input()) # күн саны
a = 8.5; b = 8.25; c = 7.25 # көліктердің сыйымдылығы
K = N * P * (a + b + c) # P күнде барлығы
D = N * (a + b + c) / 3 # бір күнде бір көлікке орташа
print(K, D)
$N = 4$, $P = 5$ үшін: сыйымдылықтар қосындысы 24, $K = 4 \cdot 5 \cdot 24 = 480.0$, $D = 4 \cdot 24 / 3 = 32.0$.
Жауабы: 480.0 32.0.
№ 3
(Талдау, 1.) 1-ші және 2-кодты жазу кезінде қандай математикалық формула немесе әдістер қолданылған?
Қалай ойлаймыз. Кодтағы амалдарға қара: нені бөлді, көбейтті, қосты.
Жауап үлгісі. 1-кодта бүтін бөлу және бөлудің қалдығы қолданылған: алдымен 3600-ге //, содан кейін %, одан кейін 60-қа //. Бұл — секундты сағатқа, минутқа және секундқа айналдыру. 2-кодта қосу, көбейту (рейстерді күндерге және сыйымдылықтар қосындысына) және орташаны табу үшін 3-ке бөлу қолданылған.
Жауабы: 1-код бүтін бөлу мен қалдықты, 2-код қосуды, көбейтуді және орта арифметикалықты табуды қолданады.
№ 4
(Талдау, 2.) Программадағы айнымалылар қандай типтерге жатады?
Қалай ойлаймыз. Мән бүтін болса — int, бөлшек бөлігі болса — float.
Шешуі. 1-кодта барлық айнымалылар ($N$, $K$, $P$) бүтін, типі int. 2-кодта $N$ және $P$ бүтін (int), ал сыйымдылықтар $a$, $b$, $c$ және $K$, $D$ нәтижелері — нақты сандар (float).
Жауабы: 1-кодта тек int, 2-кодта int ($N$, $P$) және float ($a$, $b$, $c$, $K$, $D$).
№ 5
(Жинақтау.) Программа жазуға арналған бір есептің мәтінін құрастырыңдар. Есепте қолданылатын айнымалылардың типі екеуден кем болмасын. Құрастырған есептеріңнің программалау жолын көрсетіңдер.
Қалай ойлаймыз. Атауы (жол) және сандары бар кез келген тұрмыстық есеп жарайды. Мысалы, дүкендегі сатып алу: тауардың атауы, келісінің бағасы (бөлшек), келі саны (бүтін).
Жауап үлгісі. Есеп: дүкеннен бағасы белгілі алманы бірнеше келі сатып алады. Тауардың атауын және сатып алудың құнын шығару керек.
name = input() # тауардың атауы, типі str
price = float(input()) # 1 келінің бағасы, типі float
kg = int(input()) # неше келі, типі int
print(name, kg * price) # атауы және құны
450.5 теңгеден 3 келі алма үшін шығады: алма 1351.5.
Жауабы: екі немесе одан көп типі (str, int, float) бар кез келген есеп және жоғардағыдай программа.
№ 6
(Бағалау.) Программалау тілінде деректерді типтерге жіктеу қаншалықты маңызды деп ойлайсың?
Қалай ойлаймыз. Санды жолға қоссаң немесе санның орнына жол алсаң, не болады, соны ойла.
Жауап үлгісі. Типтер өте маңызды. Типке қандай амалдар орындауға болатыны байланысты: сандарды көбейтуге болады, сөздерді болмайды. Типті шатастырсаң, мысалы, сандардың орнына енгізілген екі жолды қоссаң, программа қате жауап береді (16 емес, 412). Тип сондай-ақ қанша жад керек екеніне де әсер етеді.
Жауабы: деректер типтері рұқсат етілген амалдар мен мәндерді анықтайды, онсыз деректерді дұрыс өңдеу мүмкін емес.
№ 7
(Ойлануға берілген сұрақтар, 1.) Деректердің типі туралы қандай ақпарат алдың?
Қалай ойлаймыз. Анықтаманы және төрт типті еске түсір.
Жауап үлгісі. Деректер типі айнымалының қандай мәндер қабылдайтынын және қандай амалдар орындауға болатынын көрсетеді. Python-да int, float, str және bool бар. Типті type() функциясымен біледі, ал оны int() және float() функцияларымен өзгертуге болады.
Жауабы: деректер типі рұқсат етілген мәндер мен амалдарды анықтайды.
№ 8
(Ойлануға берілген сұрақтар, 2.) Программалау барысында сандық деректерді емес, айнымалыларды қолдану алгоритмнің қай қасиетімен байланысты деп ойлайсың?
Қалай ойлаймыз. Егер программаға нақты сан жазсаң, ол тек бір есепке жарайды. Ал айнымалы жазсаң, ше?
Жауап үлгісі. Бұл алгоритмнің жалпылық (жаппай қолданылу) қасиетімен байланысты. Айнымалылар қолданылған программа бір ғана санға емес, сол типтегі кез келген бастапқы деректерге жарайды. Мысалы, секундты сағатқа айналдыратын программа кез келген $N$ үшін жұмыс істейді.
Жауабы: алгоритмнің жалпылық (жаппай қолданылу) қасиетімен: бір программа көп есепті шешеді.
№ 9
(Ойлануға берілген сұрақтар, 3.) 12 және 58 бүтін сандарынан 1258 санын құрастырудың ауызша алгоритмін қалай сипаттаған болар едің?
Қалай ойлаймыз. Жай қоссаң, 70 шығады. 58-ді 12-ге «жалғау» керек. Мұны екі тәсілмен жасауға болады.
Шешуі.
- Сандармен: 12-ні 100-ге көбейт (1200 шығады) да, 58-ді қос. Нәтиже: 1258.
- Жолдармен: әр санды жолға айналдырып, жапсыр:
str(12) + str(58).'1258'жолы шығады.
a = 12; b = 58
print(a * 100 + b) # 1258, сан ретінде
print(str(a) + str(b)) # 1258, жол ретінде
Жауабы: 12 · 100 + 58 = 1258 (немесе '12' және '58' жолдарын жапсыру).
№ 10
(Ойлануға берілген сұрақтар, 4.) float(input()) командасын қандай мақсатта қолданады?
Қалай ойлаймыз. int(input()) командасынан немен ерекшеленетінін еске түсір.
Шешуі. input() жол енгізеді, ал float() оны нақты санға, яғни бөлшек бөлігі бар санға айналдырады.
Жауабы: нақты (бөлшек) сандарды енгізу үшін.
№ 11
(Тапсырма, 1*.) Берілген айнымалыларға type() функциясын қолдансаң, қандай деректер типін аласың?
Қалай ойлаймыз. Мәнге қара. Тырнақша бар болса — str. Бөлшек бөлігі бар болса — float. Тырнақшасыз True және False — bool. Жай бүтін сан — int.
Шешуі.
int: r, h, max;float: a, p;str: b, ppp, res, tc, maxs, mins, tes (тырнақшадағының бәрі, тіпті'True','-25'және'1500'та);bool: c, min.
⚠️ Жиі кететін қате. Python-да
maxжәнеmin— кірістірілген функциялардың аттары. Өз айнымалыларың үшін басқа атау алған дұрыс, мысалы,mx,mn.
Жауабы: int: r, h, max. float: a, p. str: b, ppp, res, tc, maxs, mins, tes. bool: c, min.
№ 12
(Тапсырма, 2**.) Ұзындық $L$ миллиметрмен берілген. Берілген ұзындықты километр, метр, сантиметр және миллиметрмен өрнектейтін программа жаз. Мысалы: 1012552 → 1 km 12 m 55 cm 2 mm.
Қалай ойлаймыз. 1 км-де 1 000 000 мм, 1 м-де 1000 мм, 1 см-де 10 мм бар. Секундтар есебіндегідей әрекет етеміз: бүтін бөлу ірі өлшемді алады, қалдық кішіге беріледі.
Шешуі.
L = int(input()) # ұзындық миллиметрмен
km = L // 1000000 # километрлер
L = L % 1000000
m = L // 1000 # метрлер
L = L % 1000
sm = L // 10 # сантиметрлер
mm = L % 10 # миллиметрлер
print(km, 'km', m, 'm', sm, 'cm', mm, 'mm')
Жауабы: 1012552 үшін программа 1 km 12 m 55 cm 2 mm шығарады.
№ 13
(Тапсырма, 3***.) Екі таңбалы санның цифрларының қосындысы мен көбейтіндісін табатын программа құрастыр. Мысалы: 89 → 17 және 72.
Қалай ойлаймыз. Екі таңбалы санның бірінші цифры — N // 10, екінші цифры — N % 10.
Шешуі.
N = int(input())
a = N // 10 # ондықтар
b = N % 10 # бірліктер
print(a + b) # цифрлар қосындысы
print(a * b) # цифрлар көбейтіндісі
89 үшін: 8 + 9 = 17, 8 · 9 = 72.
Жауабы: 89 үшін программа 17 және 72 шығарады.
№ 14
(Үй тапсырмасы.) Үш таңбалы санның цифрларының қосындысы мен көбейтіндісін табатын программа құрастыр. Мысалы: 896 → 23 және 432.
Қалай ойлаймыз. Жүздіктер: N // 100. Ондықтар: N // 10 % 10 (алдымен бірліктерді алып тастаймыз, содан кейін соңғы цифрды аламыз). Бірліктер: N % 10.
Шешуі.
N = int(input())
a = N // 100 # жүздіктер
b = N // 10 % 10 # ондықтар
c = N % 10 # бірліктер
print(a + b + c) # қосынды
print(a * b * c) # көбейтінді
896 үшін: 8 + 9 + 6 = 23, 8 · 9 · 6 = 432.
Жауабы: 896 үшін программа 23 және 432 шығарады.
Жадынама
Терминдер: деректер типі, бүтін сандар, нақты сандар, жолдық, логикалық, type() функциясы, программаны жөндеу, опциялар.