Shanraq.org Shanraq.org
Көшірмей қайталау және тоқтау шарты
Қоғам

Информатика: өз цифрлық көмекшімізді жасаймыз 23-сабақ (барлығы 26)

Көшірмей қайталау және тоқтау шарты

Командаларды көшірмей барлық тапсырманы қараймыз және қайталау аяқталатынын дәлелдейміз.

Картадағы орнымыз

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

Көшірмей қайталау және тоқтау шарты

Жағдай және сұрақ

Көмекшіде үш тапсырма бар. «Тапсырманы тексер» командасын үш рет жазу оңай. Ертең тапсырма отыз болса, оны отыз рет көшіру қисынсыз. Бір қайталанатын қадам мен айқын тоқтау сәті қажет.

Жаңа сөздерді анық түсінейік

Цикл элемент қалғанша не шарт орындалғанша әрекетті қайталайды. Итерация — циклдің бір айналымы. Санағыш өңделген элементтер санын сақтайды. Тоқтау шарты қайталау қашан бітерін көрсетеді. Цикл инварианты — әр айналымға дейін және кейін ақиқат болатын пікір: «ағымдағы орынға дейінгі жазбалар тексерілді, кейінгілері әлі жоқ». Шексіз цикл шығу шарты ешқашан орындалмаса, мысалы орын өспесе, пайда болады. Бос тізім де маңызды тест: цикл қатесіз аяқталып, орындалғандар саны 0 болуы тиіс.

Сабақтың тірек сигналы

орын = 0 → орын < ұзындық кезінде → өңдеу → орын + 1 → тоқтау

Қадамдап талдаймыз

t-01, t-02, t-03 үшін done: false, true, false. Басы: position=0, completed=0. Бірінші айналым: false, санағыш 0, орын 1. Екінші: true, санағыш 1, орын 2. Үшінші: false, санағыш 1, орын 3. Енді position < 3 жалған, жауап 1. Әр айналымда инвариантты тексеріңіз: санағыш тек қаралған бөліктегі true санымен тең. Орын оқуға дейін өссе, бірінші тапсырма қалып қояды. Мүлде өспесе, цикл бітпейді.

Қолмен тексеру

false, true, false үш карточкасын қатар қойып, орын фишкасын тек оңға жылжытыңыз. Әр қадам алдында неше карточка қаралғанын және неше true табылғанын айтыңыз; қадамнан кейін екеуін де тексеріңіз. 3-орында қаралмаған карточка қалмайды: әрі жүруге болмайды. Бос қатармен қайталаңыз: орын бірден ұзындыққа тең, цикл басталмайды. Осы екі тәжірибе инвариантты да, тоқтауды да көрсетеді.

Болжаңыз және тексеріңіз

Бос тізімнің нәтижесі қандай? 0: шарт бірден жалған. true, true, true үшін 3; false, false, false үшін 0. Төрт жазбаға неше айналым керек? Орын әр айналымда бір рет өссе, дәл төрт.

Қатені табыңыз

«Соңғысын өткізбеу үшін position <= length жазамыз». Орын ұзындыққа тең кезде ол жерде жазба жоқ: жарамды индекстер 0-ден length − 1-ге дейін. Таңбаны түзетіп, бір элементпен тексеріңіз.

Жаңа жағдайға көшіру

Санаудың орнына алғашқы орындалмаған тапсырманы табыңыз. Тізім соңына жетпей тоқтауға бола ма? Иә, нәтиже табылса. Бірақ мұндай ерте шығу барлық орындалғанды санауға жарамайды.

Жобаға енгізілетін өзгеріс

ALGORITHM-kz.md ішіне done=true санау циклін үш айналымдық кестемен жазыңыз. Инвариант пен тоқтау шартын қосыңыз. Бос тізімді, бір элементті және үш бастапқы тапсырманы тексеріңіз. Әзірге алгоритм tasks.json файлын өзгертпейді.

Тапсырма және дәлел

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

1, 7 және 30 күннен кейін қайталау

Ертең бос тізім неге қауіпсіз екенін түсіндіріңіз. Жеті күннен соң алғашқы орындалмағанды іздеуді бақылаңыз. Бір айдан кейін кодыңыздағы циклдің тоқтауын тексеріңіз.

Келесі сабақ: Функция уәде ретінде: кіріс, нәтиже және шарттар

Мәтінде қате не теру қатесі кездессе, бізге айтыңыз

Жоба дәлелін тексеру

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

Тексеру үшін кіру керек. Кіру

Пікірлер (0)

Әзірге пікір жоқ. Бірінші болыңыз.