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

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

3.8. Сызықтық алгоритмді программалау

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

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

  • Сызықтық алгоритмнің не екенін түсіндіруді және мысал келтіруді.
  • Есептің шешімін төрт кезеңмен жазуды: деректер, нәтиже, алгоритм, тексеру.
  • Блок-схеманы оқып, оны Python программасына айналдыруды.
  • Монеталарға, цифрларға және қалдықтарға арналған есептерде // және % қолдануды.

Ой қозғау

  • Алгоритмнің қандай түрлері бар? Үшеу: сызықтық, тармақталу және циклдік.
  • Олардың қайсысы ең қарапайым? Сызықтық: командалар бірінен соң бірі, ретімен, бір реттен орындалады.
  • Өмірден мысал келтір. Тіс тазалау, рюкзак жинау, телефонда ойынды қосу: 1-қадам, 2-қадам, 3-қадам, сол ғана.
  • Программаға input() не үшін керек? Ол кодқа жазылған бір санға емес, кез келген деректерге есепті шығара алуы үшін.

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

Сызықтық алгоритм: «егер» де, «қайтала» да жоқ

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

📌 Сызықтық алгоритм — командалары ретімен, бір реттен орындалатын және соңында нәтиже алынатын алгоритм.

Код жазар алдындағы төрт қадам

Тәжірибелі программистер бірден теруге асықпайды. Олар алдымен ойланады.

💡 Программистер айнымалылардың атын идентификаторлар дейді. Түсінікті ат таңда: price, count, ал x1q емес.

Есепті түгел талдаймыз

$a$, $b$, $c$ және $d$ бүтін сандары берілген. $a$ және $b$ сандарының қосындысы мен $c$ және $d$ сандары айырмасының соңғы цифрларының көбейтіндісін табатын программа құрастыр.

Мысалы: енгізу 15 47 және 98 63. Қосынды 15 + 47 = 62, соңғы цифры 2. Айырма 98 − 63 = 35, соңғы цифры 5. Көбейтінді 2 · 5 = 10.

Соңғы цифрды қалай аламыз? 10-ға бөлгендегі қалдық арқылы: 62 % 10 = 2.

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

блок не істейміз Python коды
Басы алгоритмнің басталуы
Енгізу a, b, c, d енгіземіз a, b = map(int, input().split(' ')) және c, d = map(int, input().split(' '))
Есептеулер қосынды мен айырманың цифрлары, содан кейін көбейтінді t = (a + b) % 10, k = (c - d) % 10, n = t * k
Шығару нәтижені көрсетеміз print(n)
Соңы аяқталуы

Толық программа:

a, b = map(int, input().split())    # енгіземіз: 15 47
c, d = map(int, input().split())    # енгіземіз: 98 63
t = (a + b) % 10                    # қосындының соңғы цифры: 2
k = (c - d) % 10                    # айырманың соңғы цифры: 5
n = t * k                           # көбейтінді: 10
print(n)                            # 10

⚠️ Жиі кететін қате. Егер c - d айырмасы теріс шықса, Python бәрібір теріс емес қалдық қайтарады: (-12) % 10 нәтижесі 2 емес, 8 болады. Бұл есепте оқулық кәдімгі сандар алады, сондықтан бәрі дұрыс, бірақ мұндай ерекшелікті есте ұстаған жөн.

📌 Санды бөлгендегі қалдық — %, бүтін бөлігі — //. Бірге олар санды «бөлшектеп» береді: 477 // 100 = 4 жүздік, 477 % 100 = 77 қалдық.

Монеталар туралы мысал: қанша дана керек

1, 5, 10, 50 және 100 теңгелік монеталар бар. S теңгені ең аз монетамен қалай төлеуге болады? Алдымен ең ірі монеталарды сыйғанынша аламыз, содан кейін келесілерін, және солай жалғастырамыз.

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

  • Қандай алгоритмді сызықтық деп атайды? Командалар бір рет, ретімен орындалғанда нәтиже алынатын алгоритмді. Мысалдар: рецепт, сатып алынған заттың құнын есептеу.
  • Сызықтық программаны құру қандай кезеңдерден тұрады? Деректер мен олардың типтерін анықтаймыз; нәтиже мен оның типін анықтаймыз; енгізуді, есептеуді және шығаруды дайындаймыз; программаны әртүрлі деректермен тексереміз.
  • Нәтижені қалай шығарамыз? print() командасымен.

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

№ 1

(Практикада қолдану, «1-практикалық тапсырма».) $S$ теңгені құны 1, 5, 10, 50 және 100 теңгелік монеталар көмегімен ең аз нұсқада қалай төлеуге болады? Тапсырманың блок-схемасын сызып, программасын құрастыр. $S$ ($0 < S < 100000$) — бүтін сан. Мысалдар: 477 нәтижесі 10; 340 нәтижесі 7.

Қалай ойлаймыз. Монета аз болу үшін монеталарды ірісінен ұсағына қарай аламыз. Берілген номиналдан неше монета сыятынын // көрсетеді, қанша ақша қалатынын % көрсетеді.

Шешуі. Бес блоктан тұратын блок-схема: Басы → S енгізу → есептеулер (әр номинал бойынша) → P шығару → Соңы.

S = int(input())            # сома, мысалы 477
P = 0                       # P монеталарды санайды
K = S // 100; P += K; S %= 100   # 100 теңгелік неше монета, қалдық
K = S // 50;  P += K; S %= 50    # 50 теңгелік
K = S // 10;  P += K; S %= 10    # 10 теңгелік
K = S // 5;   P += K; S %= 5     # 5 теңгелік
P += S                      # қалдықты 1 теңгелік монетамен төлейміз
print(P)                    # 477 -> 10

P += K дегені «P-ға K-ны қос» дегенді білдіреді. 340 үшін 3 + 0 + 4 + 0 = 7 монета шығады.

📕 Оқулықта программаны орындау барысында «инкремент операторын қолданамыз» делінген. Python-да инкремент операторы (++) жоқ. Мұнда P += K жазбасы қолданылған: бұл — «қосып меншіктеу». Нәтиже бірдей: айнымалының мәні артады.

Жауабы: жоғарыдағы программа; 477 теңге — 10 монета, 340 теңге — 7 монета.

№ 2

(Практикада қолдану, «Талдау».) Практикалық тапсырмадағы 1-кодқа талдау жасаңдар. $S = 789$ болған жағдайда программа кодының әр қатарындағы айнымалылардың мәні қалай өзгеретінін қағазға есептеңдер.

Қалай ойлаймыз. Қатарлар бойынша жүріп, дәптердегідей S, K және P «кестесін» жүргіземіз.

Шешуі. Кесте:

қадам K P S
басы 0 789
100 бойынша 7 7 89
50 бойынша 1 8 39
10 бойынша 3 11 9
5 бойынша 1 12 4
1 бойынша 16 4

Тексеру: 700 + 50 + 30 + 5 + 4 = 789.

Жауабы: P = 16 монета.

№ 3

(Практикада қолдану, «Жинақтау».) Төмендегі программа кодының синтаксисіндегі қателерді анықтаңдар. Бұл программа нені есептейді? Өз ұсыныстарыңды айтыңдар.

a = int(input())
b = int(input))
c = int(input())
v: = a * bc
S = 2 (a * b + b * c + ac)
print (V, , S)

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

Шешуі. Қателер қатарлар бойынша:

  1. 2-қатар: input)) — () жұбының орнына жабылатын жақша. Дұрысы int(input()).
  2. 4-қатар: v: = a * bc — меншіктеуде қос нүкте қажет емес, ал bc жазбасын Python бір ат деп оқиды. Дұрысы: V = a * b * c. Сонымен қатар V аты print-тегімен сәйкес келуі керек: 4-қатарда әріп кіші, соңғысында үлкен, ал Python үшін бұлар әртүрлі айнымалылар.
  3. 5-қатар: 2 (a * b ...) — екіліктен кейін * түсіп қалған; ac деп емес, a * c деп жазу керек. Дұрысы: S = 2 * (a * b + b * c + a * c).
  4. 6-қатар: қатарынан екі үтір. Дұрысы: print(V, S).

Түзетілген код:

a = int(input())
b = int(input())
c = int(input())
V = a * b * c                          # көлем
S = 2 * (a * b + b * c + a * c)        # бет көлемі
print(V, S)

a = 2, b = 3, c = 4 болғанда 24 52 шығарады.

Жауабы: программа қабырғалары a, b, c болатын тік бұрышты параллелепипедтің (қорапшаның) көлемі V мен беттерінің ауданы S-ті есептейді.

№ 4

(Практикада қолдану, «Бағалау».) Күнделікті өмірмен байланыстыра отырып, сызықтық алгоритмдердің маңыздылығына баға беріңдер.

Қалай ойлаймыз. Өзің «қадамдап» неше нәрсе істейтініңді еске түсір: таңертеңгі шаруалар, тамақ әзірлеу, телефонды зарядтау.

Жауап үлгісі. Сызықтық алгоритмдер бізді барлық жерде қоршап тұр: тамақ рецепті, конструкторды нұсқаумен жинау, Wi-Fi-ға қосылу реті. Олар маңызды, себебі басқа алгоритмдердің бәрі солардан құралады. Қарапайым тізбектерді сипаттауды үйренген соң, оларға шарттар мен қайталауларды қоса аласың.

Жауабы: сызықтық алгоритмдердің маңызы өте зор: олар нұсқаулар мен программалардың негізінде жатыр, бұл — ең қарапайым әрі сенімді түрі.

№ 5

(Ойлануға берілген сұрақтар, № 1.) Қандай алгоритмді «сызықтық» деп атайды? Сызықтық алгоритмге мысалдар келтір.

Қалай ойлаймыз. «Ретімен» деген сөзді еске түсір.

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

Жауабы: командалар бір рет ретімен орындалғанда нәтиже алынатын алгоритм.

№ 6

(Ойлануға берілген сұрақтар, № 2.) Сызықтық құрылымдағы программаны құрастыру қандай қадамдардан тұрады?

Қалай ойлаймыз. Төрт қадамнан тұратын сызбаны еске түсір.

Шешуі. 1) Бастапқы деректер мен олардың типтерін анықтау, айнымалыларға ат беру. 2) Нәтижені, оның типі мен атын анықтау. 3) Енгізуді, есептеуді және шығаруды дайындау. 4) Программаны әртүрлі бастапқы деректермен тексеру.

Жауабы: деректер, нәтиже, алгоритм (енгізу, есептеулер, шығару), тексеру.

№ 7

(Ойлануға берілген сұрақтар, № 3.) Осы қадамдардың арасындағы ең маңыздысы қайсысы?

Қалай ойлаймыз. Мұнда жалғыз «дұрыс» жауап жоқ, өз таңдауыңды түсіндіру маңызды.

Жауап үлгісі. Менің ойымша, ең маңызды — бірінші қадам: деректер мен нәтижені дұрыс түсінбесең, программа басқа есепті шығарады. Бірақ соңында тексерусіз де болмайды: ол өзің байқамаған қателерді ұстайды.

Жауабы: түсіндірмесі бар өз пікірің; көбіне деректер мен нәтижені анықтауды немесе әртүрлі мәндермен тексеруді атайды.

№ 8

(Ойлануға берілген сұрақтар, № 4.) Сызықтық программаның нәтижесін экранға қалай шығарады?

Қалай ойлаймыз. Деректерді қай функция шығарады?

Жауап үлгісі. print() көмегімен. Бір мәнді шығаруға болады: print(n), бірнешеуін бос орынмен бөліп: print(V, S), немесе бөлгішпен: print(V, S, sep=' | '). Әрқайсысы жаңа жолда болуы керек болса, end='\n' қолданады немесе бірнеше print жазады.

Жауабы: print() функциясымен, қажет болса sep және end параметрлерімен.

№ 9

(Тапсырма, 1-тапсырма, екі жұлдызша.) Самат шотланд жазушысы Роберт Льюис Стивенсонның «Қазына аралы» атты романын қызыға оқыды. Самат қазына жасырылған картаны тауып алды. Картада қазынаны іздеу үшін мынадай түсінік берілген: «Картаның ортасына салынған ағаштың түбінен солтүстікке қарай 30, шығысқа қарай 20, оңтүстікке қарай 10, батысқа қарай 30, оңтүстікке қарай 10, шығысқа қарай 50 қадам жүр». Картадағы қозғалыс алгоритмін құрастыр. Қозғалысты сипаттау үшін «оңға», «солға», «алға», «артқа» командаларын қолдан. Мысалы, бірінші — алға 30 м. Парақтың әр торкөзін 10 қадамға тең деп алып, Саматтың қазына іздеудегі қозғалыс графигін сыз.

Қалай ойлаймыз. Картада солтүстік — «алға» (жоғары), шығыс — «оңға», оңтүстік — «артқа» (төмен), батыс — «солға». Жолдың басын (ағашты) (0; 0) нүктесі деп алып, әр командадан кейін координаттардың қалай өзгеретінін жазамыз.

Шешуі.

Алгоритм:

  1. алға 30
  2. оңға 20
  3. артқа 10
  4. солға 30
  5. артқа 10
  6. оңға 50

График (1 торкөз = 10 қадам): жол (0; 0) нүктесінен басталады, содан кейін (0; 3), (2; 3), (2; 2), (−1; 2), (−1; 1) нүктелерінен өтіп, (4; 1) нүктесінде аяқталады.

Программамен де тексеруге болады: ол ығысуларды қосады.

x = 0; y = 0          # ағаш
y += 30               # алға 30
x += 20               # оңға 20
y -= 10               # артқа 10
x -= 30               # солға 30
y -= 10               # артқа 10
x += 50               # оңға 50
print(x, y)           # 40 10

Қазына ағаштан шығысқа қарай 40 қадамда және солтүстікке қарай 10 қадамда жатыр.

Жауабы: жоғарыдағы алты командадан тұратын алгоритм; қазына ағаштан (40; 10) қадам жерде, графикте ол — (4; 1) торкөзі.

№ 10

(Тапсырма, 2-тапсырма, екі жұлдызша.) Тек қана цифрлардан құралған $a$, $b$ және $c$ жолдары берілген. 1) Жолдарды қосып, экранға шығар. 2) Жолдарды бүтін санға айналдырып, олардың қосындысын тап. Мысалы: енгізу 214, 456, 300, шығару 214456300 және 970.

Қалай ойлаймыз. Жолдарды + белгісімен «жапсыруға» болады: '12' + '34' нәтижесі '1234'. Сан ретінде қосу үшін оларды алдымен int-ке айналдырады.

Шешуі.

a = input()                      # 214
b = input()                      # 456
c = input()                      # 300
print(a + b + c)                 # тұтас: 214456300
print(int(a) + int(b) + int(c))  # сан ретінде: 970

Жауабы: 214456300 және 970.

№ 11

(Үй тапсырмасы.) Төменде берілген программа кодында $a = 486$ болса, онда қандай нәтиже аламыз? Программаның қызметін анықта.

a = int(input())
x = a // 100
y = (a // 10) % 10
z = a % 10
b = x * 100 + z
print(b)

Қалай ойлаймыз. Санды цифрларға бөл: жүздіктер, ондықтар, бірліктер.

Шешуі. a = 486.

  • x = 486 // 100 = 4: жүздік цифры;
  • y = (486 // 10) % 10 = 48 % 10 = 8: ондық цифры;
  • z = 486 % 10 = 6: бірлік цифры;
  • b = 4 * 100 + 6 = 406.

Программа үш таңбалы санды цифрларға жіктеп, ондық цифры нөлге ауыстырылған жаңа санды құрастырады. y айнымалысы есептеледі, бірақ нәтижеге қатыспайды.

Жауабы: 406. Программа үш таңбалы санның цифрларын бөліп алып, ондық цифрын нөлге айналдырады.

Жадынама

  • Санның соңғы цифры — n % 10, соңғы цифрсыз сан — n // 10.
  • Монеталарды ірісінен ұсағына қарай санаймыз: // неше дана екенін, % қанша ақша қалғанын көрсетеді.
  • Код жазар алдында деректерді, нәтижені және алгоритм блоктарын жаз.

Шағын тест

← 3.7. Санды енгізу және шығару · 3.9. Практикалық жұмыс →