Shanraq.org Shanraq.org
Функция уәде ретінде: кіріс, нәтиже және шарттар
Қоғам

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

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

Мерзім тексерісін кірісі, шығысы және қате кезіндегі тәртібі анық жеке функцияға бөлеміз.

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

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

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

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

«Еске салу керек пе?» сұрағы тапсырма тізімінде де, карточкасында да қажет. Ережені екі рет көшірсеңіз, бір айдан соң біреуін ғана түзетуіңіз мүмкін. Бір функция және оның тәртібі туралы жазбаша келісім керек.

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

Функция — кіріс алып, нәтиже қайтаратын аталған алгоритм бөлігі. Параметр — сипаттама ішіндегі кіріс атауы; аргумент — берілген нақты мән. Қайтарылатын мән — функция жауабы, міндетті түрде экрандағы хабар емес. Алғышарт қандай кіріс жарамды екенін көрсетеді. Соңғы шарт жарамды кіріс үшін кепілденетін нәтижені айтады. Келісім осы ережелер мен қате кезіндегі тәртіпті біріктіреді. Функцияның жанама әсері болуы мүмкін, бірақ мерзімді тексеру функциясына файлды өзгертпеуді айқын талап етеміз.

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

кіріс + алғышарт → бір функция → нәтиже + кепілдік

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

should_remind(done, days_to_due) сипаттаңыз. Кіріс: логикалық done және бүтін қалған күн саны не мерзімнің жоқтығы. Шығыс: REMIND, NOT_YET, OVERDUE, NO_DATE, DONE. Реті: done=true болса, DONE; мерзім жоқ болса, NO_DATE; күн теріс болса, OVERDUE; 2-ден аспаса, REMIND; өзгеше болса, NOT_YET. (false,2) үшін REMIND, (false,3) үшін NOT_YET, (true,2) үшін DONE. Шақырғанда файл өзгермейді: экран функциядан қанша рет сұраса да қауіпсіз.

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

Сыныптасыңыз функция болсын: оған done және days_to_due карточкаларын беріңіз, ол дәл бір жауап карточкасын қайтарады. Алдымен done=true, мерзім жоқ: жауап DONE, өйткені орындалу мерзімнен бұрын тексеріледі. Кейін done=false, мерзім жоқ: енді NO_DATE. Әр жағдайға қайтару жебесін салыңыз. Серігіңіз екі жауап берсе немесе үндемесе, функция келісімін нақтылаңыз. Жауап алу үшін бастапқы тапсырманы өзгертуге болмайды.

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

(false,-1) жауабы? OVERDUE; (false,None)? NO_DATE; (true,None)? Таңдалған реттілік бойынша DONE. Біреу орындалған тапсырмада да NO_DATE дегенді қаласа, ол өзге келісім; оны жазып, барлық жерде бірдей қолдану қажет.

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

«Мерзім жоқ болса, оны 0 күн деп алайық». Нөл — бүгін, ал жоқ мән — белгісіз. Екеуін араластыру жалған еске салу туғызады. Кіріс түрін не жеке тармақты түзетіңіз.

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

count_done(tasks) функциясын сипаттаңыз: кірісі тапсырма тізімі, шығысы бүтін сан. Алғышарт: әр жазбаның done мәні логикалық. Соңғы шарт: нәтиже 0 мен тізім ұзындығы арасында; тізім өзгермейді.

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

ALGORITHM-kz.md ішіне should_remind келісімін қосыңыз: кірістер, бес шығыс, мерзім жоқ ережесі және «файлды өзгертпейді» кепілдігі. 22-сабақтағы шекара тексерісіне байланыстырыңыз.

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

Өзге оқушыға тек келісімді беріңіз. Ол сызбаға қарамай бес нәтижені табуы тиіс. Содан кейін екі тексеріс ретін ауыстырып, жауап өзгеретін кірісті табыңыз. Дәлел — келісім мен қарсы мысал.

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

Ертең параметр мен аргументті ажыратыңыз. Жеті күннен соң басқа функция келісімін жазыңыз. Бір айдан кейін Python-функцияның тәртібін осы уәделермен салыстырыңыз.

Келесі сабақ: Дұрыс әрі жеткілікті жылдам алгоритм

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

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

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

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

Пікірлер (0)

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