Ki jan yo anseye ki jan yo simonte difikilte, epi an menm tan an ekri sik

Malgre lefèt ke nou pral pale sou youn nan sijè debaz yo, atik sa a ekri pou pwofesyonèl ki gen eksperyans. Objektif la se montre ki move konsepsyon débutan yo genyen nan pwogramasyon. Pou pratike devlopè, pwoblèm sa yo depi lontan yo te rezoud, bliye oswa yo pa remake ditou. Atik la ka vin an sou la men si ou toudenkou bezwen ede yon moun ak sijè sa a. Atik la trase paralèl ak materyèl ki soti nan divès liv sou pwogram Schildt, Stroustrup, Okulov.

Sijè a sou sik yo te chwazi paske byen anpil moun yo eskli nan li lè metrize pwogramasyon.

Teknik sa a fèt pou elèv ki fèb. Kòm yon règ, moun ki fò pa jwenn kole sou sijè sa a epi pa gen okenn bezwen vini ak teknik espesyal pou yo. Objektif segondè atik la se deplase teknik sa a soti nan klas "travay pou tout elèv, men yon sèl pwofesè" nan klas "travay pou tout elèv, tout pwofesè". Mwen pa reklame orijinalite absoli. Si w deja itilize yon metodoloji menm jan an pou anseye sijè sa a, tanpri ekri ki jan vèsyon ou an diferan. Si ou deside sèvi ak li, di nou ki jan li te ale. Si yon teknik menm jan an dekri nan yon liv, tanpri ekri non an.


Mwen te travay sou teknik sa a pou 4 ane, etidye endividyèlman ak elèv ki nan diferan nivo fòmasyon. An total gen anviwon senkant elèv ak de mil èdtan nan klas yo. Okòmansman, elèv yo te toujou bloke sou sijè sa a epi yo te ale. Apre chak elèv, metodoloji ak materyèl yo te ajiste. Pandan ane ki sot pase a, elèv yo pa te kole sou sijè sa a ankò, kidonk mwen te deside pataje rezilta mwen yo.

Poukisa anpil lèt? Sik yo tèlman elemantè!

Kòm mwen te ekri pi wo a, pou pratike devlopè ak pou elèv fò, konpleksite nan konsèp nan bouk ka souzèstime. Pou egzanp, ou ka bay yon konferans long, wè tèt souke tèt ak je entelijan. Men, lè w ap eseye rezoud nenpòt pwoblèm, stupèr ak pwoblèm ineksplikab kòmanse. Apre konferans la, elèv yo pwobableman te gen sèlman yon konpreyansyon pasyèl. Sitiyasyon an vin pi grav pa lefèt ke elèv yo tèt yo pa ka vwa sa egzakteman delisyon yo ye.
Yon jou mwen reyalize ke elèv yo wè egzanp mwen yo kòm yeroglif. Sa vle di, tankou moso tèks endivizib kote ou bezwen ajoute kèk lèt ​​"majik" epi li pral travay.
Pafwa mwen remake ke elèv yo panse ke yo rezoud yon pwoblèm espesifik ou bezwen yon lòt bagay yon konsepsyon ke mwen jis pa kouvri ankò. Malgre ke solisyon an mande sèlman yon ti modifikasyon nan egzanp lan.

Se konsa, mwen te vini ak lide ke konsantre pa ta dwe sou sentaks ekspresyon yo, men sou lide refactoring kòd repetitif lè l sèvi avèk bouk. Yon fwa elèv yo metrize lide sa a, nenpòt sentaks ka amelyore ak ti pratik.

Kiyès e poukisa mwen anseye?

Piske pa gen egzamen pou antre, klas yo ka gen ladan elèv ki gen fòs ak elèv ki trè fèb. Ou ka li plis enfòmasyon sou elèv mwen yo nan atik la Pòtre elèv kou aswè
Mwen te fè efò pou asire ke tout moun ki vle aprann pwogramasyon ka aprann li.
Klas mwen yo fèt endividyèlman epi elèv la peye pwòp lajan pa l pou chak. Li ta sanble ke elèv yo pral optimize depans yo epi mande minimòm nan. Sepandan, moun yo ale nan klas fas-a-fas ak yon pwofesè vivan pa pou konesans nan tèt li, men pou konfyans nan sa yo te aprann, pou yon santiman nan pwogrè ak pou apwobasyon nan men ekspè an (pwofesè). Si elèv yo pa santi pwogrè nan aprantisaj yo, yo pral kite. An jeneral, klas yo ka estriktire pou elèv yo santi pwogrè nan ogmante kantite estrikti yo konnen yo. Sa vle di, premye nou etidye pandan y ap an detay, Lè sa a, nou etidye pou, Lè sa a, fè pandan y ap, epi kounye a nou gen yon kou mil ak yon lannwit pare, nan ki sik pou kont yo etidye pou de mwa, ak nan fen a - yon elèv ki te ekri. yon bibliyotèk estanda anba dikte. Sepandan, yo nan lòd yo rezoud pwoblèm pratik, ou bezwen pa sèlman konesans nan materyèl la, men tou, endepandans nan aplikasyon li yo ak nan rechèch pou nouvo enfòmasyon. Se poutèt sa, pou kou fas-a-fas, mwen panse prensip ki kòrèk la se anseye minimòm la ak ankouraje etid endepandan nan nuans ak sijè ki gen rapò. Nan sijè a nan bouk, mwen konsidere konstriksyon an pandan y ap minimòm la. Ou ka konprann prensip la soti nan li. Lè w konnen prensip la, ou ka metrize tou de pou ak fè-pandan ou menm.

Pou elèv ki fèb yo metrize materyèl la, dekri sentaks la pa ase. Li nesesè pou bay travay ki pi senp men divès epi dekri egzanp yo an plis detay. Finalman, vitès devlopman limite pa kapasite elèv la pou transfòme ekspresyon ak chèche modèl. Pou elèv entelijan, pifò devwa yo pral raz. Lè w ap etidye ak yo, ou pa bezwen ensiste pou rezoud 100% pwoblèm yo. Ou ka wè materyèl mwen an nan github mwen an. Se vre, repozitwa a se plis tankou grimoire yon demonist - pèsonn men mwen pa pral konprann ki sa ki kote, epi si ou echwe chèk la, ou ka ale fou.

Metodoloji a oryante pratik

Yo eksplike teyori a lè l sèvi avèk egzanp pou rezoud yon pwoblèm. Nan yon klas fondamantal nan pwogramasyon kote branch ak bouk yo anseye, li se tou senpleman pa posib bay yon konferans itil sou yon sijè pou yon èdtan antye. 15-20 minit se ase pou eksplike konsèp la. Difikilte prensipal yo rive lè w ap fè travay pratik.
Pwofesè k ap kòmanse yo ka rattle operatè yo, branch, bouk, ak etalaj nan yon sèl konferans. Men, elèv yo ap fè fas ak pwoblèm nan asimile enfòmasyon sa a.
Li nesesè pa sèlman di materyèl la, men tou pou asire w ke moun k ap koute yo konprann li.

Reyalite metrize yon sijè detèmine pa fason elèv la fè fas ak travay endepandan.
Si yon elèv jere yo rezoud yon pwoblèm sou yon sijè san èd nan yon pwofesè, Lè sa a, sijè a te metrize. Pou asire tès pwòp tèt ou, yo dekri chak travay nan yon tablo ak senaryo tès yo. Travay yo gen yon lòd klè. Sote travay yo pa rekòmande. Si travay aktyèl la twò difisil, ale nan pwochen an pa itil anyen. Li se menm pi konplike. Pou elèv la ka metrize travay konplèks aktyèl la, yo eksplike l plizyè teknik lè l sèvi avèk egzanp premye pwoblèm nan. Aktyèlman, kontni an antye nan sijè a desann nan teknik pou simonte difikilte. Sik yo pi plis nan yon efè segondè.

Premye travay la se toujou yon egzanp. Dezyèm lan diferan yon ti kras epi li fèt "endepandans" imedyatman apre premye a anba sipèvizyon yon pwofesè. Tout travay ki vin apre yo vize a peye atansyon sou divès ti bagay ki ka lakòz move konsepsyon.

Eksplikasyon egzanp lan se yon dyalòg kote elèv la bezwen rele pwopagasyon ak kwa-validasyon pou asire w ke li metrize yon pòsyon nan materyèl la.

Mwen pral banal epi di ke premye egzanp sou sijè a trè enpòtan. Si ou gen materyèl pou travay endepandan vaste, omisyon yo nan premye egzanp lan ka korije. Si pa gen okenn lòt bagay anplis egzanp lan, Lè sa a, elèv la gen plis chans pa pral metrize sijè a.

Pandan oswa pou?

Youn nan pwoblèm yo kontwovèsyal se chwa nan konstriksyon pou egzanp lan: pandan y ap oswa pou. Yon fwa, yon zanmi pwomotè pratike nan mwen ki pa gen okenn eksperyans ansèyman te pase yon èdtan konvenk mwen ke bouk la te pi fasil pou konprann. Agiman yo te redwi a "tout bagay ki nan li klè e yo mete nan plas li." Sepandan, kòz rasin difikilte pou débutan reyèl se lide nan sik nan tèt li, epi li pa ekri li yo. Si yon moun pa konprann lide sa a, li pral gen difikilte ak sentaks la. Le pli vit ke lide a reyalize, pwoblèm yo nan konsepsyon kòd disparèt poukont yo.

Nan materyèl mwen yo, tèm nan bouk swiv tèm nan branch. Resanblans ekstèn nan si ak pandan y ap pèmèt nou trase yon analoji dirèk: "lè kondisyon an nan tèt la se vre, Lè sa a, kò a egzekite." Singularité a sèlman nan sik la se ke kò a egzekite anpil fwa.

Dezyèm agiman mwen an se ke pandan y ap mande pou mwens fòma pase pou. Mwens fòma vle di mwens erè estipid ak vigil ki manke ak parantèz. Débutan poko devlope ase atansyon ak metikuleu pou evite otomatikman erè sentaks.
Twazyèm agiman an eksplike nan anpil bon liv kòm premye agiman an.

Si elèv la ka fasil transfòme ekspresyon, Lè sa a, ou ka pale sou pou an pasan. Lè sa a, elèv la pral chwazi sa li pi renmen. Si transfòmasyon lakòz difikilte, Lè sa a, li pi bon pou pa distrè atansyon ou. Kite elèv la premye rezoud tout bagay lè l sèvi avèk while. Yon fwa ou te metrize sijè a nan bouk, ou ka reekri solisyon yo pratike konvèti pandan y ap nan pou.
Boucles postcondition se yon bèt trè ra. Mwen pa pase okenn tan sou li ditou. Si yon elèv metrize lide pou idantifye modèl ak transfòme ekspresyon, li ka konprann li san èd mwen.

Lè m ap demontre premye egzanp lan bay elèv ki solid, mwen atire atansyon sou lefèt ke nan premye egzanp li enpòtan pou anrejistre pa sèlman solisyon an, men tou, tout chèn aksyon ki te mennen nan rezilta a. Elèv parese ka neglije ekriti a epi kopye sèlman algorithm final la. Yo bezwen konvenki ke yon jou yon travay difisil pral rive nan chemen yo. Pou rezoud li, w ap bezwen swiv etap sa yo tankou nan egzanp sa a. Se poutèt sa li enpòtan pou anrejistre tout etap yo. Nan pwoblèm sa yo li pral posib yo kite sèlman vèsyon final la nan solisyon an.

Lide prensipal la nan automatisation se ke nou konfye yon òdinatè fè travay woutin pou yon moun. Youn nan teknik debaz yo se ekri bouk. Yo itilize li lè plizyè aksyon repete idantik ekri nan yon pwogram nan yon ranje.

Eksplis pi bon pase implicite

Li ta ka sanble yon bon lide yo montre menm fraz la plizyè fwa nan premye travay bouk la. Pa egzanp:

Hurray, li travay!
Hurray, li travay!
Hurray, li travay!
Hurray, li travay!
Hurray, li travay!
Hurray, li travay!
Hurray, li travay!
Hurray, li travay!

Opsyon sa a se move paske valè kontwa an pa vizib nan pwodiksyon an. Sa a se yon pwoblèm pou débutan. Pa souzèstime li. Okòmansman, travay sa a se te premye a, epi travay la pou derive yon seri nimewo nan lòd monte te dezyèm lan. Li te nesesè yo prezante tèm adisyonèl "sik N fwa" ak "sik soti nan A rive nan B", ki se esansyèlman menm bagay la. Yo nan lòd yo pa kreye antite ki pa nesesè, mwen deside montre sèlman yon egzanp ak pwodiksyon an nan yon seri de nimewo. Pa gen anpil moun ki rive aprann kijan pou yo kenbe yon kontwa nan tèt yo ak modèl konpòtman an nan yon pwogram nan tèt yo san yo pa preparasyon. Gen kèk elèv premye rankontre modèl mantal sou sijè sik la.
Apre kèk pratik, mwen bay travay la nan repete menm tèks la yo dwe rezoud poukont li. Si ou bay yon kontwa vizib an premye epi apre yon envizib, lè sa a elèv yo gen mwens pwoblèm. Pafwa allusion "pa ekri kontwa an sou ekran an" se ase.

Ki jan lòt moun eksplike li?

Nan pifò materyèl edikatif sou Entènèt, sentaks sik la bay kòm yon pati nan yon "konferans". Pou egzanp, sou developer.mozilla.org (kounye a), yo dekri plizyè lòt konstriksyon ansanm ak bouk while la. Nan ka sa a, se sèlman desen yo tèt yo bay nan fòm lan nan modèl. Rezilta lansman yo dekri nan mo, men pa gen okenn ilistrasyon. Dapre mwen, tankou yon prezantasyon nan sijè a miltipliye itilite nan materyèl sa yo pa zewo. Elèv la ka reekri kòd la epi kouri li tèt li, men li toujou bezwen yon estanda pou konparezon. Ki jan ou ka konprann ke yon egzanp te reekri kòrèkteman si pa gen anyen yo konpare rezilta a ak?
Lè yo bay sèlman yon modèl, san yon egzanp, li vin menm pi difisil pou elèv la. Ki jan yo konprann ke fragman yo kòd yo mete kòrèkteman nan modèl la? Ou ka eseye ekri yon jan kanmenm, ak Lè sa a, kouri. Men, si pa gen okenn estanda pou konpare rezilta a, Lè sa a, lansman pa pral ede tou.

Nan kou C++ sou Entwisyon an, sentaks bouk la antere l nan twazyèm paj Konferans 4 la sou sijè "operatè yo". Lè w eksplike sentaks bouk yo, yo mete yon anfaz espesyal sou tèm "operatè". Tèm nan prezante kòm yon seri reyalite tankou "senbòl; sa a se yon deklarasyon", "{} se yon deklarasyon konpoze", "kò bouk la dwe yon deklarasyon". Mwen pa renmen apwòch sa a paske li sanble kache relasyon enpòtan dèyè yon tèm. Devlopè konpilatè yo bezwen analize kòd sous yon pwogram an tèm nan nivo sa a pou aplike spesifikasyon lang lan, men se pa elèv yo kòm premye apwoksimasyon. Nouvo ki fèk vini nan pwogramasyon yo raman metikuleu ase yo peye atansyon tankou tèm. Li se yon moun ki ra ki sonje ak konprann nouvo mo premye fwa a. Prèske pèsonn pa ka aplike kòrèkteman yon tèm yo jis aprann. Se poutèt sa, elèv yo jwenn anpil erè tankou "Mwen te ekri pandan (a<7);{, men pwogram nan pa mache."
Dapre mwen, nan kòmansman an li se pi bon bay sentaks la nan konstriksyon an imedyatman ak parantèz. Opsyon san parantèz yo ta dwe eksplike sèlman si elèv la gen yon kesyon espesifik: "poukisa pa gen parantèz epi li fonksyone."

Nan liv Okulov 2012 "Fontalman nan pwogramasyon," yon entwodiksyon nan bouk kòmanse ak modèl la pou, Lè sa a, bay rekòmandasyon pou itilize li yo, epi imedyatman ale nan seksyon eksperimantal nan leson an. Mwen konprann ke liv la te ekri pou minorite elèv ki trè kapab ki raman vini nan klas mwen yo.

Nan liv popilè, rezilta fragman kòd toujou ekri. Pou egzanp, Shildt a "Java 8. Gid la konplè" 2015 edisyon. Premyèman, yo bay yon modèl, Lè sa a, yon pwogram egzanp ak imedyatman apre li - rezilta a nan ekzekisyon.

Kòm yon egzanp, konsidere yon bouk while ki fè ranvèse a
countdown kòmanse nan 10, epi egzakteman 10 liy "mezi" yo parèt:

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

Yon fwa kouri, pwogram sa a bay dis "sik" jan sa a:
такт 10
такт 9
такт 8
такт 7
такт 6
такт 5
такт 4
такт 3
такт 2
такт 1

Yo itilize apwòch pou dekri yon modèl, yon pwogram egzanp ak rezilta pwogram nan tou nan liv "Javascript pou timoun yo" ak nan kou js sou w3schools.com. Fòma paj wèb la menm pèmèt egzanp sa a entèaktif.

Liv 2016 Stroustrup a Prensip ak pratik lè l sèvi avèk C++ te ale menm pi lwen. Premye etap la se eksplike ki rezilta yo ta dwe jwenn, epi apre sa yo montre tèks la nan pwogram nan. Anplis, yo pran pa sèlman yon pwogram o aza kòm yon egzanp, men bay yon levasyon nan istwa. Sa a ede atire atansyon sou li: “Gade, sa a se pa sèlman kèk tèks initil. Ou wè yon bagay ki gen sans."

Kòm yon egzanp iterasyon, konsidere premye pwogram ki egzekite sou yon machin pwogram ki estoke (EDSAC). Li te ekri pa David Wheeler nan laboratwa òdinatè nan Cambridge University, Angletè sou 6 me 1949. Pwogram sa a kalkile epi enprime yon lis senp kare.
0 0
1 1
2 4
3 9
4 16
...
98 9604
99 9801

Isit la, chak liy gen yon nimewo ki te swiv pa yon karaktè tab ('t') ak kare nimewo sa a. Vèsyon C++ nan pwogram sa a sanble sa a:

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

Enteresan, modèl sentaks la pa dekri nan liv sa a. Stroustrup nan manyèl enstriktè a (tradiksyon) mete aksan sou ke li respekte entèlijans elèv li yo. Petèt kapasite pou idantifye yon modèl nan plizyè egzanp konsidere kòm yon manifestasyon entèlijans sa yo.

Kòm mwen eksplike tèt mwen

Apwòch Stroustrup a: dekri rezilta a, Lè sa a, rezoud pwoblèm nan, ak Lè sa a, yon analiz endepandan pa elèv la - sanble pi reflechi a. Se poutèt sa, mwen deside pran li kòm yon baz, men di li lè l sèvi avèk yon egzanp mwens istorik - travay la nan derive yon "table of contents". Li fòme yon jete lank ki rekonèt pou ou ka Lè sa a, di "sonje travay la sou tab la nan matyè" epi pou elèv yo sonje egzakteman sa a. Nan egzanp mwen an, mwen te eseye anpeche de plis nan miskonsepsyon ki pi komen. Apre sa, mwen pral ekri sou yo nan plis detay.

Nan travay sa a nou prezante teknik pou rezoud pwoblèm konplèks. Desizyon inisyal la bezwen pran primitif ak senp. Oke, Lè sa a, ou ka panse sou ki jan yo amelyore solisyon sa a.
Введение
Глава 1
Глава 2
Глава 3
Глава 4
Глава 5
Глава 6
Глава 7
Заключение

Dapre obsèvasyon mwen yo, apwòch "modèl-egzanp-rezilta" nan divès konbinezon toujou mennen nan lefèt ke elèv yo wè sik la kòm yon yeroglif. Sa a te manifeste tèt li nan lefèt ke yo pa t 'konprann poukisa te gen yon kondisyon yo ekri la, ki jan yo chwazi ant i++ ak i- ak lòt bagay w pèdi evidan. Pou evite move konsepsyon sa yo, apwòch la pou pale sou sik yo ta dwe mete aksan sou siyifikasyon repete aksyon ki idantik epi sèlman Lè sa a, formalize yo lè l sèvi avèk yon estrikti. Se poutèt sa, anvan ou bay sentaks bouk la, ou bezwen rezoud pwoblèm nan tèt-sou. Yon solisyon primitif nan pwoblèm nan tab la sanble sa a:

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("Заключение");

Ki jan li ka amelyore?
Ranplase aksyon monotone ak yon sik.
Ki aksyon yo repete nan yon ranje san yo pa chanje?
Pa gen okenn nan fragman sa a. Sepandan, kòmandman yo pou montre mo "Chapit" la ak yon nimewo yo sanble anpil youn ak lòt.
Se poutèt sa, pwochen etap la se jwenn diferans ki genyen ant fragman yo. Se sèlman nan travay sa a ke tout bagay se evidan, Lè sa a, pa yon sèl kòmandman yo pral repete, men blòk nan kòd nan 5 liy oswa plis. Ou pral gen fè rechèch pa sèlman nan lis la nan kòmandman, men nan branch oswa konstriksyon bouk.
Nan egzanp lan, diferans ki genyen ant kòmandman yo se nan nimewo a apre mo "Chapit".
Yon fwa yo jwenn diferans lan, ou bezwen konprann modèl chanjman an. Fragman nan diferan se nimewo a? Èske li toujou ap ogmante oswa diminye? Ki jan valè yon nimewo chanje ant de ekip kòt a kòt?
Nan egzanp lan, nimewo a apre mo "Chapit" ogmante nan ogmantasyon de 1. Yo jwenn diferans lan, modèl la revele. Koulye a, ou ka ranplase fragman an diferan ak yon varyab.
Ou bezwen deklare tankou yon varyab anvan premye fragman yo repete. Yon varyab sa yo anjeneral rele I oswa j oswa yon bagay ki pi detaye. Valè inisyal li dwe egal ak premye valè ki parèt sou ekran an. Nan egzanp lan, premye valè a se 1.
Ki valè inisyal yo ta dwe pran pou montre seri nonb “100, 101, 102, 103, 104, 105”?
Premye nimewo nan seri sa a se 100.
Apre chak lòd pwodiksyon, ou bezwen ogmante valè varyab sa a pa 1. Inite sa a se etap chanjman an.
Ki etap ki pral nan seri nonb "100, 102, 104, 106"?
Etap 2 nan ranje sa a.
Apre ranplase fragman diferan ak yon varyab, kòd la pral sanble sa a:

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("Заключение");

Apre w fin aplike teknik "eksprime modèl la nan yon varyab" nan kòd la, ou jwenn plizyè gwoup aksyon ki idantik ki ale nan yon ranje. Koulye a, repete aksyon yo ka ranplase ak yon bouk.

Sekans pou rezoud yon pwoblèm kote ou bezwen sèvi ak bouk konsiste de etap sa yo:

  1. Rezoud "head-on" ak anpil kòmandman separe
  2. Jwenn yon modèl
  3. Eksprime modèl yon varyab
  4. Design kòm yon sik

Apre sa, nouvo tèm yo prezante pou elèv la pa jwenn tèt li nan sitiyasyon an nan "Mwen konprann tout bagay, men mwen pa ka di li":
— yon kontwa se toujou yon varyab ki nesesè pou swiv kantite etap nan yon bouk. Tipikman yon nonb antye relatif ki konpare ak kontrent la.
— counter step — deskripsyon modèl chanjman kontwa an.
- contrainte - yon nimewo oswa varyab ak ki kontwa a konpare pou algorithm la final. Valè kontwa an chanje pou apwoche limit la.
— kò bouk — yon seri kòmandman ki pral repete. Lè yo di "kòmand la ekri andedan yon bouk," yo vle di kò a.
- bouk iterasyon - yon sèl-fwa ekzekisyon nan kò a bouk.
— kondisyon bouk — yon ekspresyon lojik ki detèmine si yo pral egzekite yon lòt iterasyon. (Ka gen konfizyon ak estrikti branch isit la)
Ou bezwen prepare pou lefèt ke nan premye elèv yo pral itilize tèm pou lòt rezon. Sa a aplike a tou de fò ak fèb. Etabli yon lang komen se yon atizay. Koulye a, mwen pral ekri yon ti tan: ou bezwen mete travay la "akliye fragman kòd la ak <tèm>" epi sèvi ak tèm sa yo tèt ou kòrèkteman nan konvèsasyon.
Apre transfòmasyon ak yon bouk, yo jwenn fragman an:

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

Miskonsepsyon prensipal la

Youn nan miskonsepsyon popilè nan mitan elèv yo se ke yo mete aksyon nan yon bouk ki bezwen fèt yon sèl fwa. Pou egzanp tankou sa a:

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

Elèv yo kouri nan pwoblèm sa a tout tan, tou de nan kòmansman an ak nan pwoblèm ki pi konplèks.
Sijesyon kle nan ka sa a:

Konbyen fwa ou ta dwe repete kòmandman an: yon fwa oswa plizyè fwa?

Kòmandman yo pou enprime mo "Entwodiksyon" ak "Konklizyon" ak deklare ak inisyalize varyab i a pa tankou lòt aksyon repetitif. Yo egzekite yon sèl fwa, ki vle di yo bezwen ekri deyò kò bouk la.

Tout twa etap nan solisyon an ta dwe rete nan kòd la pou ke ou ka refere yo pita nan ka ta gen difikilte. Li ase kòmantè de premye opsyon yo pou yo pa entèfere.
Yo ta dwe atire atansyon elèv la sou reyalite sa yo:
— Nan yon kondisyon bouk, yon kontwa ak yon limit yo anjeneral konpare. Kontwa a ka chanje nan kò a nan bouk la, men limit la pa kapab. Pou kraze règ sa a, ou bezwen fòmile rezon konvenkan.
— Kòmandman pou montre mo "Entwodiksyon" ak "Konklizyon" yo sitiye deyò kò a nan bouk la. Nou bezwen fè yo 1 fwa. "Entwodiksyon" - anvan repete aksyon yo, "Konklizyon" - apre.
Nan pwosesis la nan konsolide sijè sa a, metrize sa yo ki vin apre yo, osi byen ke fè fas ak difikilte, li itil pou menm etidyan fò yo poze kesyon an: "Konbyen fwa aksyon sa a bezwen fèt? Youn oswa anpil?

Devlopman ladrès adisyonèl

Nan pwosesis etid sik, elèv yo devlope tou konpetans pou dyagnostik ak rezoud pwoblèm. Pou fè dyagnostik, elèv la bezwen prezante rezilta a vle epi konpare li ak rezilta aktyèl la. Aksyon korektif depann sou diferans ki genyen ant yo.
Depi elèv yo nan etap sa a toujou gen ti lide sou rezilta "dezirab la", yo ka konsantre sou done tès yo. Kòm yon règ, pèsonn nan etap sa a ankò konprann sa ki ka ale mal ak ki jan fè fas ak li. Se poutèt sa, mwen ekri nan yon kaye yon deskripsyon pwoblèm tipik ak plizyè fason yo rezoud yo. Chwazi youn ki pi apwopriye a se travay elèv la li menm.
Yon dosye nesesè pou mande "èske sa te espere rive?", "Kilès nan sitiyasyon sa yo te rive kounye a?", "Èske solisyon aplike a te ede?"

  1. Kantite aksyon yo se 1 mwens oswa plis pase sa espere. Solisyon:
    - ogmante valè inisyal kontwa a pa 1.
    — ranplase operatè konparezon strik (< oswa >) ak yon sèl ki pa strik (<= oswa >=).
    - Chanje valè limit la a 1.
  2. Aksyon nan yon bouk yo fèt san yo pa kanpe, endefiniman. Solisyon:
    — ajoute yon kòmandman kont chanjman si li manke.
    — ranje kòmandman chanjman kontwa an pou valè li vin pi pre limit la.
    — retire lòd chanjman kontrent la si li nan kò bouk la.
  3. Kantite aksyon nan yon bouk se plis pase 1 mwens oswa plis pase sa espere. Aksyon an nan bouk la pa te egzekite menm yon fwa. Premyèman, ou bezwen chèche konnen valè aktyèl yo nan varyab yo jis anvan bouk la kòmanse. Solisyon:
    — chanje valè inisyal kontrent la
    — chanje valè inisyal kontwa an

Pwoblèm 3 anjeneral enplike nan itilize varyab nan move oswa pa reset kontwa a nan zewo.

Apre eksplikasyon sa a, elèv la ka toujou gen plizyè move konsepsyon sou fason bouk yo fonksyone.
Pou elimine sa ki pi komen yo, mwen ba ou travay sa yo:

  1. Nan ki limit, valè inisyal kontwa, oswa etap kontwa itilizatè a antre.
  2. Nan ki valè kontwa a dwe itilize nan kèk ekspresyon aritmetik. Li rekòmande pou itilize yon kontwa nan ekspresyon radikal la oswa nan denominatè a pou diferans lan pa lineyè.
  3. Nan ki valè kontwa an pa parèt sou ekran an pandan bouk la ap kouri. Pou egzanp, montre kantite ki nesesè nan fragman tèks ki idantik oswa trase yon figi ak grafik tòti.
  4. Nan ki ou bezwen fè premye kèk aksyon repetitif, ak Lè sa a, lòt moun.
  5. Nan ki ou bezwen fè lòt aksyon anvan ak apre repete

Pou chak travay ou bezwen bay done tès ak rezilta a espere.

Pou konprann ki jan vit ou ka deplase, ou bezwen li kondisyon yo nan pwoblèm sa yo epi mande: "ki jan yo diferan de egzanp lan?", "Kisa yo bezwen chanje nan egzanp lan pou rezoud yo?" Si elèv la reponn byen, lè sa a kite l rezoud omwen youn nan klas la, ak rès la poukont li lakay li. Si solisyon an gen siksè, Lè sa a, nou ka kòmanse eksplike kondisyon yo andedan bouk yo.
Si ou gen pwoblèm pou rezoud pwoblèm poukont ou, ou bezwen travay nan tout bagay nan klas la. Pou evite rezoud pwoblèm nan ke yo sonje desen yon chwèt, mwen rekòmande premye rezoud pwoblèm nan nan yon fason ki pa inivèsèl. Sa vle di, pou solisyon an pase premye tès la epi li pa sèvi ak konstriksyon an bouk. Oke, Lè sa a, aplike transfòmasyon reyalize inivèsalite nan solisyon an.

Bouk ak branch

Dapre mwen, li itil yo bay sijè a "sik nan branch" separeman. Se konsa, pita ou ka wè diferans ki genyen ant tcheke yon kondisyon plizyè fwa ak tcheke li yon fwa.
Travay yo pou konsolidasyon yo pral sou pwodiksyon nimewo soti nan A rive nan B, ke itilizatè a antre:
- toujou nan lòd monte.
- monte oswa desann depann sou valè yo nan A ak B.

Sijè "branch nan bouk" yo ta dwe deplase sèlman apre elèv la fin metrize teknik yo: "ranplase yon modèl ak yon varyab" ak "ranplase aksyon repetitif ak yon sik."
Rezon prensipal pou itilize branch andedan bouk se anomali nan modèl la. Nan mitan an li kraze depann sou done yo inisyal.
Pou elèv sa yo ki kapab chèche yon solisyon nan konbine teknik senp, li ase yo di "branching ka ekri andedan bouk" epi bay pwoblèm nan "pa egzanp" konplètman rezoud poukont yo.
Egzanp travay:

Itilizatè a antre nimewo X. Montre nimewo 0 a 9 nan yon kolòn epi mete yon siy '+' anfas nimewo ki egal a X.

Si 0 te antre0+
1
2
3
4
5
6
7
8
9

Si 6 te antre0
1
2
3
4
5
6+
7
8
9

Si 9 te antre0
1
2
3
4
5
6
7
8
9+

Si 777 te antre0
1
2
3
4
5
6
7
8
9

Si yon eksplikasyon tou kout pa ase pou ekri ak yon bouk, Lè sa a, ou bezwen reyalize yon solisyon inivèsèl nan menm pwoblèm nan san yo pa yon bouk.
Ou pral jwenn youn nan de opsyon:
Dezire

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);
}

Li posib

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+");
}

Mwen bay yon travay menm jan an davans, pandan y ap etidye sijè a nan branch.
Si elèv la vini ak yon opsyon "posib", Lè sa a, ou bezwen di yo ke ka gen anpil solisyon nan menm pwoblèm nan. Sepandan, yo diferan nan rezistans yo nan chanjman nan kondisyon. Poze kesyon an: "Konbyen kote nan kòd la ta bezwen korije si mwen ta dwe ajoute yon lòt nimewo?" Nan vèsyon "posib", w ap bezwen ajoute yon lòt branch epi ajoute yon nouvo nimewo nan 10 lòt kote. Nan "dezirab la" li se ase yo ajoute yon sèl branch.
Mete travay la pou repwodui opsyon "dezirab la", Lè sa a, jwenn yon modèl nan kòd la, fè yon ranplasman varyab epi ekri yon bouk.
Si ou gen yon lide sou fason pou rezoud pwoblèm sa a san yon bouk nan yon lòt fason, tanpri ekri nan kòmantè yo.

Loops nan Loops

Nan sijè sa a ou bezwen peye atansyon sou bagay sa yo:
— kontè pou bouk enteryè ak ekstèn yo dwe varyab diferan.
— kontwa an pou bouk enteryè a dwe reset anpil fwa (ki se, nan kò a nan bouk la deyò).
— nan travay pwodiksyon tèks, ou pa ka ekri premye yon lèt nan plizyè liy, epi apre dezyèm lan. Ou dwe premye enprime tout lèt yo nan premye liy lan, Lè sa a, tout lèt yo nan dezyèm lan, ak sou sa.

Li pi bon yo kòmanse eksplike sijè a nan bouk nan bouk pa eksplike enpòtans ki genyen nan reset kontwa a nan zewo.
Egzanp travay:

Itilizatè a antre de nimewo: R ak T. Enprime de liy karaktè "#". Premye liy lan ta dwe genyen karaktè R. Dezyèm liy lan gen moso T. Si nenpòt nimewo negatif, montre yon mesaj erè.

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

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

R=-1, T=6Valè R la dwe pa negatif

R = 6, T = -2Valè T dwe pa negatif

Li evidan, pwoblèm sa a tou gen omwen de solisyon.
Dezire

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;
}

Posib #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;
}

Diferans lan se ke nan solisyon "posib" la, yo te itilize yon dezyèm varyab pou pwodiksyon dezyèm liy lan. Ou ta dwe ensiste sou itilize menm varyab la pou tou de bouk. Limitasyon sa a ka jistifye pa lefèt ke yon solisyon ak yon kontwa pou de sik pral yon ilistrasyon nan tèm "kontwa reset la". Konprann tèm sa a nesesè lè rezoud pwoblèm sa yo. Kòm yon konpwomi, ou ka sove tou de solisyon yo nan pwoblèm nan.

Yon pwoblèm tipik ak lè l sèvi avèk yon varyab kontwa pou de bouk parèt tankou sa a:
R = 5, T = 11#####
######

Nimewo a nan karaktè nan dezyèm liy lan pa koresponn ak valè a nan T. Si ou bezwen èd ak pwoblèm sa a, Lè sa a, ou bezwen gade nan nòt yo sou pwoblèm tipik ak pasan. Sa a se sentòm #3. Li dyagnostike si ou ajoute yon pwodiksyon valè vann san preskripsyon imedyatman anvan dezyèm sik la. Korije pa reset. Men, li pi bon pou pa di sa touswit. Elèv la dwe eseye fòmile omwen yon ipotèz.

Gen, nan kou, yon lòt solisyon. Men, mwen pa janm wè li nan mitan elèv yo. Nan etap nan etidye sik, istwa a sou li pral distrè atansyon. Ou ka tounen vin jwenn li pita lè w aprann sou fonksyon fisèl.
Posib #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));

Pwochen travay obligatwa:

Montre nimewo yo soti nan 0 a 9. Chak nimewo ta dwe sou pwòp liy pa yo. Kantite chif nan yon liy (W) antre nan klavye a.

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

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

Si yon elèv te metrize teknik la pou ranplase yon varyab, Lè sa a, li pral fè fas byen vit. Yon pwoblèm posib yo pral ankò nan reset varyab la. Si ou pa ka okipe transfòmasyon an, sa vle di ou te prese epi ou bezwen rezoud pwoblèm ki pi senp.

Mèsi pou atansyon ou. Like epi abòne ak chanèl la.

PS Si ou jwenn fot oswa erè nan tèks la, tanpri fè m 'konnen. Sa a ka fè lè w chwazi yon pati nan tèks la epi peze "⌘ + Antre" sou Mac, ak "Ctrl / Antre" sou klavye klasik, oswa atravè mesaj prive. Si opsyon sa yo pa disponib, ekri sou erè nan kòmantè yo. Mèsi!

Se sèlman itilizatè ki anrejistre ki ka patisipe nan sondaj la. Enskri, tanpri.

Biwo vòt pou lektè san karma

  • 20,0%Mwen anseye pwofesyonèl, +12

  • 10,0%Mwen anseye pwofesyonèl, -11

  • 70,0%Mwen pa anseye, +17

  • 0,0%Mwen pa anseye, -10

  • 0,0%Lòt0

10 itilizatè yo te vote. 5 itilizatè te absteni.

Sous: www.habr.com

Add nouvo kòmantè