Sut i ddysgu sut i oresgyn anawsterau, ac ar yr un pryd ysgrifennu cylchoedd

Er gwaethaf y ffaith y byddwn yn siarad am un o'r pynciau sylfaenol, mae'r erthygl hon wedi'i hysgrifennu ar gyfer gweithwyr proffesiynol profiadol. Y nod yw dangos pa gamsyniadau sydd gan ddechreuwyr mewn rhaglennu. Ar gyfer datblygwyr gweithredol, mae'r problemau hyn wedi'u datrys ers amser maith, wedi'u hanghofio neu heb sylwi arnynt o gwbl. Efallai y bydd yr erthygl yn ddefnyddiol os bydd angen i chi helpu rhywun gyda'r pwnc hwn yn sydyn. Mae'r erthygl yn debyg i ddeunydd o lyfrau amrywiol ar raglennu gan Schildt, Stroustrup, Okulov.

Dewiswyd y pwnc am gylchoedd oherwydd bod cryn dipyn o bobl yn cael eu heithrio ohono wrth feistroli rhaglennu.

Mae'r dechneg hon wedi'i chynllunio ar gyfer myfyrwyr gwan. Fel rheol, nid yw pobl gref yn mynd yn sownd ar y pwnc hwn ac nid oes angen meddwl am dechnegau arbennig ar eu cyfer. Nod eilaidd yr erthygl yw symud y dechneg hon o'r dosbarth “gweithio i bob myfyriwr, ond dim ond un athro” i'r dosbarth “gweithio i bob myfyriwr, pob athro”. Dydw i ddim yn honni gwreiddioldeb llwyr. Os ydych chi eisoes yn defnyddio methodoleg debyg i addysgu'r pwnc hwn, ysgrifennwch sut mae'ch fersiwn chi'n wahanol. Os penderfynwch ei ddefnyddio, dywedwch wrthym sut aeth. Os disgrifir techneg debyg mewn llyfr, ysgrifennwch yr enw.


Gweithiais ar y dechneg hon am 4 blynedd, gan astudio'n unigol gyda myfyrwyr o wahanol lefelau o hyfforddiant. Mae cyfanswm o tua hanner cant o fyfyrwyr a dwy fil o oriau o ddosbarthiadau. Ar y dechrau, roedd myfyrwyr bob amser yn mynd yn sownd ar y pwnc hwn ac yn gadael. Ar ôl pob myfyriwr, addaswyd y fethodoleg a'r deunyddiau. Dros y flwyddyn ddiwethaf, nid yw myfyrwyr wedi bod yn sownd ar y pwnc hwn bellach, felly penderfynais rannu fy nghanfyddiadau.

Pam cymaint o lythyrau? Mae beiciau mor elfennol!

Fel yr ysgrifennais uchod, ar gyfer datblygwyr gweithredol ac ar gyfer myfyrwyr cryf, gellir diystyru cymhlethdod y cysyniad o ddolenni. Er enghraifft, gallwch chi roi darlith hir, gweld pennau nodio a llygaid deallus. Ond wrth geisio datrys unrhyw broblem, mae problemau stupor ac anesboniadwy yn dechrau. Ar ôl y ddarlith, mae'n debyg nad oedd gan y myfyrwyr ond dealltwriaeth rhannol. Gwaethygir y sefyllfa gan y ffaith na all myfyrwyr eu hunain leisio beth yn union yw eu rhith.
Un diwrnod sylweddolais fod myfyrwyr yn gweld fy enghreifftiau fel hieroglyffau. Hynny yw, fel darnau o destun anwahanadwy lle mae angen ichi ychwanegu llythyren “hud” a bydd yn gweithio.
Weithiau sylwais fod myfyrwyr yn meddwl bod angen i chi ddatrys problem benodol Rhywbeth arall dyluniad nad wyf wedi ymdrin ag ef eto. Er bod yr ateb angen dim ond ychydig o addasiad o'r enghraifft.

Felly deuthum i'r syniad na ddylai'r ffocws fod ar gystrawen ymadroddion, ond ar y syniad o ail-ffactorio cod ailadroddus gan ddefnyddio dolenni. Unwaith y bydd myfyrwyr wedi meistroli'r syniad hwn, gellir gwella unrhyw gystrawen heb fawr o ymarfer.

Pwy a pham ydw i'n addysgu?

Gan nad oes arholiadau mynediad, gall dosbarthiadau gynnwys myfyrwyr cryf a gwan iawn. Gallwch ddarllen mwy am fy myfyrwyr yn yr erthygl Portread o fyfyrwyr cwrs nos
Ymdrechais i sicrhau bod pawb sydd eisiau dysgu rhaglennu yn gallu ei ddysgu.
Cynhelir fy nosbarthiadau yn unigol ac mae'r myfyriwr yn talu ei arian ei hun am bob un. Mae'n ymddangos y bydd myfyrwyr yn gwneud y gorau o gostau ac yn mynnu'r lleiafswm. Fodd bynnag, mae pobl yn mynd i ddosbarthiadau wyneb yn wyneb gydag athro byw nid am y wybodaeth ei hun, ond am hyder yr hyn y maent wedi'i ddysgu, am deimlad o gynnydd ac i'w gymeradwyo gan yr arbenigwr (athro). Os na fydd myfyrwyr yn teimlo cynnydd yn eu dysgu, byddant yn gadael. Yn gyffredinol, gellir strwythuro dosbarthiadau fel bod myfyrwyr yn teimlo cynnydd wrth gynyddu nifer y strwythurau cyfarwydd. Hynny yw, yn gyntaf rydym yn astudio tra'n fanwl, yna rydym yn astudio ar gyfer, yna yn gwneud tra, ac yn awr mae gennym gwrs mil ac un noson yn barod, lle mae cylchoedd yn unig yn cael eu hastudio am ddau fis, ac ar y diwedd - myfyriwr a ysgrifennodd llyfrgell safonol dan arddywediad. Fodd bynnag, er mwyn datrys problemau ymarferol, mae angen nid yn unig gwybodaeth am y deunydd, ond hefyd annibyniaeth wrth ei gymhwyso ac wrth chwilio am wybodaeth newydd. Felly, ar gyfer cyrsiau wyneb yn wyneb, credaf mai'r egwyddor gywir yw addysgu'r lleiafswm ac annog astudiaeth annibynnol o arlliwiau a phynciau cysylltiedig. Yn y testun dolenni, rwy'n ystyried mai'r lluniad tra yw'r lleiafswm. Gallwch ddeall yr egwyddor ohono. Gan wybod yr egwyddor, gallwch feistroli'r ddau ar gyfer a gwneud-tra'ch hun.

I gyflawni meistrolaeth o'r deunydd gan fyfyrwyr gwan, nid yw disgrifio'r gystrawen yn ddigon. Mae angen rhoi tasgau mwy syml ond amrywiol a disgrifio enghreifftiau yn fanylach. Yn y pen draw, mae cyflymder datblygiad wedi'i gyfyngu gan allu'r myfyriwr i drawsnewid ymadroddion a chwilio am batrymau. Ar gyfer myfyrwyr craff, bydd y rhan fwyaf o aseiniadau yn ddiflas. Wrth astudio gyda nhw, does dim rhaid i chi fynnu datrys 100% o'r problemau. Gellir gweld fy deunydd yn fy github. Gwir, mae'r ystorfa yn debycach i grimoire warlock - ni fydd neb ond fi yn deall beth yw ble, ac os byddwch yn methu'r siec, gallwch fynd yn wallgof

Mae'r fethodoleg yn canolbwyntio ar ymarfer

Eglurir y ddamcaniaeth gan ddefnyddio'r enghraifft o ddatrys problem. Mewn dosbarth hanfodion rhaglennu lle dysgir canghennau a dolenni, yn syml, nid yw'n bosibl rhoi darlith ddefnyddiol ar un pwnc am awr gyfan. Mae 15-20 munud yn ddigon i egluro'r cysyniad. Cyfyd y prif anawsterau wrth gyflawni tasgau ymarferol.
Gall athrawon cychwynnol ysgwyd gweithredwyr, canghennau, dolenni ac araeau mewn un ddarlith. Ond bydd eu myfyrwyr yn wynebu'r broblem o gymhathu'r wybodaeth hon.
Mae angen nid yn unig dweud wrth y deunydd, ond hefyd sicrhau bod y gwrandawyr yn ei ddeall.

Mae'r ffaith o feistroli pwnc yn cael ei bennu gan sut mae'r myfyriwr yn ymdopi â gwaith annibynnol.
Pe bai myfyriwr yn llwyddo i ddatrys problem ar bwnc heb gymorth athro, yna mae'r pwnc wedi'i feistroli. Er mwyn sicrhau hunan-brofi, disgrifir pob tasg mewn tabl gyda senarios prawf. Mae trefn glir i'r tasgau. Ni argymhellir hepgor tasgau. Os yw'r dasg gyfredol yn rhy anodd, yna mae symud ymlaen i'r un nesaf yn ddiwerth. Mae hyd yn oed yn fwy cymhleth. Er mwyn i'r myfyriwr allu meistroli'r dasg gymhleth gyfredol, eglurir sawl techneg iddo gan ddefnyddio enghraifft y broblem gyntaf. Mewn gwirionedd, mae holl gynnwys y pwnc yn dibynnu ar dechnegau ar gyfer goresgyn anawsterau. Mae cylchoedd yn fwy o sgîl-effaith.

Mae'r dasg gyntaf bob amser yn enghraifft. Mae'r ail ychydig yn wahanol ac fe'i perfformir yn “annibynnol” yn syth ar ôl y cyntaf o dan oruchwyliaeth athro. Mae'r holl dasgau dilynol wedi'u hanelu at roi sylw i wahanol bethau bach a all achosi camsyniadau.

Mae esboniad yr enghraifft yn ddeialog lle mae angen i'r myfyriwr alw lluosogi a chroes-ddilysu yn ôl i wneud yn siŵr ei fod wedi meistroli cyfran o'r deunydd.

Byddaf yn banal ac yn dweud bod yr enghraifft gyntaf ar y pwnc yn bwysig iawn. Os oes gennych y deunydd ar gyfer gwaith annibynnol helaeth, gellir cywiro hepgoriadau'r enghraifft gyntaf. Os nad oes unrhyw beth arall ar wahân i'r enghraifft, yna ni fydd y myfyriwr yn fwyaf tebygol o feistroli'r pwnc.

Tra neu am?

Un o'r materion dadleuol yw'r dewis o adeiladu ar gyfer yr enghraifft: tra neu am. Unwaith, treuliodd ffrind i mi datblygwr gweithredol heb unrhyw brofiad addysgu awr yn fy argyhoeddi mai'r 'for loop' oedd yr hawsaf i'w ddeall. Roedd y dadleuon yn berwi i lawr i “popeth sydd ynddo yn glir ac wedi ei osod allan yn ei le.” Fodd bynnag, achos sylfaenol anawsterau i ddechreuwyr go iawn yw'r syniad o'r cylch ei hun, ac nid ei ysgrifennu. Os nad yw person yn deall y syniad hwn, yna bydd yn cael anhawster gyda'r gystrawen. Cyn gynted ag y gwireddir y syniad, mae problemau dylunio cod yn diflannu ar eu pen eu hunain.

Yn fy nefnyddiau, mae thema dolenni yn dilyn thema canghennog. Mae tebygrwydd allanol os a thra yn ein galluogi i lunio cyfatebiaeth uniongyrchol: “pan fo’r cyflwr yn y pennawd yn wir, yna mae’r corff yn cael ei weithredu.” Unig hynodrwydd y cylch yw bod y corff yn cael ei weithredu lawer gwaith.

Fy ail ddadl yw er bod angen llai o fformatio nag ar gyfer. Mae llai o fformatio yn golygu llai o gamgymeriadau dwp gyda choma a chromfachau ar goll. Nid yw dechreuwyr eto wedi datblygu digon o astudrwydd a manwl gywirdeb i osgoi gwallau cystrawen yn awtomatig.
Eglurir y drydedd ddadl mewn llawer o lyfrau da fel y ddadl gyntaf.

Os gall y myfyriwr drawsnewid ymadroddion yn hawdd, yna gallwch chi siarad am wrth basio. Yna bydd y myfyriwr yn dewis yr hyn y mae'n ei hoffi orau. Os yw trawsnewidiadau yn achosi anawsterau, yna mae'n well peidio â thynnu eich sylw. Gadewch i'r myfyriwr ddatrys popeth yn gyntaf gan ddefnyddio tra. Unwaith y byddwch wedi meistroli pwnc dolenni, gallwch ailysgrifennu'r atebion i ymarfer trosi tra i.
Mae dolenni ôl-gyflwr yn fwystfil eithaf prin. Nid wyf yn treulio unrhyw amser arno o gwbl. Os yw myfyriwr wedi meistroli'r syniadau o adnabod patrymau a thrawsnewid ymadroddion, gall ddarganfod hynny heb fy nghymorth.

Wrth ddangos yr enghraifft gyntaf i fyfyrwyr cryf, tynnaf sylw at y ffaith ei bod yn bwysig yn yr enghraifft gyntaf i gofnodi nid yn unig yr ateb, ond hefyd y gadwyn gyfan o gamau gweithredu a arweiniodd at y canlyniad. Gall myfyrwyr diog esgeuluso'r ysgrifennu a chopïo'r algorithm terfynol yn unig. Mae angen iddynt fod yn argyhoeddedig y bydd tasg anodd yn dod i'w rhan un diwrnod. Er mwyn ei ddatrys, bydd angen i chi ddilyn y camau fel yn yr enghraifft hon. Dyna pam ei bod yn bwysig cofnodi pob cam. Yn y problemau canlynol bydd yn bosibl gadael fersiwn terfynol y datrysiad yn unig.

Y prif syniad o awtomeiddio yw ein bod yn ymddiried cyfrifiadur i wneud gwaith arferol i berson. Un o'r technegau sylfaenol yw dolenni ysgrifennu. Mae'n cael ei ddefnyddio pan fydd sawl gweithred ailadrodd union yr un fath yn cael eu hysgrifennu mewn rhaglen yn olynol.

Mae eglur yn well nag sydd ymhlyg

Gallai ymddangos yn syniad da arddangos yr un ymadrodd sawl gwaith yn y dasg dolennu gyntaf. Er enghraifft:

Hurray, mae'n gweithio!
Hurray, mae'n gweithio!
Hurray, mae'n gweithio!
Hurray, mae'n gweithio!
Hurray, mae'n gweithio!
Hurray, mae'n gweithio!
Hurray, mae'n gweithio!
Hurray, mae'n gweithio!

Mae'r opsiwn hwn yn ddrwg oherwydd nid yw gwerth y cownter yn weladwy yn yr allbwn. Mae hon yn broblem i ddechreuwyr. Peidiwch â diystyru hi. Ar y dechrau, y dasg hon oedd y gyntaf, a'r ail oedd y dasg o ddod o hyd i gyfres o rifau mewn trefn esgynnol. Roedd angen cyflwyno termau ychwanegol “amserau beicio N” a “seiclo o A i B”, sydd yn eu hanfod yr un peth. Er mwyn peidio â chreu endidau diangen, penderfynais ddangos enghraifft yn unig gydag allbwn cyfres o rifau. Ychydig iawn o bobl sy'n llwyddo i ddysgu sut i ddal cownter yn eu pen a modelu ymddygiad rhaglen yn eu pen heb baratoi. Mae rhai myfyrwyr yn dod ar draws modelu meddwl am y tro cyntaf ar bwnc cylchoedd.
Ar ôl ychydig o ymarfer, rwy'n rhoi'r dasg o ailadrodd yr un testun i'w ddatrys yn annibynnol. Os byddwch yn rhoi rhifydd gweladwy yn gyntaf ac yna un anweledig, bydd myfyrwyr yn cael llai o broblemau. Weithiau mae'r awgrym “peidiwch ag ysgrifennu'r cownter ar y sgrin” yn ddigon.

Sut mae eraill yn ei esbonio?

Yn y rhan fwyaf o ddeunyddiau addysgol ar y Rhyngrwyd, rhoddir cystrawen y gylchred fel rhan o “ddarlith”. Er enghraifft, ar developer.mozilla.org (ar hyn o bryd), disgrifir sawl llun arall ynghyd â'r ddolen tra. Yn yr achos hwn, dim ond y dyluniadau eu hunain sy'n cael eu rhoi ar ffurf templedi. Disgrifir canlyniad eu lansiad mewn geiriau, ond nid oes unrhyw enghraifft. Yn fy marn i, mae cyflwyniad o'r fath o'r pwnc yn lluosi defnyddioldeb deunyddiau o'r fath â sero. Gall y myfyriwr ailysgrifennu'r cod a'i redeg ei hun, ond mae angen safon arno o hyd i gymharu. Sut allwch chi ddeall bod enghraifft wedi'i hailysgrifennu'n gywir os nad oes dim i gymharu'r canlyniad ag ef?
Pan roddir templed yn unig, heb enghraifft, mae'n dod yn anoddach fyth i'r myfyriwr. Sut i ddeall bod y darnau cod yn cael eu gosod yn gywir yn y templed? Gallwch geisio ysgrifennu rhywsut, ac yna rhedeg. Ond os nad oes safon i gymharu'r canlyniad, yna ni fydd lansio yn helpu chwaith.

Yn y cwrs C++ ar Sythweledol, mae cystrawen y ddolen wedi'i chladdu yn nhrydedd dudalen Darlith 4 ar y testun “gweithredwyr”. Wrth egluro cystrawen dolenni, rhoddir pwyslais arbennig ar y term “gweithredwr”. Cyflwynir y term fel set o ffeithiau fel “symbol; datganiad yw hwn", "datganiad cyfansawdd yw {}", "rhaid i gorff y ddolen fod yn ddatganiad". Nid wyf yn hoffi'r dull hwn oherwydd mae'n ymddangos ei fod yn cuddio perthnasoedd pwysig y tu ôl i un tymor. Mae angen dosrannu cod ffynhonnell rhaglen yn dermau ar y lefel hon ar ddatblygwyr crynhowyr i weithredu'r fanyleb iaith, ond nid gan fyfyrwyr fel brasamcan cyntaf. Anaml y mae newydd-ddyfodiaid i raglenni yn ddigon manwl i dalu sylw mor fanwl i dermau. Mae’n berson prin sy’n cofio ac yn deall geiriau newydd y tro cyntaf. Ni all bron neb gymhwyso term y maent newydd ei ddysgu yn gywir. Felly, mae myfyrwyr yn cael llawer o wallau fel “Ysgrifennais tra (a<7); {, ond nid yw'r rhaglen yn gweithio."
Yn fy marn i, ar y dechrau mae'n well rhoi cystrawen y gwaith adeiladu ar unwaith gyda cromfachau. Dim ond os oes gan y myfyriwr gwestiwn penodol y dylid esbonio’r opsiwn heb gromfachau: “pam nad oes cromfachau ac mae’n gweithio.”

Yn llyfr Okulov yn 2012 “Hanfodion Rhaglennu,” mae cyflwyniad i ddolenni yn dechrau gyda’r patrwm, yna’n rhoi argymhellion ar gyfer ei ddefnyddio, ac yna’n mynd yn syth i adran arbrofol y wers. Deallaf fod y llyfr wedi'i ysgrifennu ar gyfer y lleiafrif hwnnw o fyfyrwyr galluog iawn nad ydynt yn dod i'm dosbarthiadau yn aml.

Mewn llyfrau poblogaidd, mae canlyniad darnau cod bob amser yn cael ei ysgrifennu. Er enghraifft, rhifyn 8 “Java 2015. The Complete Guide” Shildt. Yn gyntaf, rhoddir templed, yna rhaglen enghreifftiol ac yn syth ar ei ôl - canlyniad gweithredu.

Fel enghraifft, ystyriwch ddolen tra sy'n gwneud y gwrthwyneb
cyfrif i lawr yn dechrau o 10, a dangosir union 10 llinell o “fesurau”:

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

Ar ôl ei rhedeg, mae'r rhaglen hon yn allbynnu deg "cylch" fel a ganlyn:
такт 10
такт 9
такт 8
такт 7
такт 6
такт 5
такт 4
такт 3
такт 2
такт 1

Mae'r dull o ddisgrifio templed, rhaglen enghreifftiol a chanlyniad y rhaglen hefyd yn cael ei ddefnyddio yn y llyfr “Javascript for Kids” ac yn y cwrs js ar w3schools.com. Mae fformat y dudalen we hyd yn oed yn caniatáu i'r enghraifft hon fod yn rhyngweithiol.

Aeth llyfr 2016 Stroustrup, Egwyddorion ac Ymarfer Defnyddio C++ hyd yn oed ymhellach. Y cam cyntaf yw egluro pa ganlyniad y dylid ei gael, ac ar ôl hynny dangosir testun y rhaglen. Ar ben hynny, maen nhw'n cymryd nid yn unig raglen ar hap fel enghraifft, ond yn rhoi taith i hanes. Mae hyn yn helpu i dynnu sylw ato: “Edrychwch, nid dim ond rhywfaint o destun diwerth yw hwn. Rydych chi'n gweld rhywbeth ystyrlon."

Fel enghraifft o iteriad, ystyriwch y rhaglen gyntaf a weithredwyd ar beiriant rhaglen wedi'i storio (EDSAC). Fe'i hysgrifennwyd gan David Wheeler yn Labordy Cyfrifiadurol Prifysgol Caergrawnt, Lloegr ar Fai 6, 1949. Mae'r rhaglen hon yn cyfrifo ac yn argraffu rhestr syml o sgwariau.
0 0
1 1
2 4
3 9
4 16
...
98 9604
99 9801

Yma, mae pob llinell yn cynnwys rhif ac yna nod tab ('t') a sgwâr y rhif hwnnw. Mae fersiwn C++ o'r rhaglen hon yn edrych fel hyn:

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

Yn ddiddorol, ni ddisgrifir y patrwm cystrawen yn y llyfr hwn. Stroustrup yn llawlyfr yr hyfforddwr (cyfieithu) yn pwysleisio ei fod yn parchu deallusrwydd ei fyfyrwyr. Efallai bod y gallu i adnabod patrwm mewn sawl enghraifft yn cael ei ystyried yn amlygiad o ddeallusrwydd o'r fath.

Fel yr egluraf fy hun

Ymagwedd Stroustrup: disgrifio'r canlyniad, yna datrys y broblem, ac yna dadansoddiad annibynnol gan y myfyriwr - yn ymddangos fel y mwyaf meddylgar. Felly, penderfynais ei gymryd fel sail, ond dywedais wrtho gan ddefnyddio enghraifft lai hanesyddol - y dasg o ddeillio “tabl cynnwys”. Mae’n ffurfio angor adnabyddadwy fel y gallwch wedyn ddweud “cofiwch y dasg am y tabl cynnwys” ac fel bod myfyrwyr yn cofio hyn yn union. Yn fy enghraifft, ceisiais atal dau arall o'r camsyniadau mwyaf cyffredin. Nesaf byddaf yn ysgrifennu amdanynt yn fanylach.

Yn y dasg hon fe'n cyflwynir i dechnegau ar gyfer datrys problemau cymhleth. Mae angen gwneud y penderfyniad cychwynnol yn gyntefig ac yn syml. Wel, yna gallwch chi feddwl am sut i wella'r datrysiad hwn.
Введение
Глава 1
Глава 2
Глава 3
Глава 4
Глава 5
Глава 6
Глава 7
Заключение

Yn ôl fy arsylwadau, mae’r dull “templed-enghraifft-canlyniad” mewn cyfuniadau amrywiol yn dal i arwain at y ffaith bod myfyrwyr yn gweld y cylchred fel hieroglyff. Amlygodd hyn ei hun yn y ffaith nad oeddent yn deall pam fod amod i ysgrifennu yno, sut i ddewis rhwng i++ ac i— a phethau eraill ymddangosiadol amlwg. Er mwyn osgoi'r camsyniadau hyn, dylai'r dull o siarad am gylchoedd bwysleisio ystyr ailadrodd gweithredoedd unfath a dim ond wedyn eu ffurfioli gan ddefnyddio strwythur. Felly, cyn rhoi cystrawen y ddolen, mae angen ichi ddatrys y broblem yn uniongyrchol. Mae datrysiad cyntefig i broblem y tabl cynnwys yn edrych fel hyn:

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

Sut y gellir ei wella?
Disodli gweithredoedd undonog gyda chylch.
Pa gamau sy'n cael eu hailadrodd yn olynol heb newidiadau?
Nid oes dim yn y darn hwn. Fodd bynnag, mae'r gorchmynion ar gyfer arddangos y gair “Pennod” gyda rhif yn debyg iawn i'w gilydd.
Felly, y cam nesaf yw darganfod y gwahaniaeth rhwng y darnau. Dim ond yn y dasg hon y mae popeth yn amlwg, yna ni fydd gorchmynion sengl yn cael eu hailadrodd, ond blociau o god o 5 llinell neu fwy. Bydd yn rhaid i chi chwilio nid yn unig yn y rhestr o orchmynion, ond mewn cystrawennau canghennog neu ddolen.
Yn yr enghraifft, mae'r gwahaniaeth rhwng y gorchmynion yn y rhif ar ôl y gair "Pennod".
Unwaith y darganfyddir y gwahaniaeth, mae angen i chi ddeall patrwm y newid. Y darn gwahanol yw'r rhif? A yw'n cynyddu neu'n lleihau'n gyson? Sut mae gwerth rhif yn newid rhwng dau dîm ochr yn ochr?
Yn yr enghraifft, mae'r nifer ar ôl y gair “Pennod” yn cynyddu mewn cynyddiadau o 1. Mae'r gwahaniaeth yn cael ei ddarganfod, mae'r patrwm yn cael ei ddatgelu. Nawr gallwch chi ddisodli'r darn gwahanol gyda newidyn.
Mae angen i chi ddatgan newidyn o'r fath cyn y cyntaf o'r darnau ailadrodd. Fel arfer gelwir newidyn o'r fath yn I neu j neu rywbeth manylach. Rhaid i'w werth cychwynnol fod yn gyfartal â'r gwerth cyntaf a ddangosir ar y sgrin. Yn yr enghraifft, y gwerth cyntaf yw 1.
Pa werth cychwynnol y dylid ei gymryd i ddangos y gyfres o rifau “100, 101, 102, 103, 104, 105”?
Y rhif cyntaf yn y gyfres hon yw 100.
Ar ôl pob gorchymyn allbwn, mae angen i chi gynyddu gwerth y newidyn hwn gan 1. Yr uned hon yw'r cam newid.
Pa gam fydd yn y gyfres o rifau “100, 102, 104, 106”?
Cam 2 yn y rhes hon.
Ar ôl amnewid y darn gwahanol gyda newidyn, bydd y cod yn edrych fel hyn:

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

Ar ôl cymhwyso'r dechneg “mynegi patrwm newidyn” yn y cod, rydych chi'n cael sawl grŵp o gamau union yr un fath sy'n mynd yn olynol. Nawr gellir disodli camau ailadrodd gyda chylch.

Mae'r dilyniant o ddatrys problem lle mae angen i chi ddefnyddio dolenni yn cynnwys y camau canlynol:

  1. Datryswch “pen ymlaen” gyda llawer o orchmynion ar wahân
  2. Dewch o hyd i batrwm
  3. Mynegwch batrwm newidyn
  4. Dylunio fel cylch

Nesaf, cyflwynir termau newydd fel nad yw'r myfyriwr yn ei gael ei hun yn y sefyllfa o "Rwy'n deall popeth, ond ni allaf ei ddweud":
— mae rhifydd bob amser yn newidyn sydd ei angen i olrhain nifer y camau mewn dolen. Yn nodweddiadol cyfanrif sy'n cael ei gymharu â'r cyfyngiad.
— gwrth-gam — disgrifiad o batrwm newidiadau rhifydd.
- cyfyngiad - rhif neu newidyn y mae'r rhifydd yn cael ei gymharu ag ef fel bod yr algorithm yn derfynol. Mae'r gwrthwerth yn newid i nesáu at y terfyn.
— corff dolen — set o orchmynion a fydd yn cael eu hailadrodd. Pan maen nhw'n dweud “mae'r gorchymyn wedi'i ysgrifennu y tu mewn i ddolen,” maen nhw'n golygu'r corff.
— iteriad dolen — gweithrediad un-amser y corff dolen.
— amod dolen — mynegiant rhesymegol sy'n pennu a fydd iteriad arall yn cael ei gyflawni. (Efallai bod dryswch gyda strwythurau canghennog yma)
Mae angen i chi fod yn barod am y ffaith y bydd myfyrwyr yn defnyddio termau at ddibenion eraill i ddechrau. Mae hyn yn berthnasol i'r cryf a'r gwan. Mae sefydlu iaith gyffredin yn gelfyddyd. Nawr byddaf yn ysgrifennu'n fyr: mae angen i chi osod y dasg "amlygwch y darn cod gyda <term>" a defnyddio'r termau hyn eich hun yn gywir mewn sgwrs.
Ar ôl trawsnewid gyda dolen, ceir y darn:

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

Y prif gamsyniad

Un camsyniad poblogaidd ymhlith myfyrwyr yw eu bod yn gosod gweithredoedd o fewn dolen y mae angen eu gwneud unwaith yn unig. Er enghraifft fel hyn:

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

Mae myfyrwyr yn mynd i'r afael â'r broblem hon drwy'r amser, ar y dechrau ac mewn problemau mwy cymhleth.
Awgrym allweddol yn yr achos hwn:

Sawl gwaith y dylech chi ailadrodd y gorchymyn: unwaith neu sawl gwaith?

Nid yw'r gorchmynion ar gyfer argraffu'r geiriau "Cyflwyniad" a "Casgliad" a datgan a chychwyn y newidyn i yn debyg i gamau ailadroddus eraill. Dim ond unwaith y cânt eu gweithredu, sy'n golygu bod angen eu hysgrifennu y tu allan i'r corff dolen.

Dylai tri cham y datrysiad aros yn y cod fel y gallwch gyfeirio atynt yn ddiweddarach rhag ofn y bydd anawsterau. Mae'n ddigon i wneud sylwadau ar y ddau opsiwn cyntaf fel nad ydynt yn ymyrryd.
Dylid tynnu sylw'r myfyriwr at y ffeithiau canlynol:
— Mewn cyflwr dolen, mae rhifydd a therfyn fel arfer yn cael eu cymharu. Gall y cownter newid yng nghorff y ddolen, ond ni all y terfyn. I dorri'r rheol hon, mae angen i chi lunio rhesymau cymhellol.
— Mae gorchmynion ar gyfer arddangos y geiriau “Introduction” a “Casgliad” wedi'u lleoli y tu allan i gorff y ddolen. Mae angen inni eu perfformio 1 amser. “Cyflwyniad” - cyn ailadrodd y gweithredoedd, “Casgliad” - ar ôl.
Yn y broses o atgyfnerthu'r pwnc hwn, gan feistroli'r rhai nesaf, yn ogystal â delio ag anawsterau, mae'n ddefnyddiol i fyfyrwyr cryf hyd yn oed ofyn y cwestiwn: "Sawl gwaith y mae angen cyflawni'r weithred hon? Un neu lawer?

Datblygu sgiliau ychwanegol

Yn y broses o astudio cylchoedd, mae myfyrwyr hefyd yn datblygu'r sgil o wneud diagnosis a datrys problemau. I wneud diagnosteg, mae angen i'r myfyriwr gyflwyno'r canlyniad a ddymunir a'i gymharu â'r canlyniad gwirioneddol. Mae gweithredoedd cywiro yn dibynnu ar y gwahaniaeth rhyngddynt.
Gan nad oes gan fyfyrwyr ar y cam hwn lawer o syniad o hyd o'r canlyniad “dymunol”, gallant ganolbwyntio ar ddata prawf. Fel rheol, nid oes neb ar hyn o bryd yn deall beth all fynd o'i le a sut i ddelio ag ef. Felly, rwy'n ysgrifennu mewn llyfr nodiadau ddisgrifiad o broblemau nodweddiadol a sawl ffordd i'w datrys. Tasg y myfyriwr ei hun yw dewis yr un mwyaf addas.
Mae angen cofnod i ofyn “a ddigwyddodd yr hyn a ddisgwyliwyd?”, “Pa un o’r sefyllfaoedd hyn a ddigwyddodd nawr?”, “A wnaeth y datrysiad cymhwysol helpu?”

  1. Mae nifer y camau gweithredu 1 yn llai neu'n fwy na'r disgwyl. Atebion:
    — cynyddu gwerth cychwynnol y rhifydd 1.
    — disodli'r gweithredwr cymhariaeth gaeth (< neu >) ag un nad yw'n llym (<= neu >=).
    — newid y gwerth terfyn i 1.
  2. Mae gweithredoedd mewn dolen yn cael eu perfformio heb stopio, am gyfnod amhenodol. Atebion:
    — ychwanegu gorchymyn newid cownter os yw ar goll.
    — trwsio'r gorchymyn newid cownter fel bod ei werth yn dod yn agosach at y terfyn.
    — tynnwch y gorchymyn newid cyfyngiad os yw yng nghorff y ddolen.
  3. Mae nifer y gweithredoedd mewn dolen fwy nag 1 yn llai neu'n fwy na'r disgwyl. Ni chafodd y weithred yn y ddolen ei chyflawni hyd yn oed unwaith. Yn gyntaf mae angen i chi ddarganfod gwerthoedd gwirioneddol y newidynnau ychydig cyn i'r ddolen ddechrau. Atebion:
    — newid gwerth cychwynnol y cyfyngiad
    — newid gwerth cychwynnol y rhifydd

Mae problem 3 fel arfer yn ymwneud â defnyddio'r newidyn anghywir neu beidio ag ailosod y rhifydd i sero.

Ar ôl yr esboniad hwn, efallai y bydd gan y myfyriwr amryw o gamsyniadau o hyd ynghylch sut mae dolenni'n gweithio.
Er mwyn chwalu'r rhai mwyaf cyffredin, rwy'n rhoi'r tasgau canlynol i chi:

  1. Lle mae'r terfyn, gwerth rhif cychwynnol, neu wrthgam yn cael ei gofnodi gan y defnyddiwr.
  2. Yn yr hwn y mae'n rhaid defnyddio'r gwrthwerth mewn rhyw fynegiad rhifyddol. Mae'n ddoeth defnyddio rhifydd yn y mynegiant radical neu yn yr enwadur fel bod y gwahaniaeth yn aflinol.
  3. Lle nad yw'r gwerth cownter yn cael ei arddangos ar y sgrin tra bod y ddolen yn rhedeg. Er enghraifft, arddangos y nifer gofynnol o ddarnau testun union yr un fath neu dynnu ffigur gyda graffeg crwban.
  4. Yn y mae angen i chi berfformio rhai gweithredoedd ailadroddus yn gyntaf, ac yna eraill.
  5. Yn y mae angen i chi berfformio gweithredoedd eraill cyn ac ar ôl ailadrodd

Ar gyfer pob tasg mae angen i chi ddarparu data prawf a'r canlyniad disgwyliedig.

Er mwyn deall pa mor gyflym y gallwch chi symud, mae angen i chi ddarllen termau'r problemau hyn a gofyn: "sut maen nhw'n wahanol i'r enghraifft?", "Beth sydd angen ei newid yn yr enghraifft i'w datrys?" Os bydd y myfyriwr yn ateb yn ystyrlon, yna gadewch iddo ddatrys o leiaf un yn y dosbarth, a'r gweddill gartref ar ei ben ei hun. Os yw'r ateb yn llwyddiannus, yna gallwn ddechrau esbonio'r amodau y tu mewn i'r dolenni.
Os ydych chi'n cael problemau datrys problemau ar eich pen eich hun, mae angen i chi weithio trwy bopeth yn y dosbarth. Er mwyn osgoi datrys y broblem yn atgoffa rhywun o dynnu dylluan, rwy'n argymell datrys y broblem yn gyntaf mewn ffordd nad yw'n gyffredinol. Hynny yw, fel bod yr ateb yn pasio'r prawf cyntaf ac nad yw'n defnyddio'r adeiladwaith dolen. Wel, yna cymhwyso trawsnewidiadau i gyflawni cyffredinolrwydd yr ateb.

Dolenni a changhennau

Yn fy marn i, mae'n ddefnyddiol rhoi'r testun “cylchoedd o fewn canghennau” ar wahân. Er mwyn i chi allu gweld yn ddiweddarach y gwahaniaeth rhwng gwirio cyflwr sawl gwaith a'i wirio unwaith.
Bydd y tasgau ar gyfer cydgrynhoi yn ymwneud ag allbynnu rhifau o A i B, sy'n cael eu mewnbynnu gan y defnyddiwr:
- bob amser mewn trefn esgynnol.
- esgyn neu ddisgyn yn dibynnu ar werthoedd A a B.

Dim ond ar ôl i’r myfyriwr feistroli’r technegau y dylid symud y testun “canghennu o fewn dolenni” ymlaen: “disodli patrwm â newidyn” a “disodli gweithredoedd ailadroddus â chylchred.”
Y prif reswm dros ddefnyddio canghennau y tu mewn i ddolenni yw anghysondebau yn y patrwm. Yn y canol mae'n torri yn dibynnu ar y data cychwynnol.
I'r myfyrwyr hynny sy'n gallu chwilio am ateb trwy gyfuno technegau syml, mae'n ddigon dweud “gellir ysgrifennu canghennog y tu mewn i ddolenni” a rhoi'r broblem “er enghraifft” yn gyfan gwbl i'w datrys yn annibynnol.
Tasg enghreifftiol:

Mae'r defnyddiwr yn nodi'r rhif X. Dangoswch y rhifau o 0 i 9 mewn colofn a rhowch arwydd '+' gyferbyn â'r rhif sy'n hafal i X.

Os cofnodwyd 00+
1
2
3
4
5
6
7
8
9

Os cofnodwyd 60
1
2
3
4
5
6+
7
8
9

Os cofnodwyd 90
1
2
3
4
5
6
7
8
9+

Os cofnodwyd 7770
1
2
3
4
5
6
7
8
9

Os nad yw esboniad byr yn ddigon i ysgrifennu gyda dolen, yna mae angen i chi gael ateb cyffredinol i'r un broblem heb ddolen.
Byddwch yn cael un o ddau opsiwn:
Dymunol

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

Posibl

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

Rwy'n rhoi tasg debyg ymlaen llaw, wrth astudio pwnc canghennog.
Os bydd y myfyriwr yn cynnig opsiwn “posibl”, yna mae angen i chi ddweud wrthyn nhw y gall fod llawer o atebion i'r un broblem. Fodd bynnag, maent yn wahanol yn eu gwrthwynebiad i newidiadau mewn gofynion. Gofynnwch y cwestiwn: “Faint o lefydd yn y cod fyddai angen eu cywiro pe bai’n rhaid i mi ychwanegu rhif arall?” Yn y fersiwn “posibl”, bydd angen i chi ychwanegu un gangen arall ac ychwanegu rhif newydd mewn 10 lle arall. Yn y “dymunol” digon yw ychwanegu un gangen yn unig.
Gosodwch y dasg i atgynhyrchu'r opsiwn "dymunol", yna dod o hyd i batrwm yn y cod, perfformio newidyn newydd ac ysgrifennu dolen.
Os oes gennych chi syniad sut i ddatrys y broblem hon heb ddolen mewn rhyw ffordd arall, ysgrifennwch y sylwadau.

Dolenni o fewn Dolenni

Yn y pwnc hwn mae angen i chi dalu sylw i'r canlynol:
— rhaid i'r cownteri ar gyfer y dolenni mewnol ac allanol fod yn newidynnau gwahanol.
- rhaid ailosod y cownter ar gyfer y ddolen fewnol lawer gwaith (hynny yw, yng nghorff y ddolen allanol).
— mewn tasgau allbwn testun, ni allwch ysgrifennu un llythyren mewn sawl llinell yn gyntaf, ac yna'r ail. Rhaid i chi yn gyntaf argraffu holl lythrennau'r llinell gyntaf, yna holl lythrennau'r ail, ac yn y blaen.

Mae'n well dechrau esbonio pwnc dolenni o fewn dolenni trwy egluro pwysigrwydd ailosod y rhifydd i sero.
Tasg enghreifftiol:

Mae'r defnyddiwr yn mewnbynnu dau rif: R a T. Argraffwch ddwy linell o "#" nodau. Dylai'r llinell gyntaf gynnwys nodau R. Mae'r ail linell yn cynnwys darnau T. Os oes unrhyw rif yn negyddol, dangoswch neges gwall.

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

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

R=-1, T=6Rhaid i'r gwerth R fod yn annegyddol

R=6, T=-2Rhaid i werth T fod yn annegyddol

Yn amlwg, mae gan y broblem hon o leiaf ddau ateb hefyd.
Dymunol

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

#1 posib

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

Y gwahaniaeth yw bod ail newidyn wedi'i ddefnyddio yn yr ateb "posibl", i allbynnu'r ail linell. Dylech fynnu defnyddio'r un newidyn ar gyfer y ddwy ddolen. Gellir cyfiawnhau'r cyfyngiad hwn gan y ffaith y bydd datrysiad gydag un rhifydd am ddau gylchred yn enghraifft o'r term “ailosod cownter”. Mae deall y term hwn yn angenrheidiol wrth ddatrys y problemau canlynol. Fel cyfaddawd, gallwch arbed y ddau ateb i'r broblem.

Mae problem nodweddiadol gyda defnyddio un newidyn rhifydd ar gyfer dwy ddolen yn ymddangos fel hyn:
R=5, T=11#####
######

Nid yw nifer y nodau yn yr ail linell yn cyfateb i werth T. Os oes angen help arnoch gyda'r broblem hon, yna mae angen ichi edrych i mewn i'r nodiadau am broblemau nodweddiadol gyda dolenni. Dyma symptom #3. Mae'n cael ei ddiagnosio os ydych chi'n ychwanegu allbwn gwrthwerth yn union cyn yr ail gylchred. Wedi'i gywiro trwy ailosod. Ond mae'n well peidio â dweud hyn ar unwaith. Rhaid i'r myfyriwr geisio ffurfio o leiaf un ddamcaniaeth.

Mae yna ateb arall, wrth gwrs. Ond nid wyf erioed wedi ei weld ymhlith myfyrwyr. Ar y cam o astudio cylchoedd, bydd y stori amdano yn tynnu sylw. Gallwch ddod yn ôl ato yn ddiweddarach wrth ddysgu am swyddogaethau llinynnol.
#2 posib

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

Tasg ofynnol nesaf:

Dangoswch y rhifau o 0 i 9. Dylai pob rhif fod ar ei linell ei hun. Mae nifer y digidau mewn llinell (W) yn cael ei gofnodi o'r bysellfwrdd.

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

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

Os yw myfyriwr wedi meistroli'r dechneg o ddisodli newidyn, yna bydd yn ymdopi'n eithaf cyflym. Problem bosibl eto fydd ailosod y newidyn. Os na allwch ymdopi â'r trawsnewid, mae'n golygu eich bod ar frys a bod angen i chi ddatrys problemau symlach.

Diolch am eich sylw. Hoffwch a thanysgrifiwch i'r sianel.

ON Os dewch chi o hyd i deipos neu wallau yn y testun, rhowch wybod i mi. Gellir gwneud hyn trwy ddewis rhan o'r testun a phwyso "⌘ + Enter" ar Mac, a "Ctrl / Enter" ar fysellfyrddau clasurol, neu drwy negeseuon preifat. Os nad yw'r opsiynau hyn ar gael, ysgrifennwch am wallau yn y sylwadau. Diolch!

Dim ond defnyddwyr cofrestredig all gymryd rhan yn yr arolwg. Mewngofnodios gwelwch yn dda.

Pôl i ddarllenwyr heb karma

  • 20,0%Rwy'n addysgu'n broffesiynol, +12

  • 10,0%Rwy'n addysgu'n broffesiynol, -11

  • 70,0%Nid wyf yn dysgu, +17

  • 0,0%Nid wyf yn dysgu, -10

  • 0,0%Arall0

Pleidleisiodd 10 o ddefnyddwyr. Ataliodd 5 o ddefnyddwyr.

Ffynhonnell: hab.com

Ychwanegu sylw