3.9. Практикалық жұмыс — Информатика 6 сынып, Қадырқұлов: талдау және жауаптар
Ookul.kz · сабақ талдау
Орысша

Кез келген есепті бірге талдайық!

3.9. Практикалық жұмыс

Информатика, 6 сынып. Оқулық: Қадырқұлов Р. А., Нұрмұханбетова Г. К. (Алматыкітап баспасы, 2023). 3 бөлім: Python тілінде программалау. 101–105-беттер.

Нені үйренесің

  • //, %, **, round, int, abs бар өрнектерді есептеуді және нәтиженің типін анықтауды.
  • Математикалық өрнектерді жақша мен * белгісін ұмытпай, Python тілінде жазуды.
  • Сызықтық программаларды шарт бойынша, блок-схема бойынша және сурет бойынша құрастыруды.
  • Программаны шарттағы мысалдармен тексеруді.

Ой қозғау

  • / мен // айырмашылығы неде? / бөлшек бөлігі бар кәдімгі бөлуді береді (7 / 2 = 3.5), // тек бүтін бөлігін береді (7 // 2 = 3).
  • % не істейді? Бөлгендегі қалдықты табады: 7 % 2 = 1.
  • Дәрежені қалай жазамыз? ** арқылы: 3 ** 2 — бұл 9.
  • Жолды санға қалай айналдырамыз? int('35') нәтижесі 35, float('3.5') нәтижесі 3.5.

Тақырыпты талдаймыз

Python амалдары бір кестеде

жазылуы не істейді мысал нәтиже
+, -, * қосу, азайту, көбейту 7 * 3 21
/ бөлу (әрқашан бөлшек) 85 / 17 5.0
// бөлудің бүтін бөлігі 19 // 4 4
% бөлгендегі қалдық 19 % 4 3
** дәреже 2 ** 5 32
abs(x) санның модулі abs(-4) 4
round(x) бүтінге дейін дөңгелектеу round(40.598) 41
int(x) бүтін бөлігі, бөлшегі тасталады int(40.598) 40
str(x) жолға айналдырады str(40) '40'

⚠️ Жиі кететін қате. round мен int бірдей емес. round(40.598) нәтижесі 41 (ең жақын бүтін), ал int(40.598) нәтижесі 40 (бөлшек жай ғана кесіліп тасталады). Тағы бір ерекшелік: round(2.5) нәтижесі 2, ал round(3.5) нәтижесі 4. «Дәл жартысы» болғанда Python ең жақын жұп санды таңдайды.

Кім бірінші: амалдардың орындалу реті

Python математикадағыдай санайды: алдымен жақшалар мен **, содан кейін *, /, //, % солдан оңға қарай, ең соңында ғана + және -. *, // және % басымдығы бірдей, сондықтан олар кезекпен орындалады.

Нәтиженің типі

Өрнекте бөлшек сан (16.5) болса, // және % нәтижесі де бөлшек болады: 16.5 // 4 нәтижесі 4 емес, 4.0. round мен int бүтін сан (int) береді, str жол береді.

Формулаларды қалай жазамыз

Математикада көбейту белгісін жиі жазбай кетеді: bx дегені b · x. Python-да олай болмайды: bx жаңа айнымалы аты болып шығады. Әрқашан b * x деп жаз.

Python-да бөлшек — бұл бөлу, ал алым мен бөлімді жақшаға алады:

Мысалы, $\dfrac{a+b}{c}$ өрнегі (a + b) / c түрінде жазылады.

🌟 Оқулықтың келесі, төртінші бөлімі мәтіндік құжаттармен жұмыс туралы: нұсқамалар (сноскалар), гиперсілтемелер, мазмұн, реферат, авторлық құқық және плагиат. Онда код болмайды, бірақ қадамдап жұмыс істеу әдеті ол жерде де қажет болады.

👨‍👩‍👧 Ата-анаға. Бұл сабақ толығымен тәжірибеден тұрады. Дайын жауапты айтпаңыз: баладан алдымен өрнекті қағазда есептеуін, содан кейін Python-да іске қосып тексеруін сұраңыз. Нәтиже сәйкес келмесе, амалдардың ретін түсінуге ең қолайлы сәт — дәл осы.

Өзіңді тексер

  • Сызықтық алгоритм бойынша программа құру қандай қадамдарды қамтиды? Деректер мен олардың типтері, нәтиже және оның типі, енгізу-есептеу-шығару блоктары, әртүрлі деректермен тексеру.
  • Python-да сызықтық алгоритмдерді жазғанда нені басшылыққа аламыз? Есептің шартын, амалдар ретін және жазу ережелерін: * әрқашан қоямыз, бөлшекті жақшаға аламыз, дәрежені ** арқылы жазамыз.
  • Айнымалылардың типін қалай таңдаймыз? Деректерге қарай: бүтін сандар — int, бөлшек сандар — float, мәтін — str. Мысалы, монеталар мен заттардың саны — int, «қайтарым ақшасы» бар баға — float болуы мүмкін.

Жаттығуларды шығарамыз

№ 1

(Тапсырма, 1-тапсырма, бір жұлдызша.) Өрнектердің мәнін есепте: 1) round(14.141 - 5.45); 2) print(round(25.14 + 15.458)); 3) print(int(25.14 + 15.458)); 4) print(85 / 17); 5) print(round(3.2 + 8.2) // 4); 6) print((16.5 // 4) % 7); 7) print((19.5 // 4) % 7); 8) 3 * 7 // 2 % 7.

Қалай ойлаймыз. Ішкі жағынан сыртқа қарай санай бер: алдымен жақшалар, содан кейін функциялар, содан кейін қалғаны. Типті есте сақта: бөлшек болса, нәтиже де бөлшек.

Шешуі.

№ есептеулер нәтиже
1 14.141 − 5.45 = 8.691, round ең жақын бүтінді береді 9
2 25.14 + 15.458 = 40.598, round 41
3 сол сан, бірақ int бөлшегін кесіп тастайды 40
4 85 / 17 = 5, бөлу әрқашан бөлшек 5.0
5 3.2 + 8.2 = 11.4, round 11 береді, содан кейін 11 // 4 2
6 16.5 // 4 = 4.0, содан кейін 4.0 % 7 4.0
7 19.5 // 4 = 4.0, содан кейін 4.0 % 7 4.0
8 3 * 7 = 21, 21 // 2 = 10, 10 % 7 3

1 және 8 өрнектері print-сіз жазылған. Файлдағы программада олар ештеңе көрсетпейді, ал IDLE қабықшасында нәтиже өзі шығады.

Жауабы: 9; 41; 40; 5.0; 2; 4.0; 4.0; 3.

№ 2

(Тапсырма, 2-тапсырма, бір жұлдызша.) Өрнектердің нәтижесін анықтап, типін көрсет: 1) round(14.141 - 5.45); 2) 128.5 % 10; 3) int(25.14 + 15.458); 4) round(856 / 177); 5) str(int(25.14 + 15.458)); 6) (16.5 // 4) % 7; 7) 3 + ((19.5 // 4) % 7); 8) '35' + str(3 * 7 // 2 % 7).

Қалай ойлаймыз. Әр амал белгілі типті мән береді. // немесе % амалындағы бөлшек нәтижені float етеді, ал жолдарды жапсыру str береді.

Шешуі.

№ мәні типі
1 9 int
2 8.5 (128.5 = 12 · 10 + 8.5) float
3 40 int
4 856 / 177 ≈ 4.84, демек round 5 береді int
5 '40' (бұл мәтін, сан емес) str
6 4.0 float
7 3 + 4.0 = 7.0 float
8 3 * 7 // 2 % 7 = 3, содан кейін str '3' береді, жапсырамыз: '353' str

Жауабы: 9 (int); 8.5 (float); 40 (int); 5 (int); '40' (str); 4.0 (float); 7.0 (float); '353' (str).

№ 3

(Тапсырма, 3-тапсырма, екі жұлдызша.) Python тілінде жазылған өрнектің математикалық жазылуын тап. Сегіз өрнек берілген.

Қалай ойлаймыз. Өрнектер Python стилінде жазылған (*, /, **, abs). Оларды программист сияқты оқып, кәдімгі математикаға аудар: ** — дәреже, abs(...) — модуль. Есіңде болсын: a / b * c дегені (a / b) · c, ал a / (b · c) емес.

Шешуі.

  1. (p + k * 4) / (4 * t) - 4 * p * k / (3 - 2 * b) — бұл $\dfrac{p+4k}{4t}-\dfrac{4pk}{3-2b}$.
  2. abs(4 * x) + (3 - 3 * x) / 5 * y — бұл $|4x|+\dfrac{3-3x}{5}\cdot y$.
  3. 3 * x * (x ** 3 - 47 + 2 * y) / abs(x - 4) — бұл $\dfrac{3x(x^3-47+2y)}{|x-4|}$.
  4. a / b * 52 / 35 — бұл $\dfrac{a}{b}\cdot\dfrac{52}{35}=\dfrac{52a}{35b}$.
  5. (x ** 3 - y ** 3) - (x ** 3 - 2) — бұл $(x^3-y^3)-(x^3-2)=2-y^3$. $x^3$ кубтары қысқарады.
  6. abs(3 - x) + x ** 3 / y ** 2 — бұл $|3-x|+\dfrac{x^3}{y^2}$.
  7. y - 2 * x + 78 - 32 % 10 — бұл $y-2x+78-2=y-2x+76$, себебі 32 % 10 нәтижесі 2.
  8. 89 // 65 % 34: алдымен 89 // 65 = 1, содан кейін 1 % 34 = 1. Өрнек әрқашан 1-ге тең.

⚠️ Жиі кететін қате. 2-тармақта бөлу тек 5-ке жасалады, 5 * y-ке емес: / және * амалдары солдан оңға қарай орындалады.

Жауабы: математикалық жазылуы жоғарыда; 5-өрнек 2 − y³ түріне, 7-өрнек y − 2x + 76 түріне келеді, 8-өрнек 1-ге тең.

№ 4

(Тапсырма, 4-тапсырма, бір жұлдызша.) Математикалық өрнектердің Python тілінде жазылуын көрсет: а) $a + bx + cyz$; ә) $[(ax - b)x + c]x - d$; б) $\dfrac{a+b}{c}+\dfrac{c}{ab}$.

Қалай ойлаймыз. Барлық жерге * қой. Python-да тік жақшалар тізімдерге берілген, сондықтан программада тек дөңгелек жақша қолданылады: ((a * x - b) * x + c) * x - d. Бөлшек — бұл бөлу, алым мен бөлім жақшада.

Шешуі.

# а) a + bx + cyz
r1 = a + b * x + c * y * z

# ә) [(ax - b)x + c]x - d  (жақшалардың бәрі дөңгелек)
r2 = ((a * x - b) * x + c) * x - d

# б) (a + b) / c  +  c / (a * b)
r3 = (a + b) / c + c / (a * b)

Бөлімге ерекше мұқият бол: c / a * b дегені $\dfrac{c}{a}\cdot b$ болар еді, ал бізге $\dfrac{c}{ab}$ керек. Сондықтан a * b жақшада.

Жауабы: а) a + b * x + c * y * z; ә) ((a * x - b) * x + c) * x - d; б) (a + b) / c + c / (a * b).

№ 5

(Тапсырма, 5-тапсырма, екі жұлдызша.) Баскетбол ойыны 4 кезеңнен тұрады. Әр кезеңдегі екі команданың жинаған ұпайлары жеке-жеке қатарларда берілген. Ойынның қорытынды нәтижесін төмендегі форматта экранға шығаратын программа құрастыр. Мысалы: енгізу 15 7, 12 18, 25 33, 19 15, шығару 71 : 73.

Қалай ойлаймыз. Әр қатарда екі сан бар: бірінші және екінші команданың кезеңдегі ұпайлары. 8 айнымалы (әр кезеңге екіден) және екі қосынды керек. «71 : 73» шығару форматын sep=' : ' береді.

Шешуі.

a1, b1 = map(int, input().split())    # 15 7
a2, b2 = map(int, input().split())    # 12 18
a3, b3 = map(int, input().split())    # 25 33
a4, b4 = map(int, input().split())    # 19 15
print(a1 + a2 + a3 + a4, b1 + b2 + b3 + b4, sep=' : ')   # 71 : 73

Жауабы: жоғарыдағы программа; мысал үшін 71 : 73 шығарады.

№ 6

(Тапсырма, 6-тапсырма, екі жұлдызша.) Ежелгі Отырар өңірі тарихының ашылмаған сырлары көп. Адамзат тарихындағы ең ірі кітапханалардың қатарына саналатын Отырар кітапханасы жасырылған жер осы күнге дейін табылған жоқ. Рамазанның қолында кітаптар жасырылған жерді көрсететін карта бар (1-сурет). Осы картаға сүйеніп, оған кітаптар жасырылған жерге дейін баратын алгоритмді құрастыруға көмектес. Алгоритм «алға», «артқа», «оңға», «солға» командаларынан және әр бағытқа қанша жүру керегін көрсететін сандардан тұрады. Мысалы, оңға қарай 15 метр.

Қалай ойлаймыз. Картада пунктир сызық жолды көрсетеді. Үлкен ағаштың жанындағы төменгі айқыштан бастап, әр кесіндідегі жазуларды оқимыз. «Алға» — картада жоғары, «оңға» — оңға. Метрлерді жазулардан аламыз.

Шешуі. Картаны төменнен жоғары оқимыз (басы төмендегі ағаштың қасындағы айқыштан, соңы қазына сандығының жанында):

  1. оңға 15 м
  2. алға 20 м
  3. оңға 17 м
  4. алға 22 м
  5. (көпірмен өту жолы: картада ұзындығы көрсетілмеген)
  6. солға 30 м
  7. алға 40 м
  8. оңға 15 м
  9. (40 м кесіндінің алдындағы қысқа төмен түсу: ұзындығы көрсетілмеген)
  10. оңға 40 м
  11. алға 12 м: қазына

Жазуы бар барлық кесінділердің жалпы ұзындығын программамен есептейміз:

print(15 + 20 + 17 + 22 + 30 + 40 + 15 + 40 + 12)   # 211

Жауабы: жоғарыдағы командалардан тұратын алгоритм; жазуы бар кесінділердің қосындысы 211 м (жазусыз екі бөлік есепке алынбайды).

№ 7

(Тапсырма, 7-тапсырма, үш жұлдызша.) Құны $K$, $P$ және $N$ теңгелік монеталар көмегімен $S$ теңгені ең аз санмен қалай төлеуге болады? Тапсырманың блок-схемасын сызып, программасын құрастыр. $S$, $K$, $P$ және $N$ — бүтін сандар. Мысалдар: 217 10 5 1 нәтижесі 24 (21 + 1 + 2); 345 100 10 5 нәтижесі 8 (3 + 4 + 1).

Қалай ойлаймыз. Бұл 3.8 сабағындағы монеталар есебімен бірдей, тек номиналдар 1, 5, 10, 50, 100 емес, пернетақтадан енгізіледі. Алдымен ең ірі K монетасын, содан кейін P, содан кейін N аламыз. Блок-схема: Басы → S, K, P, N енгізу → есептеулер → шығару → Соңы.

Шешуі.

S, K, P, N = map(int, input().split())   # 217 10 5 1
c = S // K          # K теңгелік неше монета: 21
S = S % K           # қалғаны: 7
c = c + S // P      # плюс P теңгелік монеталар: 1
S = S % P           # қалғаны: 2
c = c + S // N      # плюс N теңгелік монеталар: 2
print(c)            # 24

Екінші мысалды тексеру: 345 // 100 = 3, қалдығы 45; 45 // 10 = 4, қалдығы 5; 5 // 5 = 1; қосынды 3 + 4 + 1 = 8.

💡 Мұндай «ашкөз» әдіс әр номинал келесісіне бөлінгенде жұмыс істейді (100, 10, 5 немесе 10, 5, 1 сияқты). Таңғаларлық номинал жиындарында, мысалы 1, 6 және 10 үшін, ол қателесуі мүмкін: 12 теңге 10 + 1 + 1 (3 монета) болып шығады, ал 6 + 6 (2 монета) болуы да мүмкін. Біздің есепте олай емес.

Жауабы: жоғарыдағы программа; жауаптары 24 және 8.

№ 8

(Тапсырма, 8-тапсырма, екі жұлдызша.) 1-ші, 2-блок-схемалардың Python тіліндегі программасын жаз. $a$, $b$, $c$ айнымалыларының берілген мәндерін блок-схемаға қойып, оның нәтижесін тап.

1-блок-схема: t = (a + b + c) % 10, k = (a * t) // 5, n = k + c, n шығару. Мәндері: а) a = 1, b = 2, c = 5; ә) a = 2, b = 4, c = 3.

2-блок-схема: m = (a + b) % 10 + (c + d) // 10, k = round((a + b + c + d)…, n = k ** 2 + 2 * m, n шығару. Мәндері: а) a = 5, b = 2, c = 6, d = 3; ә) a = 1, b = 1, c = 2, d = 2.

📕 2-блок-схемада k = round((a + b + c + d) деп басылған: жақшалар жабылмаған, мұндай жазбамен Python қате береді. Өрнектің бір бөлігі түсіп қалған. Төрт санға қарағанда, ол жерде, сірә, орташа мән тұр: round((a + b + c + d) / 4).

Қалай ойлаймыз. Блок-схема формулаларды береді. Реті: енгізу, жоғарыдан төмен қарай есептеулер, шығару. Мәндерді қойып, қадамдап есепте, % мен // туралы ұмытпа.

Шешуі.

1-блок-схема (программа):

a, b, c = map(int, input().split())
t = (a + b + c) % 10
k = (a * t) // 5
n = k + c
print(n)
  • а) a = 1, b = 2, c = 5: t = 8 % 10 = 8; k = (1 · 8) // 5 = 1; n = 1 + 5 = 6.
  • ә) a = 2, b = 4, c = 3: t = 9; k = (2 · 9) // 5 = 3; n = 3 + 3 = 6.

2-блок-схема (программа, жақшасы «орташа мән» деген болжаммен түзетілген):

a, b, c, d = map(int, input().split())
m = (a + b) % 10 + (c + d) // 10
k = round((a + b + c + d) / 4)
n = k ** 2 + 2 * m
print(n)
  • а) a = 5, b = 2, c = 6, d = 3: m = 7 % 10 + 9 // 10 = 7 + 0 = 7; қосынды 16, k = round(4.0) = 4; n = 16 + 14 = 30.
  • ә) a = 1, b = 1, c = 2, d = 2: m = 2 + 0 = 2; қосынды 6, k = round(1.5) = 2; n = 4 + 4 = 8.

Жауабы: 1-блок-схема: а) 6, ә) 6. 2-блок-схема (4-ке бөлгенде): а) 30, ә) 8.

№ 9

(Тапсырма, 9-тапсырма, екі жұлдызша.) 2-сурет бойынша $a$, $b$, $c$ айнымалысы бар программа құрастыр. Осы есептің программасы бойынша блок-схемасын жаса.

Қалай ойлаймыз. Суретте үш себет пен ыдыс бар, әрқайсысында өз әрпі тұр. Есепке сұрақ ойлап тап: барлығы неше жеміс немесе оларды қалай бөлуге болады.

Шешуі.

Шарты. Бір себетте a алма, екіншісінде b апельсин, ыдыста c алмұрт жатыр. Барлық жемісті қонақтарға арналған үш тәрелкеге теңдей бөліп салды. Әр тәрелкеде неше жеміс болады және неше жеміс артады?

Блок-схема қадамдар бойынша:

a = int(input())          # алма
b = int(input())          # апельсин
c = int(input())          # алмұрт
s = a + b + c             # барлығы жеміс
print(s // 3, s % 3)      # тәрелкеде және қалдық

Тексеру: 7, 4, 6 болса, s = 17, тәрелкеде 5, 2 қалады, программа 5 2 шығарады.

Жауабы: программасы мен блок-схемасы бар кез келген ұқсас есеп; мысалы жоғарыда.

№ 10

(Тапсырма, 10-тапсырма, үш жұлдызша.) 3-сурет бойынша $v_1$ және $v_2$ (жылдамдық), $t$ (уақыт), $S$ (қашықтық) айнымалылары қатысқан есеп мәтінін құрастыр. Осы есептің мәтіні бойынша оның блок-схемасын құр, программасын жаз.

Қалай ойлаймыз. Суретте екі велосипедші жолдың екі шетінен бір-біріне қарай келе жатыр, олардың арасы — S қашықтық. Байланыс қарапайым: t уақытта олар бірге (v₁ + v₂) · t қашықтыққа жақындайды.

Шешуі.

Шарты. Екі велосипедші түзу жолмен бір-біріне қарсы келе жатыр. Қазір араларында S км бар. Бірінші велосипедшінің жылдамдығы v₁ км/сағ, екіншісінікі v₂ км/сағ. t сағаттан кейін олардың арасы қанша болады (олар әлі кездескен жоқ) және олар неше сағаттан кейін кездеседі?

Блок-схема: Басы → S, v₁, v₂, t енгізу → есептеулер (d = S − (v₁ + v₂) · t, T = S / (v₁ + v₂)) → d және T шығару → Соңы.

S, v1, v2, t = map(int, input().split())   # 60 12 18 1
d = S - (v1 + v2) * t        # t сағаттан кейінгі қашықтық: 30
T = S / (v1 + v2)            # кездесуге дейінгі уақыт: 2.0
print(d, T)                  # 30 2.0

Тексеру: бір сағатта олар 12 + 18 = 30 км-ге жақындайды, 60 − 30 = 30 км қалады, ал олар 60 / 30 = 2 сағаттан кейін кездеседі.

Жауабы: жоғарыдағы программа; S = 60, v₁ = 12, v₂ = 18, t = 1 болғанда 30 2.0 шығарады.

Жадынама

  • Python-да көбейту белгісін әрқашан жазамыз: bx емес, b * x.
  • Бөлшекті жақшалары бар бөлу арқылы жазамыз: (a + b) / c.
  • Монеталар саны: // монеталарды санайды, % қалған ақшаны көрсетеді.
  • Математикалық жазбадағы тік жақшаларды Python-да дөңгелек жақшаға ауыстыр.

Шағын тест

← 3.8. Сызықтық алгоритмді программалау · 4.1. Нұсқама және сілтемелер →