Квиз на два начина¶
Разлика између обичних променљивих и листи најбоље се може уочити ако се исти проблем решава употребом једне, а затим и употребом друге врсте променљивих.
Задатак је да направиш један квиз, али на два начина.
Другим речима, пред тобом је креирање два програма у Scratch-у која дају исти резултат.
У првом програму, направићеш квиз помоћу обичних променљивих (које памте само један податак, вредност),
У другом програму, направићеш исти квиз помоћу листи (које представљају колекцију података, вредности).
Пре израде програма, потребно је да осмислиш до пет питања из једног или више наставних предмета које, у V разреду, учиш. За свако од питања треба да имаш записан тачан одговор.
Чим размотримо логику квиза, моћи ћеш да пређеш на програмирање.
Основни алгоритам за креирање квиза подразумева:
Постављање питања и чекање на одговор корисника
Упоређивање одговора корисника са тачним одговором
Извршавање једног низа блокова ако је одговор тачан, односно другог низа блокова ако је одговор нетачан.
Понављање прва три корака онолико пута колико има питања.
Квиз помоћу обичних променљивих¶
У првом програму користићемо обичну променљиву .
Нека питање буде Која је планета најближа Сунцу?. Ти знаш да је то Меркур.
Низањем оваквих блокова, у којима се једино мењају питања и одговори, лако се креира квиз. Имаш пет осмишљених питања и одговора. Направи Sctarch програм који проверава знање корисника.
Згодно би било да твој квиз броји тачне одговоре и приказује кориснику колики број поена има.
Право је време да уведеш променљиву .
Хајде да размислимо вредностима ове променљиве.
Колика треба да буде вредност променљиве на почетку програма (упиши број):
Јасно је да вредност променљиве треба да се увећа за 1 када корисник тачно одговори на питање.
Сада имаш све потребне елементе да направиш квиз. Ако ти је потребна помоћ - ту смо. Анализирај наше решење на адреси https://scratch.mit.edu/projects/171628696/. На располагању имаш и видео-лекцију Квиз..
Пре него што се посветимо изради квиза помоћу листи:
- Дужина скрипти квиз-програма направљеног помоћу обичних променљивих не зависи од броја питања.
- Предлажемо ти да додаш још два питања и донесеш закључак о дужини скрипти.
- Квиз-програм направљен помоћу обичних променљивих мења дужину скрипти у зависности од броја питања.
- У праву си! Што је већи број питања, дужина скрипти је све већа.
Q-8: Размисли и означи тачну тврдњу:
Квиз помоћу листи¶
Креирање квиза коришћењем листи далеко је елегантније решење од претходног.
За почетак, треба да креираш две листе: и . Познат ти је поступак додавања елемената у листу.
Приликом уноса, важно је да повежеш питања са одговорима, тј. да редни број елемента у листи одговара редном броју елемента у листи . Погледај листе приказане на слици.
Уочаваш да питање на позицији 1 листе има одговор на позицији 1 листе . Овај принцип односи се и на остале елементе листи.
Оваква структура неопходна нам је због спаривања питања са тачним одговором и врло згодна за унапређивање динамике нашег квиза. Уместо да се квиз извршава сваки пут на исти начин, листе ће нам омогућити разноврсност!
Хајде да размишљамо о насумичном одабиру питања из листе .
Ако рачунару кажемо да насумично одабере питање, нећемо знати које питање бира, а самим тим нећемо знати који је тачан одговор на њега.
У овој ситуацији, згодно нам је да користимо обичну променљиву у којој ћемо чувати број насумично одабраног питања.
- Овај број нам је неопходан да бисмо могли да упоредимо одговор корисника са тачним одговором (елементом листе Одговори).
- Редни број питања одговара редном броју одговора.
- Овај број нам је неопходан да бисмо знали да су постављена сва питања.
- Насумичан одабир питања не гарантује да ће сва питања бити постављена, без обзира на чување редног броја насумично одабраног питања.
Q-9: Зашто је потребно да чувамо редни број (положај у листи) насумично одабраног питања?
Дакле, креираћемо променљиву .
Наредни корак јесте обезбеђивање да променљива узме насумичну вредност од 1 до 3. Наравно, број 3 узимамо зато што је дужина наших листи 3 (оне садрже по три елемента).
Да ли је овакво размишљање заиста оправдано? Шта ако будемо желели да додамо елементе у листе?
Далеко елегантније решење је да наша променљива узме насумичну вредност од 1 до величине листе (броја елемената у листи).
Читаву ову заврзламу радили смо да би стигли до могућности да кориснику поставимо питање следећег облика:
Наш програм поставља кориснику под редним бројем сачуваним у променљивој и чека на одговор корисника.
Следи поређење корисниковог одговора са тачним одговором.
Ако све ово ставимо у контекст, скрипта у којој постављамо питање кориснику, упоређујемо његов одговор са тачним и извршавамо гранање изгледа као на слици.
Остало је да бројимо бодове и понављамо насумични избор питања из листе.
Ако ти се израда квиза уз помоћ листи учинила сувише сложеном, не брини. Наше решење налази се на адреси https://scratch.mit.edu/projects/171628825/. Као и увек, помоћ можеш да нађеш у видео лекцији Квиз и листе.
И, пре него што пређеш на последњу станицу нашег путовања кроз основе програмирања у Scratch-у, желимо да ти покажемо скрипте квиза програмираног уз помоћ обичних променљивих и уз помоћ листи.
Додавањем нових питања, прва скрипта би се увећавала, док би друга остала неизмењена.
Значи, вредело је помучити се са листама. Браво за тебе!