Kif tgħallem kif tegħleb id-diffikultajiet, u fl-istess ħin tikteb ċikli

Minkejja l-fatt li se nitkellmu dwar wieħed mis-suġġetti bażiċi, dan l-artikolu huwa miktub għal professjonisti b'esperjenza. L-għan huwa li juri x'kunċetti żbaljati għandhom dawk li jibdew fl-ipprogrammar. Għall-iżviluppaturi prattikanti, dawn il-problemi ilhom solvuti, minsija jew ma nnutaw xejn. L-artiklu jista 'jkun utli jekk f'daqqa waħda jkollok bżonn tgħin lil xi ħadd b'dan is-suġġett. L-artiklu jfassal paralleli ma' materjal minn diversi kotba dwar l-ipprogrammar ta' Schildt, Stroustrup, Okulov.

Is-suġġett dwar iċ-ċikli ntgħażel minħabba li ħafna nies huma esklużi minnu meta jħaddmu l-ipprogrammar.

Din it-teknika hija mfassla għal studenti dgħajfa. Bħala regola, nies b'saħħithom ma jeħlux fuq dan is-suġġett u m'hemmx għalfejn toħroġ b'tekniki speċjali għalihom. L-għan sekondarju tal-artiklu huwa li din it-teknika titmexxa mill-klassi "xogħlijiet għall-istudenti kollha, iżda għalliem wieħed biss" għall-klassi "xogħlijiet għall-istudenti kollha, l-għalliema kollha". Ma nitlobx oriġinalità assoluta. Jekk diġà qed tuża metodoloġija simili biex tgħallem dan is-suġġett, jekk jogħġbok ikteb kif tvarja l-verżjoni tiegħek. Jekk tiddeċiedi li tużah, għidilna kif marret. Jekk teknika simili hija deskritta fi ktieb, jekk jogħġbok ikteb l-isem.


Ħdimt fuq din it-teknika għal 4 snin, studja individwalment ma’ studenti ta’ livelli differenti ta’ taħriġ. B’kollox hemm madwar ħamsin student u elfejn siegħa ta’ klassijiet. Għall-ewwel, l-istudenti dejjem baqgħu mwaħħla fuq dan is-suġġett u telqu. Wara kull student, il-metodoloġija u l-materjali ġew aġġustati. Matul is-sena li għaddiet, l-istudenti ma baqgħux mwaħħlin fuq dan is-suġġett, għalhekk iddeċidejt li naqsam is-sejbiet tiegħi.

Għaliex tant ittri? Iċ-ċikli huma tant elementari!

Kif ktibt hawn fuq, għall-iżviluppaturi prattikanti u għal studenti b'saħħithom, il-kumplessità tal-kunċett ta 'loops tista' tiġi sottovalutata. Per eżempju, inti tista 'tagħti taħdita twila, ara nodding heads u għajnejn intelliġenti. Imma meta tipprova ssolvi kwalunkwe problema, jibdew l-istupor u l-problemi inspjegabbli. Wara l-lecture, l-istudenti probabbilment kellhom fehim parzjali biss. Is-sitwazzjoni hija aggravata mill-fatt li l-istudenti nfushom ma jistgħux jesprimu x’inhi eżattament id-delużjoni tagħhom.
Ġurnata waħda indunajt li l-istudenti pperċepew l-eżempji tiegħi bħala ġeroglifi. Jiġifieri, bħal biċċiet ta 'test indiviżibbli li fihom għandek bżonn iżżid xi ittra "maġika" u taħdem.
Xi drabi ndunajt li l-istudenti jaħsbu li biex issolvi problema speċifika għandek bżonn xi haga ohra disinn li għadni ma koprajtx. Għalkemm is-soluzzjoni kienet teħtieġ biss modifika żgħira tal-eżempju.

Allura ħriġt bl-idea li l-enfasi m'għandhiex tkun fuq is-sintassi tal-espressjonijiet, iżda fuq l-idea ta 'refactoring ta' kodiċi ripetittiv bl-użu ta 'loops. Ladarba l-istudenti jkunu ħakmu din l-idea, kwalunkwe sintassi tista 'titjieb bi ftit prattika.

Min u għaliex ngħallem?

Peress li m'hemmx eżamijiet tad-dħul, il-klassijiet jistgħu jinkludu studenti kemm b'saħħithom kif ukoll dgħajfa ħafna. Tista' taqra aktar dwar l-istudenti tiegħi fl-artiklu Ritratt ta' studenti tal-kors ta' filgħaxija
Istinkajt biex niżgura li kull min irid jitgħallem l-ipprogrammar jista’ jitgħallemha.
Il-klassijiet tiegħi jsiru individwalment u l-istudent iħallas flusu għal kull wieħed. Jidher li l-istudenti se jottimizzaw l-ispejjeż u jitolbu l-minimu. Madankollu, in-nies imorru għal klassijiet wiċċ imb wiċċ ma 'għalliem ħaj mhux għall-għarfien innifsu, iżda għall-kunfidenza ta' dak li jkunu tgħallmu, għal sensazzjoni ta 'progress u għall-approvazzjoni mill-espert (għalliem). Jekk l-istudenti ma jħossux progress fit-tagħlim tagħhom, jitilqu. B'mod ġenerali, il-klassijiet jistgħu jiġu strutturati sabiex l-istudenti jħossu progress fiż-żieda tan-numru ta 'strutturi familjari. Jiġifieri, l-ewwel nistudjaw filwaqt li fid-dettall, imbagħad nistudjaw għal, imbagħad nagħmlu filwaqt, u issa għandna kors elf u lejl lest, li fih iċ-ċikli biss jiġu studjati għal xahrejn, u fl-aħħar - student li kiteb librerija standard taħt dettatura. Madankollu, sabiex issolvi problemi prattiċi, għandek bżonn mhux biss għarfien tal-materjal, iżda wkoll indipendenza fl-applikazzjoni tiegħu u fit-tfittxija għal informazzjoni ġdida. Għalhekk, għal korsijiet wiċċ imb wiċċ, naħseb li l-prinċipju korrett huwa li tgħallem il-minimu u tinkoraġġixxi studju indipendenti ta 'sfumaturi u suġġetti relatati. Fis-suġġett tal-linji, inqis li l-bini filwaqt li huwa l-minimu. Tista 'tifhem il-prinċipju minnha. Billi tkun taf il-prinċipju, tista' tikkontrolla kemm għalik kif ukoll tagħmel lilek innifsek.

Biex tikseb ħakma tal-materjal minn studenti dgħajfa, id-deskrizzjoni tas-sintassi mhix biżżejjed. Huwa meħtieġ li jingħataw kompiti aktar sempliċi iżda varjati u tiddeskrivi eżempji f'aktar dettall. Fl-aħħar mill-aħħar, il-veloċità tal-iżvilupp hija limitata mill-kapaċità tal-istudent li jittrasforma l-espressjonijiet u jfittex mudelli. Għal studenti intelliġenti, il-biċċa l-kbira tal-inkarigi se jkunu boring. Meta tistudja magħhom, m'għandekx għalfejn tinsisti biex issolvi 100% tal-problemi. Il-materjal tiegħi jista' jarahom fuq github tiegħi. Veru, ir-repożitorju huwa aktar bħal grimoire ta 'warlock - ħadd ħliefi mhu se jifhem x'inhu fejn, u jekk tonqos mill-kontroll, tista' tiġnun

Il-metodoloġija hija orjentata lejn il-prattika

It-teorija hija spjegata bl-użu ta 'l-eżempju ta' soluzzjoni ta 'problema. Fi klassi fundamentali tal-ipprogrammar fejn il-fergħat u l-linji huma mgħallma, sempliċement mhux possibbli li tingħata taħdita utli dwar suġġett wieħed għal siegħa sħiħa. 15-20 minuta huma biżżejjed biex jispjegaw il-kunċett. Id-diffikultajiet ewlenin jinqalgħu meta jitwettqu kompiti prattiċi.
Għalliema tal-bidu jistgħu jaqtgħu l-operaturi, il-fergħat, il-linji, u l-arrays f'taħdita waħda. Iżda l-istudenti tagħhom se jiffaċċjaw il-problema li jassimilaw din l-informazzjoni.
Huwa meħtieġ mhux biss li tgħid il-materjal, iżda wkoll li jiġi żgurat li s-semmiegħa jifhmuh.

Il-fatt li nikkontrollaw suġġett huwa determinat minn kif l-istudent ilaħħaq max-xogħol indipendenti.
Jekk student irnexxielu jsolvi problema fuq suġġett mingħajr l-għajnuna ta 'għalliem, allura s-suġġett ġie mhaddma. Biex jiġi żgurat l-awtottestjar, kull kompitu huwa deskritt f'tabella b'xenarji tat-test. Il-kompiti għandhom ordni ċara. Taqbeż il-kompiti mhux rakkomandat. Jekk il-kompitu attwali huwa diffiċli wisq, allura ngħaddu għal dak li jmiss huwa inutli. Huwa saħansitra aktar ikkumplikat. Sabiex l-istudent ikun jista 'jikkontrolla l-kompitu kumpless attwali, diversi tekniki huma spjegati lilu billi juża l-eżempju tal-ewwel problema. Fil-fatt, il-kontenut kollu tas-suġġett jaqa' għal tekniki biex jingħelbu d-diffikultajiet. Iċ-ċikli huma aktar effett sekondarju.

L-ewwel kompitu huwa dejjem eżempju. It-tieni tvarja kemmxejn u titwettaq "b'mod indipendenti" immedjatament wara l-ewwel taħt is-superviżjoni ta 'għalliem. Il-kompiti sussegwenti kollha huma mmirati biex jagħtu attenzjoni għal diversi affarijiet żgħar li jistgħu jikkawżaw kunċetti żbaljati.

L-ispjegazzjoni tal-eżempju hija djalogu li fih l-istudent jeħtieġ li jsejjaħ lura l-propagazzjoni u l-cross-validation biex jiżgura li jkun ħakmu porzjon tal-materjal.

Inkun banali u ngħid li l-ewwel eżempju fuq is-suġġett huwa importanti ħafna. Jekk għandek il-materjal għal xogħol indipendenti estensiv, l-ommissjonijiet tal-ewwel eżempju jistgħu jiġu kkoreġuti. Jekk m'hemm xejn ieħor minbarra l-eżempju, allura l-istudent x'aktarx mhux se jegħleb is-suġġett.

Waqt li jew ghal?

Waħda mill-kwistjonijiet kontroversjali hija l-għażla tal-kostruzzjoni għall-eżempju: filwaqt li jew għal. Darba, ħabib tiegħi żviluppatur prattikanti mingħajr esperjenza ta 'tagħlim qatta' siegħa jikkonvinċini li l-for loop kien l-aktar faċli biex tifhem. L-argumenti mqassma għal "kollox fih huwa ċar u mqiegħed flok." Madankollu, il-kawża ewlenija tad-diffikultajiet għal dawk li jibdew reali hija l-idea taċ-ċiklu innifsu, u mhux il-kitba tiegħu. Jekk persuna ma tifhimx din l-idea, allura jkollha diffikultà bis-sintassi. Hekk kif l-idea tiġi realizzata, il-problemi tad-disinn tal-kodiċi jisparixxu waħedhom.

Fil-materjali tiegħi, it-tema tal-linji ssegwi t-tema tal-fergħat. Ix-xebh estern ta 'jekk u filwaqt jippermettilna nġibu analoġija diretta: "meta l-kundizzjoni fl-intestatura tkun vera, allura l-ġisem jiġi esegwit." L-unika partikolarità taċ-ċiklu hija li l-ġisem jiġi esegwit ħafna drabi.

It-tieni argument tiegħi huwa li filwaqt li teħtieġ inqas ifformattjar milli għal. Inqas ifformattjar ifisser inqas żbalji stupidi b'virgoli u parentesi nieqsa. Dawk li jibdew għadhom ma żviluppawx biżżejjed attenzjoni u metikolużità biex jevitaw awtomatikament l-iżbalji tas-sintassi.
It-tielet argument huwa spjegat f’ħafna kotba tajbin bħala l-ewwel argument.

Jekk l-istudent jista 'faċilment jittrasforma espressjonijiet, allura inti tista' titkellem dwar għal fil-mogħdija. L-istudent imbagħad jagħżel dak li jħobb l-aktar. Jekk it-trasformazzjonijiet jikkawżaw diffikultajiet, allura huwa aħjar li ma ttellifx l-attenzjoni tiegħek. Ħalli l-istudent l-ewwel isolvi kollox billi juża while. Ladarba inti ħadthom mhaddma s-suġġett tal-linji, inti tista 'tikteb mill-ġdid is-soluzzjonijiet għall-prattika ta' konverżjoni filwaqt li għall.
Postcondition loops huma kruha pjuttost rari. Jien ma nqatta’ l-ebda ħin fuqha xejn. Jekk student ikun ħakmu l-ideat li jidentifika l-mudelli u jittrasforma l-espressjonijiet, jista 'jidher mingħajr l-għajnuna tiegħi.

Meta nuri l-ewwel eżempju lil studenti b'saħħithom, niġbed l-attenzjoni għall-fatt li fl-ewwel eżempju huwa importanti li tirreġistra mhux biss is-soluzzjoni, iżda wkoll il-katina kollha ta 'azzjonijiet li wasslu għar-riżultat. Studenti għażżien jistgħu jittraskuraw il-kitba u jikkopjaw biss l-algoritmu finali. Jeħtieġ li jkunu konvinti li xi darba biċċa xogħol diffiċli se tiġi fi triqthom. Biex issolviha, ser ikollok bżonn issegwi l-passi bħal f'dan l-eżempju. Huwa għalhekk li huwa importanti li tirreġistra l-istadji kollha. Fil-problemi li ġejjin se jkun possibbli li titħalla biss il-verżjoni finali tas-soluzzjoni.

L-idea ewlenija tal-awtomazzjoni hija li nafdaw kompjuter biex jagħmel xogħol ta 'rutina għal persuna. Waħda mit-tekniki bażiċi hija kitba loops. Jintuża meta diversi azzjonijiet ripetuti identiċi jinkitbu fi programm wara xulxin.

Espliċitu huwa aħjar milli impliċitu

Jista 'jidher idea tajba li turi l-istess frażi diversi drabi fl-ewwel kompitu ta' looping. Pereżempju:

Hurrah, taħdem!
Hurrah, taħdem!
Hurrah, taħdem!
Hurrah, taħdem!
Hurrah, taħdem!
Hurrah, taħdem!
Hurrah, taħdem!
Hurrah, taħdem!

Din l-għażla hija ħażina minħabba li l-valur tal-kontro mhuwiex viżibbli fl-output. Din hija problema għal dawk li jibdew. Tissottovalutax tagħha. Għall-ewwel, dan il-kompitu kien l-ewwel, u l-kompitu li tinkiseb serje ta 'numri f'ordni axxendenti kien it-tieni. Kien meħtieġ li jiġu introdotti termini addizzjonali "ċiklu N darbiet" u "ċiklu minn A sa B", li huma essenzjalment l-istess ħaġa. Sabiex ma noħloqx entitajiet bla bżonn, iddeċidejt li nuri eżempju biss bl-output ta 'serje ta' numri. Ftit nies jirnexxielhom jitgħallmu kif iżommu kontro f'rashom u jimmudellaw l-imġieba ta 'programm f'rashom mingħajr preparazzjoni. Xi studenti l-ewwel jiltaqgħu ma 'mudellar mentali dwar is-suġġett taċ-ċikli.
Wara xi prattika, nagħti l-kompitu li nirrepeti l-istess test biex jiġi solvut b'mod indipendenti. Jekk l-ewwel tagħti counter viżibbli u mbagħad wieħed inviżibbli, l-istudenti jkollhom inqas problemi. Xi drabi l-ħjiel "tiktebx il-counter fuq l-iskrin" hija biżżejjed.

Oħrajn kif jispjegawh?

Fil-biċċa l-kbira tal-materjali edukattivi fuq l-Internet, is-sintassi taċ-ċiklu tingħata bħala parti minn "lezzjoni". Pereżempju, fuq developer.mozilla.org (bħalissa), bosta kostruzzjonijiet oħra huma deskritti flimkien mal-loop while. F'dan il-każ, id-disinji nfushom biss jingħataw fil-forma ta 'mudelli. Ir-riżultat tat-tnedija tagħhom huwa deskritt bil-kliem, iżda m'hemm l-ebda illustrazzjoni. Fl-opinjoni tiegħi, preżentazzjoni bħal din tas-suġġett timmultiplika l-utilità ta 'materjali bħal dawn b'żero. L-istudent jista 'jerġa' jikteb il-kodiċi u jmexxih hu stess, iżda xorta għandu bżonn standard għal tqabbil. Kif tista’ tifhem li eżempju nkiteb mill-ġdid b’mod korrett jekk m’hemm xejn x’tqabbel ir-riżultat?
Meta jingħata mudell biss, mingħajr eżempju, isir saħansitra aktar diffiċli għall-istudent. Kif tifhem li l-frammenti tal-kodiċi jitqiegħdu b'mod korrett fil-mudell? Tista' tipprova tikteb b'xi mod, u mbagħad run. Imma jekk ma jkunx hemm standard biex iqabbel ir-riżultat, allura t-tnedija lanqas ma tgħin.

Fil-kors C++ dwar l-Intuwittiv, is-sintassi tal-linja hija midfuna fit-tielet paġna tal-Lecture 4 dwar is-suġġett "operaturi". Meta tispjega s-sintassi tal-linji, titqiegħed enfasi speċjali fuq it-terminu "operatur". It-terminu huwa ppreżentat bħala sett ta’ fatti bħal “simbolu; din hija dikjarazzjoni", "{} hija dikjarazzjoni komposta", "il-korp tal-linja għandu jkun dikjarazzjoni". Ma nħobbx dan l-approċċ għax jidher li jaħbi relazzjonijiet importanti wara terminu wieħed. L-analiżi tal-kodiċi tas-sors ta' programm f'termini f'dan il-livell hija meħtieġa mill-iżviluppaturi tal-kompilaturi biex jimplimentaw l-ispeċifikazzjoni tal-lingwa, iżda mhux mill-istudenti bħala l-ewwel approssimazzjoni. Dawk ġodda għall-ipprogrammar rari huma metikolużi biżżejjed biex jagħtu attenzjoni daqshekk mill-qrib lit-termini. Hija persuna rari li tiftakar u tifhem kliem ġdid l-ewwel darba. Kważi ħadd ma jista' japplika b'mod korrett terminu li għadu kemm tgħallem. Għalhekk, l-istudenti jiksbu ħafna żbalji bħal "Ktibt filwaqt (a<7);{, iżda l-programm ma jaħdimx."
Fl-opinjoni tiegħi, fil-bidu huwa aħjar li tagħti s-sintassi tal-kostruzzjoni immedjatament bil-parentesi. L-għażla mingħajr parentesi għandha tiġi spjegata biss jekk l-istudent ikollu mistoqsija speċifika: "għaliex m'hemmx parentesi u taħdem."

Fil-ktieb tal-2012 ta 'Okulov "Fundamentals of Programming", introduzzjoni għal-linji tibda bil-mudell for, imbagħad tagħti rakkomandazzjonijiet għall-użu tiegħu, u mbagħad immedjatament tmur għat-taqsima sperimentali tal-lezzjoni. Nifhem li l-ktieb inkiteb għal dik il-minoranza ta’ studenti kapaċi ħafna li rari jiġu fil-klassijiet tiegħi.

Fil-kotba popolari, ir-riżultat tal-frammenti tal-kodiċi dejjem jinkiteb. Pereżempju, l-edizzjoni tal-8 "Java 2015. The Complete Guide" ta' Shildt. L-ewwel, jingħata mudell, imbagħad programm ta 'eżempju u immedjatament wara - ir-riżultat tal-eżekuzzjoni.

Bħala eżempju, ikkunsidra linja while li tagħmel il-maqlub
countdown li jibda minn 10, u eżattament 10 linji ta '"miżuri" huma murija:

//Продемонстрировать применение оператора цикла while
class While {
    public static void main(String args []) {
        int n = 10;
        while (n > 0) {
            System.out.println("такт " + n);
            n--;
        }
    }
}

Ladarba jitħaddem, dan il-programm joħroġ għaxar "ċikli" kif ġej:
такт 10
такт 9
такт 8
такт 7
такт 6
такт 5
такт 4
такт 3
такт 2
такт 1

L-approċċ li jiddeskrivi mudell, programm eżempju u r-riżultat tal-programm jintuża wkoll fil-ktieb "Javascript for Kids" u fil-kors js fuq w3schools.com. Il-format tal-paġna web saħansitra jippermetti li dan l-eżempju jkun interattiv.

Il-ktieb ta’ Stroustrup tal-2016 Prinċipji u Prattika li tuża C++ mar saħansitra aktar. L-ewwel pass huwa li tispjega x'riżultat għandu jinkiseb, u wara dan jintwera t-test tal-programm. Barra minn hekk, jieħdu mhux biss programm każwali bħala eżempju, iżda jagħtu eskursjoni fl-istorja. Dan jgħin biex tiġbed l- attenzjoni lejha: “Ara, dan mhux biss xi test inutli. Inti tara xi ħaġa sinifikanti."

Bħala eżempju ta' iterazzjoni, ikkunsidra l-ewwel programm esegwit fuq magna tal-programm maħżuna (EDSAC). Inkiteb minn David Wheeler fil-Laboratorju tal-Kompjuter tal-Università ta’ Cambridge, l-Ingilterra fis-6 ta’ Mejju, 1949. Dan il-programm jikkalkula u jistampa lista sempliċi ta' kwadri.
0 0
1 1
2 4
3 9
4 16
...
98 9604
99 9801

Hawnhekk, kull linja fiha numru segwit minn karattru tab ('t') u l-kwadru ta' dak in-numru. Il-verżjoni C++ ta’ dan il-programm tidher bħal din:

//Вычисляем и распечатываем таблицу квадратов чисел 0-99
int main()
{
    int i = 0; // Начинаем с нуля
    while(i < 100){
        cout << i << 't' << square(i) << 'n';
        ++i;
    }
}

Interessanti, il-mudell tas-sintassi mhuwiex deskritt f'dan il-ktieb. Stroustrup fil-manwal tal-għalliem (traduzzjoni) jenfasizza li tirrispetta l-intelliġenza tal-istudenti tagħha. Forsi l-abbiltà li tidentifika mudell f'diversi eżempji hija meqjusa bħala manifestazzjoni ta 'tali intelliġenza.

Kif nispjega lili nnifsi

L-approċċ ta 'Stroustrup: tiddeskrivi r-riżultat, imbagħad issolvi l-problema, u mbagħad analiżi indipendenti mill-istudent - tidher l-aktar maħsub. Għalhekk, iddeċidejt li nieħuha bħala bażi, imma għidha bl-użu ta 'eżempju inqas storiku - il-kompitu li toħroġ "werrej". Jifforma ankra rikonoxxibbli sabiex imbagħad tkun tista 'tgħid "ftakar il-kompitu dwar il-werrej" u sabiex l-istudenti jiftakru eżattament dan. Fl-eżempju tiegħi, ippruvajt nipprevjeni tnejn oħra mill-aktar kunċetti żbaljati komuni. Sussegwentement se nikteb dwarhom f'aktar dettall.

F'dan il-kompitu aħna introdotti għal tekniki biex isolvu problemi kumplessi. Id-deċiżjoni inizjali jeħtieġ li ssir primittiva u sempliċi. Ukoll, allura tista 'taħseb dwar kif ittejjeb din is-soluzzjoni.
Введение
Глава 1
Глава 2
Глава 3
Глава 4
Глава 5
Глава 6
Глава 7
Заключение

Skont l-osservazzjonijiet tiegħi, l-approċċ "mudell-eżempju-riżultat" f'kombinazzjonijiet varji għadu jwassal għall-fatt li l-istudenti jipperċepixxu ċ-ċiklu bħala ġeroglif. Dan wera ruħu fil-fatt li ma fehmux għaliex kien hemm kundizzjoni biex tikteb hemm, kif tagħżel bejn i++ u i— u affarijiet oħra li jidhru ovvji. Biex jiġu evitati dawn il-kunċetti żbaljati, l-approċċ biex titkellem dwar iċ-ċikli għandu jenfasizza t-tifsira li tirrepeti azzjonijiet identiċi u mbagħad biss tifformalizzahom bl-użu ta 'struttura. Għalhekk, qabel ma tagħti s-sintassi tal-linja, trid issolvi l-problema head-on. Soluzzjoni primittiva għall-problema tal-kontenut tidher bħal din:

Console.WriteLine("Введение");
Console.WriteLine("Глава 1");
Console.WriteLine("Глава 2");
Console.WriteLine("Глава 3");
Console.WriteLine("Глава 4");
Console.WriteLine("Глава 5");
Console.WriteLine("Глава 6");
Console.WriteLine("Глава 7");
Console.WriteLine("Заключение");

Kif tista’ tittejjeb?
Ibdel azzjonijiet monotoni b'ċiklu.
Liema azzjonijiet huma ripetuti wara xulxin mingħajr bidliet?
M'hemm xejn f'dan il-framment. Madankollu, il-kmandi għall-wiri tal-kelma "Kapitlu" b'numru huma simili ħafna għal xulxin.
Għalhekk, l-istadju li jmiss huwa li ssib id-differenza bejn il-frammenti. Huwa biss f'dan il-kompitu li kollox huwa ovvju, allura mhux se jiġu ripetuti kmandi singoli, iżda blokki ta 'kodiċi ta' 5 linji jew aktar. Ikollok tfittex mhux biss fil-lista ta 'kmandi, iżda f'kostruzzjonijiet ta' fergħat jew loop.
Fl-eżempju, id-differenza bejn il-kmandi hija fin-numru wara l-kelma "Kapitolu".
Ladarba tinstab id-differenza, trid tifhem il-mudell tal-bidla. Il-framment differenti huwa n-numru? Qed dejjem tiżdied jew jonqos? Kif jinbidel il-valur ta’ numru bejn żewġ timijiet ħdejn xulxin?
Fl-eżempju, in-numru wara l-kelma "Kapitlu" jiżdied b'żidiet ta '1. Id-differenza tinstab, il-mudell jiġi żvelat. Issa tista 'tissostitwixxi l-framment differenti b'varjabbli.
Ikollok bżonn tiddikjara tali varjabbli qabel l-ewwel mill-frammenti ripetuti. Tali varjabbli normalment tissejjaħ I jew j jew xi ħaġa aktar dettaljata. Il-valur inizjali tiegħu għandu jkun ugwali għall-ewwel valur muri fuq l-iskrin. Fl-eżempju, l-ewwel valur huwa 1.
Liema valur inizjali għandu jittieħed biex turi s-serje ta 'numri "100, 101, 102, 103, 104, 105"?
L-ewwel numru f'din is-serje huwa 100.
Wara kull kmand tal-output, għandek bżonn iżżid il-valur ta 'din il-varjabbli b'1. Din l-unità hija l-pass tal-bidla.
Liema pass se jkun fis-serje ta 'numri "100, 102, 104, 106"?
Pass 2 f'din ir-ringiela.
Wara li tissostitwixxi l-framment differenti b'varjabbli, il-kodiċi se jidher bħal dan:

Console.WriteLine("Введение");
int i;
i = 0;
Console.WriteLine("Глава " + i);
i = i + 1;
Console.WriteLine("Глава " + i);
i = i + 1;
Console.WriteLine("Глава " + i);
i = i + 1;
Console.WriteLine("Глава " + i);
i = i + 1;
Console.WriteLine("Глава " + i);
i = i + 1;
Console.WriteLine("Глава " + i);
i = i + 1;
Console.WriteLine("Глава " + i);
i = i + 1;
Console.WriteLine("Заключение");

Wara li tapplika t-teknika "esprimi l-mudell ta 'varjabbli" fil-kodiċi, ikollok diversi gruppi ta' azzjonijiet identiċi li jmorru wara xulxin. Issa l-azzjonijiet ripetuti jistgħu jiġu sostitwiti b'linja.

Is-sekwenza tas-soluzzjoni ta 'problema fejn għandek bżonn tuża loops tikkonsisti fil-passi li ġejjin:

  1. Issolvi "head-on" b'ħafna kmandi separati
  2. Sib mudell
  3. Esprimi l-mudell ta 'varjabbli
  4. Disinn bħala ċiklu

Sussegwentement, jiġu introdotti termini ġodda sabiex l-istudent ma jsibx ruħu fis-sitwazzjoni ta '"Nifhem kollox, imma ma nistax ngħidu":
— counter huwa dejjem varjabbli li huwa meħtieġ biex jintraċċa n-numru ta 'passi f'linja. Tipikament numru sħiħ li jitqabbel mar-restrizzjoni.
— counter step — deskrizzjoni tal-mudell tal-counter changes.
- restrizzjoni - numru jew varjabbli li miegħu jitqabbel il-counter sabiex l-algoritmu jkun finali. Il-valur tal-kontro jinbidel biex joqrob lejn il-limitu.
— loop body — sett ta’ kmandi li se jiġu ripetuti. Meta jgħidu "il-kmand huwa miktub ġewwa linja," huma jfissru l-ġisem.
— iterazzjoni tal-linja — eżekuzzjoni ta' darba tal-korp tal-linja.
— loop condition — espressjoni loġika li tiddetermina jekk iterazzjoni oħra hijiex se tiġi eżegwita. (Jista 'jkun hemm konfużjoni ma' strutturi tal-fergħat hawn)
Trid tkun ippreparat għall-fatt li għall-ewwel l-istudenti se jużaw termini għal skopijiet oħra. Dan japplika kemm għal dawk b'saħħithom kif ukoll għal dawk dgħajfa. It-twaqqif ta’ lingwa komuni hija arti. Issa ser nikteb fil-qosor: għandek bżonn tissettja l-kompitu "enfasizza l-framment tal-kodiċi b'<term>" u tuża dawn it-termini lilek innifsek b'mod korrett fil-konversazzjoni.
Wara t-trasformazzjoni b'linja, il-framment jinkiseb:

Console.WriteLine("Введение");
int i = 0;
while (i < 7) {
    Console.WriteLine("Глава " + i);
    i = i + 1;
}
Console.WriteLine("Заключение");

Il-kunċett żbaljat ewlieni

Kunċett żbaljat popolari fost l-istudenti huwa li jpoġġu azzjonijiet f'linja li jeħtieġ li ssir darba biss. Per eżempju bħal dan:

;
int i = 0;
while (i < 7) {
    Console.WriteLine("Введение")
    Console.WriteLine("Глава " + i);
    i = i + 1;
    Console.WriteLine("Заключение");
}

L-istudenti jiltaqgħu ma’ din il-problema l-ħin kollu, kemm fil-bidu kif ukoll fi problemi aktar kumplessi.
Ħjiel ewlieni f'dan il-każ:

Kemm-il darba għandek tirrepeti l-kmand: darba jew ħafna drabi?

Il-kmandi għall-istampar tal-kliem "Introduzzjoni" u "Konklużjoni" u d-dikjarazzjoni u l-inizjalizzazzjoni tal-varjabbli i mhumiex bħal azzjonijiet ripetittivi oħra. Dawn jiġu esegwiti darba biss, li jfisser li jeħtieġ li jinkitbu barra l-korp tal-linja.

It-tliet stadji kollha tas-soluzzjoni għandhom jibqgħu fil-kodiċi sabiex tkun tista 'tirreferi għalihom aktar tard f'każ ta' diffikultajiet. Huwa biżżejjed li tikkummenta l-ewwel żewġ għażliet sabiex ma jinterferixxux.
L-attenzjoni tal-istudent għandha tinġibed għall-fatti li ġejjin:
— F'kondizzjoni ta' loop, counter u limitu huma normalment imqabbla. Il-counter jista 'jinbidel fil-korp tal-linja, iżda l-limitu ma jistax. Biex tikser din ir-regola, trid tifformula raġunijiet konvinċenti.
— Kmandi għall-wiri tal-kliem “Introduzzjoni” u “Konklużjoni” jinsabu barra l-korp tal-linja. Għandna bżonn inwettquhom 1 darba. "Introduzzjoni" - qabel ma tirrepeti l-azzjonijiet, "Konklużjoni" - wara.
Fil-proċess tal-konsolidazzjoni ta 'dan is-suġġett, il-ħakma ta' dawk li jmiss, kif ukoll it-trattament tad-diffikultajiet, huwa utli li anke studenti b'saħħithom jistaqsu l-mistoqsija: "Kemm drabi trid titwettaq din l-azzjoni? Wieħed jew ħafna?

Żvilupp ta 'ħiliet addizzjonali

Fil-proċess tal-istudju taċ-ċikli, l-istudenti jiżviluppaw ukoll il-ħila li jiddijanjostikaw u jsolvu problemi. Biex twettaq dijanjostiċi, l-istudent jeħtieġ li jippreżenta r-riżultat mixtieq u jqabblu mar-riżultat attwali. Azzjonijiet korrettivi jiddependu fuq id-differenza bejniethom.
Peress li l-istudenti f'dan l-istadju għad għandhom ftit idea tar-riżultat "mixtieqa", jistgħu jiffokaw fuq id-dejta tat-test. Bħala regola, ħadd f'dan l-istadju għadu ma jifhem x'jista' jmur ħażin u kif jittrattah. Għalhekk, nikteb f'notebook deskrizzjoni ta 'problemi tipiċi u diversi modi biex issolvihom. L-għażla tal-aktar waħda xierqa hija l-kompitu tal-istudent innifsu.
Huwa meħtieġ rekord biex jistaqsi "ġara dak li kien mistenni?", "Liema minn dawn is-sitwazzjonijiet ġara issa?", "Is-soluzzjoni applikata għenet?"

  1. In-numru ta' azzjonijiet huwa 1 inqas jew aktar milli mistenni. Soluzzjonijiet:
    — żid il-valur inizjali tal-counter b'1.
    — ibdel l-operatur ta' tqabbil strett (< jew >) b'wieħed mhux strett (<= jew >=).
    — ibdel il-valur tal-limitu għal 1.
  2. L-azzjonijiet f'linja jsiru mingħajr waqfien, b'mod indefinit. Soluzzjonijiet:
    — żid kmand tal-bidla tal-kontro jekk ikun nieqes.
    — tiffissa l-kmand tal-bidla tal-kontro sabiex il-valur tiegħu jersaq eqreb lejn il-limitu.
    — neħħi l-kmand tal-bidla tar-restrizzjoni jekk ikun fil-korp tal-linja.
  3. In-numru ta' azzjonijiet f'linja huwa aktar minn 1 inqas jew aktar milli mistenni. L-azzjoni fil-linja ma ġietx eżegwita lanqas darba. L-ewwel trid issir taf il-valuri attwali tal-varjabbli eżatt qabel ma jibda l-linja. Soluzzjonijiet:
    — tibdel il-valur inizjali tar-restrizzjoni
    — ibdel il-valur inizjali tal-counter

Il-problema 3 normalment tinvolvi l-użu tal-varjabbli żbaljat jew li l-counter ma jerġax jiġi ssettjat għal żero.

Wara din l-ispjegazzjoni, l-istudent jista 'jkollu diversi kunċetti żbaljati dwar kif jaħdmu l-loops.
Biex tneħħi dawk l-aktar komuni, nagħtikom il-kompiti li ġejjin:

  1. Li fih il-limitu, il-valur tal-kontro inizjali, jew il-pass tal-kontro jiddaħħlu mill-utent.
  2. Li fih il-valur tal-kontro għandu jintuża f'xi espressjoni aritmetika. Huwa rakkomandabbli li tuża counter fl-espressjoni radikali jew fid-denominatur sabiex id-differenza ma tkunx lineari.
  3. Fejn il-valur tal-counter ma jintwerax fuq l-iskrin waqt li l-linja tkun qed taħdem. Per eżempju, turi n-numru meħtieġ ta 'frammenti ta' test identiċi jew tpinġija ta 'figura bi grafika tal-fekruna.
  4. Li fiha għandek bżonn twettaq l-ewwel xi azzjonijiet ripetittivi, u mbagħad oħrajn.
  5. Li fiha għandek bżonn twettaq azzjonijiet oħra qabel u wara li tirrepeti

Għal kull kompitu għandek bżonn tipprovdi data tat-test u r-riżultat mistenni.

Biex tifhem kemm tista 'timxi malajr, trid taqra t-termini ta' dawn il-problemi u tistaqsi: "kif huma differenti mill-eżempju?", "X'għandu jinbidel fl-eżempju biex issolvihom?" Jekk l-istudent iwieġeb b'mod sinifikanti, allura ħallih isolvi mill-inqas wieħed fil-klassi, u l-bqija d-dar waħdu. Jekk is-soluzzjoni tirnexxi, allura nistgħu nibdew nispjegaw il-kundizzjonijiet ġewwa l-linji.
Jekk għandek problemi biex issolvi l-problemi waħdek, trid taħdem minn kollox fil-klassi. Biex tevita li s-soluzzjoni tal-problema tkun reminixxenti fit-tpinġija ta 'kokka, nirrakkomanda li l-ewwel issolvi l-problema b'mod mhux universali. Jiġifieri, sabiex is-soluzzjoni tgħaddi mill-ewwel test u ma tużax il-kostruzzjoni tal-linja. Ukoll, imbagħad applika trasformazzjonijiet biex tikseb l-universalità tas-soluzzjoni.

Loops u fergħat

Fl-opinjoni tiegħi, huwa utli li tingħata s-suġġett "ċikli fi ħdan fergħat" separatament. Sabiex aktar tard tkun tista' tara d-differenza bejn li tiċċekkja kundizzjoni diversi drabi u tiċċekkjaha darba.
Il-kompiti għall-konsolidazzjoni se jkunu dwar il-ħruġ ta' numri minn A sa B, li jiddaħħlu mill-utent:
- dejjem f'ordni axxendenti.
- axxendenti jew dixxendenti skond il-valuri ta 'A u B.

Is-suġġett ta '"fergħat fi ħdan loops" għandu jiġi mċaqlaq biss wara li l-istudent ikun ħakmu t-tekniki: "tissostitwixxi mudell b'varjabbli" u "sostituzzjoni ta' azzjonijiet ripetittivi b'ċiklu."
Ir-raġuni ewlenija għall-użu ta 'fergħat ġewwa linji hija anomaliji fil-mudell. Fin-nofs jinkiser skont id-dejta inizjali.
Għal dawk l-istudenti li kapaċi jfittxu soluzzjoni billi jgħaqqdu tekniki sempliċi, huwa biżżejjed li tgħid "fergħat jistgħu jinkitbu ġewwa loops" u jagħtu l-problema "per eżempju" kompletament biex issolvi b'mod indipendenti.
Eżempju kompitu:

L-utent idaħħal in-numru X. Uri n-numri minn 0 sa 9 f'kolonna u poġġi sinjal '+' biswit in-numru li huwa ugwali għal X.

Jekk iddaħħal 00+
1
2
3
4
5
6
7
8
9

Jekk iddaħħal 60
1
2
3
4
5
6+
7
8
9

Jekk iddaħħal 90
1
2
3
4
5
6
7
8
9+

Jekk iddaħħal 7770
1
2
3
4
5
6
7
8
9

Jekk spjegazzjoni qasira mhix biżżejjed biex tikteb b'linja, allura għandek bżonn tikseb soluzzjoni universali għall-istess problema mingħajr linja.
Int ser tirċievi waħda minn żewġ għażliet:
Mixtieqa

string temp;
temp = Console.ReadLine();
int x;
x = int.Parse(temp);
if (x==0) {
    Console.WriteLine(0 + "+");
} else {
    Console.WriteLine(0);
}
if (x==1) {
    Console.WriteLine(1 + "+");
} else {
    Console.WriteLine(1);
}
if (x==2) {
    Console.WriteLine(2 + "+");
} else {
    Console.WriteLine(2);
}
if (x==3) {
    Console.WriteLine(3 + "+");
} else {
    Console.WriteLine(3);
}
if (x==4) {
    Console.WriteLine(4 + "+");
} else {
    Console.WriteLine(4);
}
if (x==5) {
    Console.WriteLine(5 + "+");
} else {
    Console.WriteLine(5);
}
if (x==6) {
    Console.WriteLine(6 + "+");
} else {
    Console.WriteLine(6);
}
if (x==7) {
    Console.WriteLine(7 + "+");
} else {
    Console.WriteLine(7);
}
if (x==8) {
    Console.WriteLine(8 + "+");
} else {
    Console.WriteLine(8);
}
if (x==9) {
    Console.WriteLine(9 + "+");
} else {
    Console.WriteLine(9);
}

Possibbli

string temp;
temp = Console.ReadLine();
int x;
x = int.Parse(temp);
if (x==0) {
    Console.WriteLine("0+n1n2n3n4n5n6n7n8n9");
}
if (x==1) {
    Console.WriteLine("0n1+n2n3n4n5n6n7n8n9");
}
if (x==2) {
    Console.WriteLine("0n1n2+n3n4n5n6n7n8n9");
}
if (x==3) {
    Console.WriteLine("0n1n2n3+n4n5n6n7n8n9");
}
if (x==4) {
    Console.WriteLine("0n1n2n3n4+n5n6n7n8n9");
}
if (x==5) {
    Console.WriteLine("0n1n2n3n4n5+n6n7n8n9");
}
if (x==6) {
    Console.WriteLine("0n1n2n3n4n5n6+n7n8n9");
}
if (x==7) {
    Console.WriteLine("0n1n2n3n4n5n6n7+n8n9");
}
if (x==8) {
    Console.WriteLine("0n1n2n3n4n5n6n7n8+n9");
}
if (x==9) {
    Console.WriteLine("0n1n2n3n4n5n6n7n8n9+");
}

Nagħti kompitu simili bil-quddiem, waqt li nistudja s-suġġett tal-fergħat.
Jekk l-istudent joħroġ b'għażla "possibbli", allura trid tgħidilhom li jista 'jkun hemm ħafna soluzzjonijiet għall-istess problema. Madankollu, huma differenti fir-reżistenza tagħhom għal bidliet fir-rekwiżiti. Staqsi l-mistoqsija: "Kemm postijiet fil-kodiċi jkollhom bżonn jiġu kkoreġuti kieku kelli nżid numru ieħor?" Fil-verżjoni "possibbli", ser ikollok bżonn iżżid fergħa oħra u żżid numru ġdid f'10 postijiet oħra. Fil-"mixtieqa" huwa biżżejjed li żżid fergħa waħda biss.
Issettja l-kompitu biex tirriproduċi l-għażla "mixtieqa", imbagħad sib mudell fil-kodiċi, wettaq sostituzzjoni varjabbli u ikteb loop.
Jekk għandek idea dwar kif issolvi din il-problema mingħajr loop b'xi mod ieħor, jekk jogħġbok ikteb fil-kummenti.

Loops fi ħdan Loops

F'dan is-suġġett trid tagħti attenzjoni għal dan li ġej:
— il-counters għal-linji ta' ġewwa u ta' barra għandhom ikunu varjabbli differenti.
— il-counter għall-linja ta 'ġewwa għandu jiġi reset ħafna drabi (jiġifieri, fil-korp tal-linja ta' barra).
— fil-kompiti tal-ħruġ tat-test, ma tistax l-ewwel tikteb ittra waħda f'diversi linji, u mbagħad it-tieni. L-ewwel trid tipprintja l-ittri kollha tal-ewwel linja, imbagħad l-ittri kollha tat-tieni, eċċ.

L-aħjar huwa li tibda tispjega s-suġġett tal-loops fi ħdan il-loops billi tispjega l-importanza tar-reset tal-counter għal żero.
Eżempju kompitu:

L-utent idaħħal żewġ numri: R u T. Stampa żewġ linji ta '"#" karattri. L-ewwel linja għandu jkun fiha karattri R. It-tieni linja fiha biċċiet T. Jekk xi numru huwa negattiv, uri messaġġ ta' żball.

R=5, T=11#####
############

R=20, T=3######################
# # #

R=-1, T=6Il-valur R għandu jkun mhux negattiv

R=6, T=-2Il-valur T għandu jkun mhux negattiv

Ovvjament, din il-problema għandha wkoll mill-inqas żewġ soluzzjonijiet.
Mixtieqa

string temp;
int R;
int T;
temp = Console.ReadLine();
R = int.Parse(temp);
temp = Console.ReadLine();
T = int.Parse(temp);
int i = 0;
while (i < R)
{
    Console.Write("#");
    i = i + 1;
}
Console.WriteLine();
i = 0;
while (i < T)
{
    Console.Write("#");
    i = i + 1;
}

Possibbli #1

string temp;
int R;
int T;
temp = Console.ReadLine();
R = int.Parse(temp);
temp = Console.ReadLine();
T = int.Parse(temp);
int i = 0;
while (i < R)
{
    Console.Write("#");
    i = i + 1;
}
Console.WriteLine();
int j = 0;
j = 0;
while (j < T)
{
    Console.Write("#");
    j = j + 1;
}

Id-differenza hija li fis-soluzzjoni "possibbli", intużat it-tieni varjabbli biex joħroġ it-tieni linja. Għandek tinsisti li tuża l-istess varjabbli għaż-żewġ loops. Din il-limitazzjoni tista' tkun iġġustifikata mill-fatt li soluzzjoni b'counter wieħed għal żewġ ċikli tkun illustrazzjoni tat-terminu "reset tal-counter". Il-fehim ta 'dan it-terminu huwa meħtieġ meta ssolvi l-problemi li ġejjin. Bħala kompromess, tista 'tiffranka ż-żewġ soluzzjonijiet għall-problema.

Problema tipika bl-użu ta' kontrovarjabbli wieħed għal żewġ loops tidher hekk:
R=5, T=11#####
#######

In-numru ta 'karattri fit-tieni linja ma jikkorrispondix mal-valur ta' T. Jekk għandek bżonn għajnuna b'din il-problema, allura trid tħares lejn in-noti dwar problemi tipiċi bil-linji. Dan huwa sintomu #3. Huwa djanjostikat jekk iżżid output tal-valur tal-kontro immedjatament qabel it-tieni ċiklu. Ikkoreġut permezz ta' reset. Imma aħjar ma tgħid dan mill-ewwel. L-istudent irid jipprova jifformula mill-inqas ipoteżi waħda.

Hemm, ovvjament, soluzzjoni oħra. Imma qatt ma rajtu fost l-istudenti. Fl-istadju tal-istudju taċ-ċikli, l-istorja dwarha tfixkel l-attenzjoni. Tista 'terġa' lura għaliha aktar tard meta titgħallem dwar il-funzjonijiet tal-istring.
Possibbli #2

string temp;
int R;
int T;
temp = Console.ReadLine();
R = int.Parse(temp);
temp = Console.ReadLine();
T = int.Parse(temp);
Console.WriteLine(new String('#', R));
Console.WriteLine(new String('#', T));

Il-kompitu meħtieġ li jmiss:

Uri n-numri minn 0 sa 9. Kull numru għandu jkun fuq il-linja tiegħu stess. In-numru ta' ċifri f'linja (W) jiddaħħal mit-tastiera.

W=10
1
2
3
4
5
6
7
8
9

W=100000000000
1111111111
2222222222
3333333333
4444444444
5555555555
6666666666
7777777777
8888888888
9999999999

Jekk student ikun ħakmu t-teknika li tissostitwixxi varjabbli, allura jlaħħaq pjuttost malajr. Problema possibbli terġa' tkun fir-reset tal-varjabbli. Jekk ma tistax timmaniġġja t-trasformazzjoni, dan ifisser li kont għaġla u għandek bżonn issolvi problemi aktar sempliċi.

Grazzi tal-attenzjoni tiegħek. Like u abbona mal-kanal.

PS Jekk issib typos jew żbalji fit-test, jekk jogħġbok għarrafni. Dan jista 'jsir billi tagħżel parti mit-test u tagħfas "⌘ + Enter" fuq Mac, u "Ctrl / Enter" fuq tastieri klassiċi, jew permezz ta' messaġġi privati. Jekk dawn l-għażliet mhumiex disponibbli, ikteb dwar żbalji fil-kummenti. Grazzi!

Utenti reġistrati biss jistgħu jipparteċipaw fl-istħarriġ. Idħol, ta 'xejn.

Poll għall-qarrejja mingħajr karma

  • 20,0%Ngħallem professjonalment, +12

  • 10,0%Ngħallem professjonalment, -11

  • 70,0%Jien ma ngħallimx, +17

  • 0,0%Jien ma ngħallimx, -10

  • 0,0%Oħrajn0

Ivvutaw 10 utent. 5 utenti astjenew.

Sors: www.habr.com

Żid kumment