ችግሮችን እንዴት ማሸነፍ እንደሚቻል እንዴት ማስተማር እንደሚቻል, እና በተመሳሳይ ጊዜ ዑደቶችን ይፃፉ

ምንም እንኳን ስለ አንድ መሠረታዊ ርዕሰ ጉዳዮች ብንነጋገርም, ይህ ጽሑፍ የተፃፈው ልምድ ላላቸው ባለሙያዎች ነው. ግቡ ጀማሪዎች በፕሮግራም ውስጥ ምን የተሳሳቱ አመለካከቶችን ማሳየት ነው። ለተለማመዱ ገንቢዎች, እነዚህ ችግሮች ለረጅም ጊዜ ተፈትተዋል, ተረስተዋል ወይም ጨርሶ አልተስተዋሉም. በዚህ ርዕስ ላይ አንድ ሰው በድንገት መርዳት ከፈለጉ ጽሑፉ ጠቃሚ ሊሆን ይችላል። ጽሁፉ በሺልድት ፣ስትሮስትሩፕ ፣ኦኩሎቭ በፕሮግራም አወጣጥ ላይ ከተለያዩ መጽሃፍቶች ጋር ተመሳሳይነት አለው።

ስለ ዑደቶች ርዕሰ ጉዳይ ተመርጧል ምክንያቱም ፕሮግራሚንግ በሚማሩበት ጊዜ ብዙ ሰዎች ከሱ ስለሚገለሉ ነው።

ይህ ዘዴ ለደካማ ተማሪዎች የተዘጋጀ ነው. እንደ አንድ ደንብ, ጠንካራ ሰዎች በዚህ ርዕስ ላይ አይጣበቁም እና ለእነሱ ልዩ ቴክኒኮችን ማዘጋጀት አያስፈልግም. የጽሁፉ ሁለተኛ ደረጃ ግብ ይህንን ዘዴ "ለሁሉም ተማሪዎች ይሰራል, ግን አንድ አስተማሪ ብቻ" ክፍል ወደ "ለሁሉም ተማሪዎች, ለሁሉም አስተማሪዎች" ክፍል መሄድ ነው. ፍፁም ኦርጅናሊቲ አልልም። ይህንን ርዕስ ለማስተማር ተመሳሳይ ዘዴን እየተጠቀሙ ከሆነ፣ እባክዎን የእርስዎ ስሪት እንዴት እንደሚለያይ ይፃፉ። ለመጠቀም ከወሰኑ እንዴት እንደሄደ ይንገሩን. ተመሳሳይ ዘዴ በመጽሃፍ ውስጥ ከተገለጸ, እባክዎን ስሙን ይጻፉ.


በዚህ ዘዴ ለ 4 ዓመታት ሠርቻለሁ, ከተለያዩ የስልጠና ደረጃዎች ተማሪዎች ጋር በተናጠል በማጥናት. በአጠቃላይ ወደ ሃምሳ የሚጠጉ ተማሪዎች እና ሁለት ሺህ ሰዓታት ክፍሎች አሉ. መጀመሪያ ላይ ተማሪዎች ሁልጊዜ በዚህ ርዕስ ላይ ተጣብቀው ሄዱ. ከእያንዳንዱ ተማሪ በኋላ, ዘዴው እና ቁሳቁሶች ተስተካክለዋል. ባለፈው ዓመት፣ ተማሪዎች በዚህ ርዕስ ላይ ተጣብቀው ስለሌለ ግኝቶቼን ለማካፈል ወሰንኩ።

ለምን ብዙ ደብዳቤዎች? ዑደቶች በጣም የመጀመሪያ ደረጃ ናቸው!

ከላይ እንደጻፍኩት, ገንቢዎችን ለሚለማመዱ እና ለጠንካራ ተማሪዎች, የ loops ጽንሰ-ሐሳብ ውስብስብነት ሊገመት ይችላል. ለምሳሌ, ረጅም ንግግር መስጠት ይችላሉ, የሚነቀንቁ ጭንቅላትን እና የማሰብ ችሎታ ያላቸው ዓይኖችን ይመልከቱ. ነገር ግን ማንኛውንም ችግር ለመፍታት በሚሞከርበት ጊዜ ድንዛዜ እና የማይገለጹ ችግሮች ይጀምራሉ. ከትምህርቱ በኋላ ተማሪዎቹ ምናልባት ከፊል ግንዛቤ ብቻ ነበራቸው። ተማሪዎቹ ራሳቸው የማታለላቸው ነገር ምን እንደሆነ በትክክል መናገር ባለመቻላቸው ሁኔታውን ተባብሷል።
አንድ ቀን ተማሪዎች የእኔን ምሳሌዎች እንደ ሂሮግሊፍስ እንደሆኑ ተረዳሁ። ማለትም ፣ ልክ እንደ የማይነጣጠሉ የጽሑፍ ቁርጥራጮች አንዳንድ “አስማት” ፊደል ማከል ያስፈልግዎታል እና ይሰራል።
አንዳንድ ጊዜ ተማሪዎች አንድን የተወሰነ ችግር ለመፍታት እንደሚያስፈልግዎ እንደሚያስቡ አስተውያለሁ ሌላ ነገር እስካሁን ያልገለጽኩት ንድፍ። ምንም እንኳን መፍትሄው ምሳሌውን ትንሽ ማሻሻያ ብቻ ቢፈልግም.

ስለዚህ ትኩረቱ በገለፃዎች አገባብ ላይ ሳይሆን ሉፕን በመጠቀም ተደጋጋሚ ኮድን እንደገና መፍጠር በሚለው ሀሳብ ላይ መሆን አለበት የሚል ሀሳብ አመጣሁ። ተማሪዎች ይህንን ሃሳብ ከተረዱ በኋላ ማንኛውም አገባብ በትንሽ ልምምድ ሊሻሻል ይችላል።

ማን እና ለምን አስተምራለሁ?

የመግቢያ ፈተናዎች ስለሌሉ፣ ክፍሎች ሁለቱንም ጠንካራ እና በጣም ደካማ ተማሪዎችን ሊያካትቱ ይችላሉ። በአንቀጹ ውስጥ ስለ ተማሪዎቼ የበለጠ ማንበብ ይችላሉ። የምሽት ኮርስ ተማሪዎች ፎቶ
ፕሮግራሚንግ መማር የሚፈልጉ ሁሉ እንዲማሩት ጥረት አድርጌያለሁ።
ክፍሎቼ በተናጥል የሚካሄዱ ሲሆን ተማሪው ለእያንዳንዱ የራሱን ገንዘብ ይከፍላል. ተማሪዎች ወጪዎችን አሻሽለው ዝቅተኛውን የሚጠይቁ ይመስላል። ይሁን እንጂ ሰዎች ከቀጥታ አስተማሪ ጋር ፊት ለፊት የሚሄዱት ለእውቀቱ ሳይሆን ለተማሩት እምነት፣ ለዕድገት ስሜት እና ከባለሙያ (አስተማሪ) ፈቃድ ለማግኘት ነው። ተማሪዎች በትምህርታቸው መሻሻል ካልተሰማቸው ጥለው ይሄዳሉ። በአጠቃላይ፣ ተማሪዎች የሚታወቁትን መዋቅሮች ብዛት በመጨመር እድገት እንዲሰማቸው ክፍሎች ሊዋቀሩ ይችላሉ። ይኸውም መጀመሪያ በዝርዝር እያጠናን እንማራለን፣ ከዚያም እንማራለን፣ ከዚያም እንሰራለን፣ እና አሁን አንድ ሺህ አንድ ሌሊት ኮርስ ተዘጋጅቶልናል፣ ይህም ሳይክሎች ብቻ ለሁለት ወራት የሚጠና ሲሆን መጨረሻ ላይ - የጻፈ ተማሪ መደበኛ ቤተ መፃህፍት በቃል. ነገር ግን, ተግባራዊ ችግሮችን ለመፍታት, የቁሳቁስን እውቀት ብቻ ሳይሆን በአተገባበሩ ውስጥ እና አዲስ መረጃን ለመፈለግ ነፃነትንም ያስፈልግዎታል. ስለዚህ ፊት ለፊት ለሚደረጉ ኮርሶች ትክክለኛው መርህ ዝቅተኛውን ማስተማር እና በገለልተኛ ጉዳዮች እና ተዛማጅ ርዕሶች ላይ ጥናት ማበረታታት ይመስለኛል። በ loops ርዕስ ውስጥ፣ የሚገነባው ጊዜ ዝቅተኛው እንደሆነ እቆጥረዋለሁ። ከእሱ መርሆውን መረዳት ይችላሉ. መርሆውን በማወቅ ሁለቱንም ለእራስዎ እና ለእራስዎ ማድረግ ይችላሉ.

በደካማ ተማሪዎች የቁሳቁስን ችሎታ ለማግኘት፣ አገባቡን መግለጽ በቂ አይደለም። የበለጠ ቀላል ነገር ግን የተለያዩ ስራዎችን መስጠት እና ምሳሌዎችን በበለጠ ዝርዝር መግለጽ አስፈላጊ ነው. በመጨረሻም ፣የዕድገቱ ፍጥነት የተማሪው መግለጫዎችን የመቀየር እና ቅጦችን የመፈለግ ችሎታ የተገደበ ነው። ለብልጥ ተማሪዎች፣ አብዛኞቹ ስራዎች አሰልቺ ይሆናሉ። ከእነሱ ጋር በምታጠናበት ጊዜ, 100% ችግሮችን ለመፍታት አጥብቀህ አትጠይቅም. የእኔ ቁሳቁስ በ ላይ ሊታይ ይችላል። የእኔ github. እውነት ነው፣ ማከማቻው እንደ ዋርሎክ ግሪሞይር ነው - ከእኔ በቀር ማንም የት እንዳለ አይረዳም እና ቼኩን ከወደቁ ማበድ ይችላሉ

ዘዴው በተግባር ላይ ያተኮረ ነው።

ንድፈ ሃሳቡ ችግርን ለመፍታት ምሳሌን በመጠቀም ተብራርቷል. ቅርንጫፎች እና loops በሚማሩበት የፕሮግራም አወጣጥ ክፍል ውስጥ ለአንድ ሰዓት ሙሉ ጠቃሚ ንግግር መስጠት አይቻልም። ጽንሰ-ሐሳቡን ለማብራራት ከ15-20 ደቂቃዎች በቂ ነው. ተግባራዊ ተግባራትን ሲያከናውኑ ዋናዎቹ ችግሮች ይነሳሉ.
ጀማሪ አስተማሪዎች በአንድ ንግግር ኦፕሬተሮችን፣ ቅርንጫፎችን፣ loopsን እና አደራደሮችን ማፍረስ ይችላሉ። ነገር ግን ተማሪዎቻቸው ይህንን መረጃ የማዋሃድ ችግር ያጋጥማቸዋል.
ትምህርቱን መናገር ብቻ ሳይሆን አድማጮቹ እንዲረዱት ማድረግም ያስፈልጋል።

ርዕሰ ጉዳይን የመቆጣጠር እውነታ የሚወሰነው ተማሪው ራሱን የቻለ ሥራ እንዴት እንደሚቋቋም ነው.
አንድ ተማሪ ያለ አስተማሪ እርዳታ በአንድ ርዕሰ ጉዳይ ላይ ችግር መፍታት ከቻለ ርዕሱ በደንብ ተሰርቷል። ራስን መሞከርን ለማረጋገጥ እያንዳንዱ ተግባር የሙከራ ሁኔታዎችን በሠንጠረዥ ውስጥ ተገልጿል. ተግባሮቹ ግልጽ የሆነ ቅደም ተከተል አላቸው. ተግባራትን መዝለል አይመከርም. አሁን ያለው ተግባር በጣም ከባድ ከሆነ ወደሚቀጥለው መሄድ ምንም ፋይዳ የለውም። የበለጠ የተወሳሰበ ነው። ተማሪው የአሁኑን ውስብስብ ተግባር እንዲቆጣጠር, የመጀመሪያውን ችግር ምሳሌ በመጠቀም በርካታ ቴክኒኮች ተገልጸዋል. በእውነቱ ፣ የርዕሱ አጠቃላይ ይዘት ችግሮችን ለማሸነፍ ወደ ቴክኒኮች ይወርዳል። ዑደቶች የበለጠ የጎንዮሽ ጉዳቶች ናቸው።

የመጀመሪያው ተግባር ሁልጊዜ ምሳሌ ነው. ሁለተኛው በጥቂቱ ይለያል እና ከመጀመሪያው በኋላ ወዲያውኑ በአስተማሪ ቁጥጥር ስር "በገለልተኛነት" ይከናወናል. ሁሉም ተከታይ ተግባራት የተሳሳቱ አመለካከቶችን ሊያስከትሉ ለሚችሉ የተለያዩ ጥቃቅን ነገሮች ትኩረት ለመስጠት ነው.

የምሳሌው ማብራሪያ ተማሪው የትምህርቱን የተወሰነ ክፍል በሚገባ መያዙን ለማረጋገጥ ፕሮፓጋንዳ እና ማረጋገጫን መጥራት ያለበት ውይይት ነው።

እኔ ባናል እሆናለሁ እና በርዕሱ ላይ ያለው የመጀመሪያው ምሳሌ በጣም አስፈላጊ ነው እላለሁ. ሰፋ ያለ ገለልተኛ ሥራ የሚሆን ቁሳቁስ ካለዎት, የመጀመሪያው ምሳሌ ስህተቶች ሊስተካከሉ ይችላሉ. ከምሳሌው ሌላ ምንም ነገር ከሌለ ተማሪው ርእሱን ሊቆጣጠር አይችልም.

ሳለ ወይም ለ?

አወዛጋቢ ከሆኑ ጉዳዮች አንዱ ለምሳሌው የግንባታ ምርጫ ነው-ለጊዜው ወይም ለ. አንድ ጊዜ፣ ምንም የማስተማር ልምድ የሌለው የገንቢ ወዳጄ ቀለበቱ ለመረዳት በጣም ቀላል እንደሆነ ለአንድ ሰዓት ያህል አሳምኖኛል። ክርክሮቹ “በውስጡ ያለው ነገር ሁሉ ግልጽና በሥፍራው ተቀምጧል” ወደሚል ተቀይሯል። ሆኖም ፣ ለእውነተኛ ጀማሪዎች የችግሮች ዋና መንስኤ የዑደቱ ሀሳብ እንጂ መፃፍ አይደለም። አንድ ሰው ይህን ሃሳብ ካልተረዳ, ከዚያም በአገባቡ ላይ ይቸገራል. ሃሳቡ እንደተሳካ የኮድ ዲዛይን ችግሮች በራሳቸው ይጠፋሉ.

በእቃዎቼ ውስጥ, የሉፕስ ጭብጥ የቅርንጫፉን ጭብጥ ይከተላል. “በራእሱ ላይ ያለው ሁኔታ እውነት ሲሆን ሰውነቱም ይፈጸማል” የሚለውን ቀጥተኛ ተመሳሳይነት ለመሳል የሚያስችለን ከሆነ እና እያለ ያለው ውጫዊ ተመሳሳይነት ነው። የዑደቱ ብቸኛው ልዩነት ሰውነት ብዙ ጊዜ መፈጸሙ ነው።

ሁለተኛው መከራከሪያዬ ግን ከፎር ያነሰ ቅርጸት ያስፈልገዋል የሚለው ነው። ያነሰ ቅርጸት ማለት የጎደሉት ኮማዎች እና ቅንፎች ያነሱ ደደብ ስህተቶች ማለት ነው። ጀማሪዎች የአገባብ ስህተቶችን በራስ ሰር ለማስወገድ በቂ ትኩረት እና ጥንቃቄ አላዳበሩም።
ሦስተኛው ክርክር እንደ መጀመሪያው መከራከሪያ በብዙ ጥሩ መጽሐፍት ውስጥ ተብራርቷል።

ተማሪው አገላለጾችን በቀላሉ መቀየር ከቻለ፣ ለማለፍ ማውራት ይችላሉ። ከዚያም ተማሪው የሚወደውን ይመርጣል. ለውጦች ችግሮች የሚያስከትሉ ከሆነ ትኩረትዎን እንዳያዘናጉ ይሻላል። ተማሪው በመጀመሪያ ጊዜ በመጠቀም ሁሉንም ነገር እንዲፈታ ያድርጉ። አንዴ የ loops ርእስ ከተረዳህ በኋላ ወደ መለወጥ ለመለማመድ መፍትሄዎችን እንደገና መፃፍ ትችላለህ።
Postcondition loops ቆንጆ ብርቅዬ አውሬ ናቸው። በእሱ ላይ ምንም ጊዜ አላጠፋም. አንድ ተማሪ ቅጦችን የመለየት እና አባባሎችን የመቀየር ሃሳቦችን የተካነ ከሆነ፣ ያለእኔ እርዳታ ሊረዳው ይችላል።

ለጠንካራ ተማሪዎች የመጀመሪያውን ምሳሌ ሲያሳዩ, በመጀመሪያው ምሳሌ ውስጥ መፍትሄውን ብቻ ሳይሆን ውጤቱን ያስከተለውን አጠቃላይ የእርምጃዎች ሰንሰለት መመዝገብ አስፈላጊ መሆኑን ትኩረት እሰጣለሁ. ሰነፍ ተማሪዎች ጽሑፉን ችላ ብለው የመጨረሻውን ስልተ ቀመር ብቻ መቅዳት ይችላሉ። አንድ ቀን ከባድ ሥራ እንደሚመጣላቸው እርግጠኛ መሆን አለባቸው. እሱን ለመፍታት, በዚህ ምሳሌ ውስጥ እንደ ቅደም ተከተሎችን መከተል ያስፈልግዎታል. ለዚህም ነው ሁሉንም ደረጃዎች መመዝገብ አስፈላጊ የሆነው. በሚከተሉት ችግሮች ውስጥ የመጨረሻውን የመፍትሄውን ስሪት ብቻ መተው ይቻላል.

ዋናው የአውቶሜሽን ሀሳብ ኮምፒውተር ለአንድ ሰው መደበኛ ስራ እንዲሰራ አደራ እንሰጣለን ። ከመሠረታዊ ቴክኒኮች ውስጥ አንዱ loops መጻፍ ነው. ብዙ ተመሳሳይ ተደጋጋሚ ድርጊቶች በተከታታይ በአንድ ፕሮግራም ውስጥ ሲጻፉ ጥቅም ላይ ይውላል።

ግልጽነት ከተዘዋዋሪ ይሻላል

በመጀመሪያው የማዞሪያ ተግባር ውስጥ አንድ አይነት ሀረግ ብዙ ጊዜ ማሳየት ጥሩ ሀሳብ ሊመስል ይችላል። ለምሳሌ:

ሁሬ ፣ ይሰራል!
ሁሬ ፣ ይሰራል!
ሁሬ ፣ ይሰራል!
ሁሬ ፣ ይሰራል!
ሁሬ ፣ ይሰራል!
ሁሬ ፣ ይሰራል!
ሁሬ ፣ ይሰራል!
ሁሬ ፣ ይሰራል!

የቆጣሪው ዋጋ በውጤቱ ውስጥ ስለማይታይ ይህ አማራጭ መጥፎ ነው. ይህ ለጀማሪዎች ችግር ነው. አቅልለህ አትመልከት። በመጀመሪያ, ይህ ተግባር የመጀመሪያው ነበር, እና ተከታታይ ቁጥሮችን በቅደም ተከተል የማውጣት ተግባር ሁለተኛው ነበር. ተጨማሪ ቃላትን ማስተዋወቅ አስፈላጊ ነበር "ዑደት N ጊዜዎች" እና "ዑደት ከ A እስከ B", በመሠረቱ ተመሳሳይ ነገር ነው. አላስፈላጊ አካላትን ላለመፍጠር, ከተከታታይ ቁጥሮች ውጤት ጋር አንድ ምሳሌ ብቻ ለማሳየት ወሰንኩ. በጭንቅላታቸው ላይ ቆጣሪ እንዴት እንደሚይዙ እና የፕሮግራሙን ባህሪ ያለ ዝግጅት በራሳቸው ውስጥ ለመቅረጽ የሚረዱት ጥቂት ሰዎች ናቸው። አንዳንድ ተማሪዎች በመጀመሪያ በዑደት ርዕስ ላይ የአዕምሮ ሞዴሊንግ ያጋጥማቸዋል።
ከተወሰነ ልምምድ በኋላ, በተናጥል ለመፍታት, ተመሳሳይ ጽሑፍ የመድገም ስራን እሰጣለሁ. መጀመሪያ የሚታይ ቆጣሪ እና ከዚያም የማይታይ ከሰጡ ተማሪዎች ያነሱ ችግሮች ይኖራቸዋል። አንዳንድ ጊዜ "ቆጣሪውን በስክሪኑ ላይ አይጻፉ" የሚለው ፍንጭ በቂ ነው.

ሌሎች እንዴት ያብራሩታል?

በይነመረብ ላይ በአብዛኛዎቹ የትምህርት ቁሳቁሶች የዑደቱ አገባብ እንደ "ትምህርት" አካል ተሰጥቷል. ለምሳሌ፣ በ developer.mozilla.org (በአሁኑ ጊዜ)፣ ሌሎች በርካታ ግንባታዎች ከትንሽ ዑደቱ ጋር ተገልጸዋል። በዚህ ሁኔታ, ንድፎቹ እራሳቸው ብቻ በአብነት መልክ ይሰጣሉ. የማስጀመሪያቸው ውጤት በቃላት ይገለጻል, ግን ምንም ምሳሌ የለም. በእኔ አስተያየት እንዲህ ዓይነቱ የርዕስ አቀራረብ የእንደዚህ ዓይነቶቹን ቁሳቁሶች ጠቃሚነት በዜሮ ያባዛል. ተማሪው ኮዱን እንደገና መፃፍ እና እራሱን ማስኬድ ይችላል, ግን አሁንም ለማነፃፀር መስፈርት ያስፈልገዋል. ውጤቱን ለማነፃፀር ምንም ነገር ከሌለ አንድ ምሳሌ በትክክል እንደተጻፈ እንዴት መረዳት ይችላሉ?
አብነት ብቻ ሲሰጥ፣ ያለ ምሳሌ፣ ለተማሪው የበለጠ ከባድ ይሆናል። የኮዱ ቁርጥራጮች በአብነት ውስጥ በትክክል መቀመጡን እንዴት መረዳት ይቻላል? ለመጻፍ መሞከር ይችላሉ እንደምንም፣ እና ከዚያ ሩጡ። ግን ውጤቱን ለማነፃፀር ምንም መስፈርት ከሌለ ማስጀመርም አይረዳም።

በ Intuitive ላይ ባለው የC++ ኮርስ፣ የሉፕ አገባብ በሦስተኛው ገጽ ትምህርት 4 ላይ “ከዋኞች” በሚለው ርዕስ ላይ ተቀበረ። የ loopsን አገባብ ሲያብራራ ልዩ ትኩረት የሚሰጠው "ኦፕሬተር" በሚለው ቃል ላይ ነው. ቃሉ እንደ “ምልክት” ያሉ እውነታዎች ስብስብ ሆኖ ቀርቧል። ይህ መግለጫ ነው፣ "{} የተዋሃደ መግለጫ ነው"፣ "የ loop አካል መግለጫ መሆን አለበት።" ይህን አቀራረብ አልወደውም ምክንያቱም ከአንድ ቃል በስተጀርባ አስፈላጊ ግንኙነቶችን የሚደብቅ ይመስላል. የፕሮግራሙን ምንጭ ኮድ በዚህ ደረጃ መተንተን የቋንቋ ዝርዝር መግለጫውን ተግባራዊ ለማድረግ በአቀናባሪ ገንቢዎች ያስፈልጋል፣ ግን እንደ መጀመሪያ ግምት በተማሪዎች አይደለም። የፕሮግራም አወጣጥ አዲስ መጤዎች ለቃላቶች ይህን ያህል ትኩረት ለመስጠት እምብዛም ጥንቃቄ አይኖራቸውም። አዲስ ቃላትን ለመጀመሪያ ጊዜ የሚያስታውስ እና የሚረዳው ብርቅዬ ሰው ነው። ማንም ማለት ይቻላል የተማረውን ቃል በትክክል መተግበር አይችልም። ስለዚህ፣ ተማሪዎች ብዙ ስህተቶችን ያገኛሉ እንደ “እኔ የፃፍኩት ሳለ(a<7);{፣ ግን ፕሮግራሙ አይሰራም።
በእኔ አስተያየት መጀመሪያ ላይ የግንባታውን አገባብ በቅንፍ ወዲያውኑ መስጠት የተሻለ ነው. ያለ ቅንፍ ያለው አማራጭ መገለጽ ያለበት ተማሪው “ለምን ቅንፍ የለም እና ይሰራል” የሚል የተለየ ጥያቄ ካለው ብቻ ነው።

እ.ኤ.አ. በ 2012 በኦኩሎቭ መጽሐፍ "የፕሮግራሚንግ መሰረታዊ ነገሮች" የ loops መግቢያ በስርዓተ-ጥለት ይጀምራል ፣ ከዚያ ለአጠቃቀም ምክሮችን ይሰጣል እና ወዲያውኑ ወደ የትምህርቱ የሙከራ ክፍል ይሄዳል። መጽሐፉ የተጻፈው ለእነዚያ አናሳ ለሆኑ በጣም ብቃት ላላቸው ተማሪዎች እንደሆነ ተረድቻለሁ፤ ወደ ክፍሌ እምብዛም አይመጡም።

በታዋቂ መጽሐፍት ውስጥ, የኮድ ቁርጥራጮች ውጤት ሁልጊዜ ይጻፋል. ለምሳሌ, Shildt's "Java 8. The Complete Guide" 2015 እትም. በመጀመሪያ, አብነት ተሰጥቷል, ከዚያም አንድ ምሳሌ ፕሮግራም እና ወዲያውኑ ከእሱ በኋላ - የአፈፃፀም ውጤት.

እንደ ምሳሌ፣ ተቃራኒውን የሚያደርገውን ትንሽ ዙር አስቡበት
ከ 10 ጀምሮ ቆጠራ እና በትክክል 10 የ “መለኪያዎች” መስመሮች ይታያሉ

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

አንዴ ከሮጠ ይህ ፕሮግራም አስር “ዑደቶችን” እንደሚከተለው ያወጣል።
такт 10
такт 9
такт 8
такт 7
такт 6
такт 5
такт 4
такт 3
такт 2
такт 1

አብነትን፣ የምሳሌ ፕሮግራምን እና የፕሮግራሙን ውጤት የመግለጽ አካሄድ በ"ጃቫስክሪፕት ለልጆች" መጽሐፍ እና በw3schools.com ላይ በ js ኮርስ ውስጥም ጥቅም ላይ ይውላል። የድረ-ገጹ ቅርጸት እንኳን ይህ ምሳሌ መስተጋብራዊ እንዲሆን ይፈቅዳል።

የስትሮስትሩፕ 2016 መጽሃፍ ሲ++ን መጠቀም መርሆዎች እና መለማመድ ከዚህም የበለጠ ሄዷል። የመጀመሪያው እርምጃ ምን ውጤት ማግኘት እንዳለበት ማብራራት ነው, እና ከዚያ በኋላ የፕሮግራሙ ጽሑፍ ይታያል. ከዚህም በላይ የዘፈቀደ ፕሮግራምን እንደ ምሳሌ ብቻ አይወስዱም, ነገር ግን ለታሪክ ሽርሽር ይሰጣሉ. ይህ ትኩረትን ወደ እሱ ለመሳብ ይረዳል፡- “እነሆ፣ ይህ አንዳንድ የማይጠቅም ጽሑፍ ብቻ አይደለም። ትርጉም ያለው ነገር ታያለህ።"

እንደ ድግግሞሽ ምሳሌ፣ በተከማቸ የፕሮግራም ማሽን (EDSAC) ላይ የተተገበረውን የመጀመሪያውን ፕሮግራም አስቡበት። በዴቪድ ዊለር በእንግሊዝ ካምብሪጅ ዩኒቨርሲቲ የኮምፒውተር ላቦራቶሪ በግንቦት 6 ቀን 1949 ተፃፈ። ይህ ፕሮግራም ቀለል ያለ የካሬዎችን ዝርዝር ያሰላል እና ያትማል።
0 0
1 1
2 4
3 9
4 16
...
98 9604
99 9801

እዚህ፣ እያንዳንዱ መስመር በትር ቁምፊ ('t') እና የዚያ ቁጥር ካሬ የተከተለ ቁጥር ይይዛል። የዚህ ፕሮግራም የC++ ስሪት ይህን ይመስላል።

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

የሚገርመው፣ የአገባብ ንድፍ በዚህ መጽሐፍ ውስጥ አልተገለጸም። ስትሮስትሩፕ በአስተማሪው መመሪያ ውስጥ (ትርጉም) የተማሪዎቹን ብልህነት እንደሚያከብር አፅንዖት ይሰጣል። ምናልባት በበርካታ ምሳሌዎች ውስጥ ስርዓተ-ጥለትን የመለየት ችሎታ የዚህ ብልህነት መገለጫ ተደርጎ ይወሰዳል።

ራሴን እንደገለጽኩት

የስትሮስትሩፕ አቀራረብ: ውጤቱን መግለጽ, ከዚያም ችግሩን መፍታት, ከዚያም በተማሪው ገለልተኛ ትንታኔ - በጣም አሳቢ ይመስላል. ስለዚህ፣ እንደ መሰረት አድርጌ ልወስደው ወሰንኩ፣ ነገር ግን ትንሽ ታሪካዊ ምሳሌ በመጠቀም ንገረው - “የይዘት ሠንጠረዥ” የማውጣት ተግባር። "ስለ ይዘቱ ሠንጠረዥ ያለውን ተግባር አስታውስ" ለማለት እና ተማሪዎች በትክክል ይህን እንዲያስታውሱ ሊታወቅ የሚችል መልህቅ ይመሰርታል። በምሳሌዬ፣ ሁለት ተጨማሪ በጣም የተለመዱ የተሳሳቱ አመለካከቶችን ለመከላከል ሞከርኩ። በመቀጠል ስለእነሱ የበለጠ በዝርዝር እጽፋለሁ.

በዚህ ተግባር ውስጥ ውስብስብ ችግሮችን ለመፍታት ቴክኒኮችን እናስተዋውቃለን. የመጀመሪያው ውሳኔ ጥንታዊ እና ቀላል መሆን አለበት. ደህና, ከዚያ ይህን መፍትሄ እንዴት ማሻሻል እንዳለብህ ማሰብ ትችላለህ.
Введение
Глава 1
Глава 2
Глава 3
Глава 4
Глава 5
Глава 6
Глава 7
Заключение

እንደ እኔ ምልከታ፣ “አብነት-ምሳሌ-ውጤት” በተለያዩ ውህዶች ውስጥ ያለው አካሄድ አሁንም ተማሪዎች ዑደቱን እንደ ሂሮግሊፍ እንዲገነዘቡት ያደርጋል። ይህ የሚያሳየው ለምን እዚያ ለመጻፍ ቅድመ ሁኔታ እንዳለ፣ በ i++ እና i መካከል እንዴት እንደሚመርጡ እና ሌሎች ግልጽ የሚመስሉ ነገሮችን ባለመረዳታቸው ነው። እነዚህን የተሳሳቱ አመለካከቶች ለማስወገድ ስለ ዑደቶች የመናገር አቀራረብ ተመሳሳይ ድርጊቶችን መድገም ትርጉሙን ማጉላት እና ከዚያም መዋቅርን በመጠቀም መደበኛ ማድረግ ብቻ ነው. ስለዚህ, የ loop syntax ከመስጠትዎ በፊት, ችግሩን በቅድሚያ መፍታት ያስፈልግዎታል. ለይዘት ሠንጠረዥ ችግር የመጀመሪያ መፍትሄ ይህንን ይመስላል።

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

እንዴትስ ሊሻሻል ይችላል?
ነጠላ ድርጊቶችን በዑደት ይተኩ።
ያለ ለውጥ በተከታታይ ምን አይነት ድርጊቶች ይደጋገማሉ?
በዚህ ቁራጭ ውስጥ ምንም የለም። ነገር ግን "ምዕራፍ" የሚለውን ቃል ከቁጥር ጋር ለማሳየት ትእዛዞቹ እርስ በእርሳቸው በጣም ተመሳሳይ ናቸው.
ስለዚህ, ቀጣዩ ደረጃ በክፋዮች መካከል ያለውን ልዩነት መፈለግ ነው. በዚህ ተግባር ውስጥ ብቻ ሁሉም ነገር ግልፅ ነው ፣ ከዚያ ነጠላ ትዕዛዞች አይደገሙም ፣ ግን የ 5 መስመር ወይም ከዚያ በላይ የኮድ እገዳዎች። በትእዛዞች ዝርዝር ውስጥ ብቻ ሳይሆን በቅርንጫፍ ወይም በሎፕ ግንባታዎች ውስጥ መፈለግ አለብዎት.
በምሳሌው ውስጥ በትእዛዞች መካከል ያለው ልዩነት "ምዕራፍ" ከሚለው ቃል በኋላ ባለው ቁጥር ውስጥ ነው.
ልዩነቱ ከተገኘ በኋላ የለውጡን ንድፍ መረዳት ያስፈልግዎታል. የተለያየ ቁራጭ ቁጥሩ ነው? በየጊዜው እየጨመረ ወይም እየቀነሰ ነው? በሁለት ቡድኖች መካከል የቁጥር ዋጋ እንዴት ይለዋወጣል?
በምሳሌው ውስጥ "ምዕራፍ" ከሚለው ቃል በኋላ ያለው ቁጥር በ 1 ጭማሪዎች ይጨምራል. ልዩነቱ ተገኝቷል, ንድፉ ይገለጣል. አሁን ልዩነቱን በተለዋዋጭ መተካት ይችላሉ.
ከተደጋገሙ ቁርጥራጮች መጀመሪያ በፊት እንዲህ ዓይነቱን ተለዋዋጭ ማወጅ ያስፈልግዎታል። እንዲህ ዓይነቱ ተለዋዋጭ አብዛኛውን ጊዜ I ወይም j ወይም የበለጠ ዝርዝር ነገር ይባላል. የመነሻ ዋጋው በስክሪኑ ላይ ከሚታየው የመጀመሪያው እሴት ጋር እኩል መሆን አለበት። በምሳሌው ውስጥ የመጀመሪያው ዋጋ 1 ነው.
ተከታታይ ቁጥሮች "100, 101, 102, 103, 104, 105" ለማሳየት ምን ዓይነት የመጀመሪያ እሴት መወሰድ አለበት?
በዚህ ተከታታይ ውስጥ የመጀመሪያው ቁጥር 100 ነው.
ከእያንዳንዱ የውጤት ትዕዛዝ በኋላ, የዚህን ተለዋዋጭ እሴት በ 1 መጨመር ያስፈልግዎታል. ይህ ክፍል የለውጥ እርምጃ ነው.
በተከታታይ ቁጥሮች "100, 102, 104, 106" ውስጥ ምን ደረጃ ይሆናል?
ደረጃ 2 በዚህ ረድፍ.
ልዩነቱን በተለዋዋጭ ከተተካ በኋላ ኮዱ እንደዚህ ይመስላል

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

በኮዱ ውስጥ "የተለዋዋጭን ንድፍ ይግለጹ" የሚለውን ዘዴ ከተጠቀሙ በኋላ በተከታታይ የሚሄዱ ብዙ ተመሳሳይ ድርጊቶችን ቡድኖች ያገኛሉ። አሁን ተደጋጋሚ ድርጊቶችን በዑደት መተካት ይቻላል.

loopsን መጠቀም የሚያስፈልግዎትን ችግር የመፍታት ቅደም ተከተል የሚከተሉትን ደረጃዎች ያካትታል።

  1. በብዙ የተለያዩ ትእዛዞች "በፊት" ይፍቱ
  2. ስርዓተ-ጥለት ያግኙ
  3. የተለዋዋጭውን ንድፍ ይግለጹ
  4. ንድፍ እንደ ዑደት

በመቀጠል ፣ ተማሪው እራሱን “ሁሉንም ነገር እረዳለሁ ፣ ግን መናገር አልችልም” በሚለው ሁኔታ ውስጥ እራሱን እንዳያገኝ አዳዲስ ቃላት ይተዋወቃሉ።
— ቆጣሪ ሁል ጊዜ ተለዋዋጭ ሲሆን ይህም በ loop ውስጥ ያሉትን የእርምጃዎች ብዛት ለመከታተል አስፈላጊ ነው። በተለምዶ ኢንቲጀር ከገደቡ ጋር ሲነጻጸር።
- የቆጣሪ ደረጃ - የቆጣሪ ለውጦች ንድፍ መግለጫ።
- እገዳ - ስልተ ቀመር የመጨረሻ እንዲሆን ቆጣሪው የሚወዳደርበት ቁጥር ወይም ተለዋዋጭ። የቆጣሪው እሴቱ ወደ ገደቡ ለመቅረብ ይቀየራል።
- loop body - የሚደጋገሙ የትእዛዞች ስብስብ። “ትዕዛዙ በ loop ውስጥ ተጽፏል” ሲሉ አካልን ማለታቸው ነው።
- loop ተደጋጋሚነት - የ loop አካል የአንድ ጊዜ አፈፃፀም።
- loop ሁኔታ - ሌላ ድግግሞሽ መፈጸሙን የሚወስን አመክንዮአዊ አገላለጽ። (እዚህ ከቅርንጫፎች መዋቅሮች ጋር ግራ መጋባት ሊኖር ይችላል)
በመጀመሪያ ተማሪዎች ቃላቶችን ለሌሎች ዓላማዎች ስለሚጠቀሙበት እውነታ ዝግጁ መሆን አለብዎት. ይህ ለጠንካራውም ሆነ ለደካማውም ይሠራል። የጋራ ቋንቋ መመስረት ጥበብ ነው። አሁን በአጭሩ እጽፋለሁ፡ ተግባሩን ማቀናበር ያስፈልግዎታል "የኮድ ፍርስራሹን በ<term> ያድምቁ" እና በንግግር ውስጥ እራስዎ እነዚህን ቃላት በትክክል ይጠቀሙ።
በ loop ከተቀየረ በኋላ ቁራሹ ተገኝቷል-

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

ዋናው የተሳሳተ ግንዛቤ

በተማሪዎች መካከል አንድ ታዋቂ የተሳሳተ ግንዛቤ አንድ ጊዜ ብቻ መደረግ ያለባቸውን ድርጊቶች በ loop ውስጥ ማስቀመጥ ነው። ለምሳሌ እንደዚህ፡-

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

ተማሪዎች መጀመሪያ ላይ እና በጣም ውስብስብ በሆኑ ችግሮች ውስጥ ሁል ጊዜ ወደዚህ ችግር ይጋጫሉ።
በዚህ ጉዳይ ላይ ቁልፍ ፍንጭ:

ትዕዛዙን ስንት ጊዜ መድገም አለብዎት: አንድ ጊዜ ወይም ብዙ ጊዜ?

"መግቢያ" እና "መደምደሚያ" የሚሉትን ቃላት ለማተም እና ተለዋዋጩን የማወጅ እና የማስጀመር ትዕዛዞች እንደ ሌሎች ተደጋጋሚ ድርጊቶች አይደሉም። የሚፈጸሙት አንድ ጊዜ ብቻ ነው, ይህም ማለት ከሉፕ አካል ውጭ መፃፍ አለባቸው.

በችግሮች ጊዜ በኋላ እነሱን ለማመልከት ሶስቱም የመፍትሄው ደረጃዎች በኮዱ ውስጥ መቆየት አለባቸው። የመጀመሪያዎቹን ሁለት አማራጮች ጣልቃ እንዳይገቡ አስተያየት መስጠት በቂ ነው.
የተማሪው ትኩረት ወደሚከተሉት እውነታዎች መሳብ አለበት፡-
- በ loop ሁኔታ ውስጥ, ቆጣሪ እና ገደብ ብዙውን ጊዜ ይነጻጸራሉ. ቆጣሪው በሎፕው አካል ውስጥ ሊለወጥ ይችላል, ግን ገደቡ አይችልም. ይህንን ህግ ለመጣስ, አሳማኝ ምክንያቶችን ማዘጋጀት ያስፈልግዎታል.
- "መግቢያ" እና "ማጠቃለያ" የሚሉትን ቃላት ለማሳየት ትዕዛዞች ከሉፕው አካል ውጭ ይገኛሉ. እነሱን 1 ጊዜ ማከናወን አለብን. "መግቢያ" - ድርጊቶቹን ከመድገሙ በፊት, "ማጠቃለያ" - በኋላ.
ይህንን ርዕስ በማጠናከር ሂደት ፣የቀጣዮቹን በደንብ በመቆጣጠር እና ችግሮችን በመፍታት ለጠንካራ ተማሪዎች እንኳን ጥያቄውን ቢጠይቁ ጠቃሚ ነው-“ይህ እርምጃ ስንት ጊዜ መከናወን አለበት? አንድ ወይም ብዙ?

ተጨማሪ ክህሎቶችን ማዳበር

ዑደቶችን በማጥናት ሂደት ውስጥ ተማሪዎች ችግሮችን የመመርመር እና የመፍታት ችሎታን ያዳብራሉ። ምርመራዎችን ለማካሄድ ተማሪው የተፈለገውን ውጤት ማቅረብ እና ከትክክለኛው ውጤት ጋር ማወዳደር ያስፈልገዋል. የማስተካከያ እርምጃዎች በመካከላቸው ባለው ልዩነት ይወሰናል.
በዚህ ደረጃ ላይ ያሉ ተማሪዎች አሁንም ስለ "ተፈለገ" ውጤት ትንሽ ግንዛቤ ስለሌላቸው በፈተና መረጃ ላይ ማተኮር ይችላሉ. እንደ አንድ ደንብ, በዚህ ደረጃ ላይ ማንም ሰው ምን ሊሳሳት እንደሚችል እና ችግሩን እንዴት መቋቋም እንደሚቻል ገና አልተረዳም. ስለዚህ, የተለመዱ ችግሮችን እና እነሱን ለመፍታት በርካታ መንገዶችን በማስታወሻ ደብተር ውስጥ እጽፋለሁ. በጣም ተስማሚ የሆነውን መምረጥ የተማሪው ራሱ ተግባር ነው.
“የሚጠበቀው ተከሰተ?”፣ “ከእነዚህ ሁኔታዎች ውስጥ የትኛው አሁን ተከሰተ?”፣ “የተተገበረው መፍትሄ ረድቷል?” ብሎ ለመጠየቅ መዝገብ ያስፈልጋል።

  1. የእርምጃዎች ብዛት ከተጠበቀው 1 ያነሰ ወይም የበለጠ ነው። መፍትሄዎች፡-
    - የቆጣሪውን የመጀመሪያ ዋጋ በ 1 ይጨምሩ።
    - ጥብቅ የንፅፅር ኦፕሬተርን (< ወይም >) ጥብቅ ባልሆነ (<= ወይም >=) ይተኩ።
    - የገደቡን እሴት ወደ 1 ይለውጡ።
  2. በ loop ውስጥ ያሉ ድርጊቶች ያለማቋረጥ፣ ያለገደብ ይከናወናሉ። መፍትሄዎች፡-
    - የጎደለ ከሆነ የቆጣሪ ለውጥ ትዕዛዝ ያክሉ።
    - ዋጋው ወደ ገደቡ እንዲጠጋ የቆጣሪ ለውጥ ትዕዛዙን ያስተካክሉ።
    - በ loop አካል ውስጥ ከሆነ የእገዳ ለውጥ ትዕዛዙን ያስወግዱ።
  3. በ loop ውስጥ ያሉ የእርምጃዎች ብዛት ከ 1 ያነሰ ወይም ከተጠበቀው በላይ ነው። በ loop ውስጥ ያለው እርምጃ አንድ ጊዜ እንኳን አልተሰራም። በመጀመሪያ ምልልሱ ከመጀመሩ በፊት የተለዋዋጮችን ትክክለኛ ዋጋዎች ማወቅ ያስፈልግዎታል። መፍትሄዎች፡-
    - የእገዳውን የመጀመሪያ እሴት ይለውጡ
    - የቆጣሪውን የመጀመሪያ ዋጋ ይለውጡ

ችግር 3 ብዙውን ጊዜ የተሳሳተ ተለዋዋጭ መጠቀምን ወይም ቆጣሪውን ወደ ዜሮ አለማስጀመርን ያካትታል።

ከዚህ ማብራሪያ በኋላ፣ ተማሪው አሁንም loops እንዴት እንደሚሰራ የተለያዩ የተሳሳቱ አመለካከቶች ሊኖሩት ይችላል።
በጣም የተለመዱትን ለማስወገድ, የሚከተሉትን ተግባራት እሰጥዎታለሁ:

  1. ገደቡ፣ የመጀመሪያ ቆጣሪ እሴት ወይም የቆጣሪ ደረጃ በተጠቃሚው የገባበት።
  2. በየትኛው የቆጣሪ እሴት በአንዳንድ የሂሳብ አገላለጾች ውስጥ ጥቅም ላይ መዋል አለበት. ልዩነቱ ያልተለመደ እንዲሆን በሬዲካል አገላለጽ ወይም በዲኖሚተር ውስጥ መቁጠሪያን መጠቀም ጥሩ ነው.
  3. ሉፕ በሚሰራበት ጊዜ የቆጣሪው እሴቱ በስክሪኑ ላይ የማይታይበት። ለምሳሌ፣ የሚፈለጉትን ተመሳሳይ የጽሑፍ ቁርጥራጮች ማሳየት ወይም ምስል ከኤሊ ግራፊክስ ጋር መሳል።
  4. በመጀመሪያ አንዳንድ ተደጋጋሚ ድርጊቶችን እና ከዚያም ሌሎችን ማከናወን ያስፈልግዎታል.
  5. ከመድገምዎ በፊት እና በኋላ ሌሎች እርምጃዎችን ማከናወን ያስፈልግዎታል

ለእያንዳንዱ ተግባር የሙከራ ውሂብ እና የሚጠበቀው ውጤት ማቅረብ አለብዎት.

ምን ያህል በፍጥነት መንቀሳቀስ እንደሚችሉ ለመረዳት የእነዚህን ችግሮች ሁኔታዎች ማንበብ እና "ከምሳሌው እንዴት እንደሚለያዩ?", "እነሱን ለመፍታት በምሳሌው ውስጥ ምን መለወጥ አለበት?" ተማሪው ትርጉም ያለው መልስ ከሰጠ፣ ቢያንስ አንዱን ክፍል ውስጥ፣ ቀሪውን ደግሞ በራሱ እንዲፈታ ይፍቀዱለት። መፍትሄው የተሳካ ከሆነ, በ loops ውስጥ ያሉትን ሁኔታዎች ማብራራት እንጀምራለን.
ችግሮችን በራስዎ የመፍታት ችግር ካጋጠመዎት በክፍል ውስጥ ሁሉንም ነገር ማከናወን ያስፈልግዎታል. ችግሩን ለመፍታት ጉጉትን መሳል የሚያስታውስ መሆኑን ለማስወገድ በመጀመሪያ ችግሩን ሁለንተናዊ ባልሆነ መንገድ እንዲፈታ እመክራለሁ ። ማለትም, መፍትሄው የመጀመሪያውን ፈተና እንዲያልፍ እና የሉፕ ግንባታውን አይጠቀምም. ደህና ፣ ከዚያ የመፍትሄውን ሁለንተናዊነት ለማሳካት ለውጦችን ይተግብሩ።

ቀለበቶች እና ቅርንጫፎች

በእኔ አስተያየት ርዕሱን "በቅርንጫፎች ውስጥ ያሉ ዑደቶች" በተናጠል መስጠት ጠቃሚ ነው. ስለዚህ በኋላ ላይ አንድን ሁኔታ ብዙ ጊዜ በመፈተሽ እና አንድ ጊዜ በማጣራት መካከል ያለውን ልዩነት ማየት ይችላሉ።
የማጠናከሪያው ተግባራት በተጠቃሚው የሚገቡትን ከ A እስከ B ቁጥሮችን ስለማውጣት ይሆናል።
- ሁልጊዜም በሥርዓት።
- በ A እና B እሴቶች ላይ በመመስረት ወደ ላይ መውጣት ወይም መውረድ።

“ቅርንጫፎችን በ loops” የሚለው ርዕስ መንቀሳቀስ ያለበት ተማሪው ቴክኒኮችን ከተለማመደ በኋላ ነው፡ “ንድፍን በተለዋዋጭ መተካት” እና “ተደጋጋሚ ድርጊቶችን በዑደት መተካት።
በ loops ውስጥ ቅርንጫፎችን ለመጠቀም ዋናው ምክንያት በስርዓተ-ጥለት ውስጥ ያልተለመዱ ነገሮች ናቸው። በመሃል ላይ እንደ መጀመሪያው መረጃ ላይ በመመስረት ይሰበራል.
ቀላል ቴክኒኮችን በማጣመር መፍትሄ መፈለግ ለሚችሉ ተማሪዎች "ቅርንጫፎች በውስጣዊ loops ሊጻፉ ይችላሉ" ማለት እና ችግሩን "ለምሳሌ" በተናጥል ለመፍታት ሙሉ ለሙሉ መስጠት በቂ ነው.
ምሳሌ ተግባር፡-

ተጠቃሚው ቁጥር X ያስገባል። ከ 0 እስከ 9 ያሉትን ቁጥሮች በአንድ አምድ ውስጥ አሳይ እና ከቁጥር X ጋር እኩል የሆነ የ'+' ምልክት አድርግ።

0 ከገባ0+
1
2
3
4
5
6
7
8
9

6 ከገባ0
1
2
3
4
5
6+
7
8
9

9 ከገባ0
1
2
3
4
5
6
7
8
9+

777 ከገባ0
1
2
3
4
5
6
7
8
9

አጭር ማብራሪያ በ loop ለመጻፍ በቂ ካልሆነ ፣ ከዚያ ያለ ዑደት ለተመሳሳይ ችግር ሁለንተናዊ መፍትሄ ማግኘት ያስፈልግዎታል።
ከሁለት አማራጮች አንዱን ያገኛሉ፡-
የሚፈለግ

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

ይቻላል

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

የቅርንጫፉን ርዕስ እያጠናሁ, ተመሳሳይ ተግባር አስቀድሜ እሰጣለሁ.
ተማሪው "የሚቻል" አማራጭን ካመጣ, ለተመሳሳይ ችግር ብዙ መፍትሄዎች ሊኖሩ እንደሚችሉ መንገር ያስፈልግዎታል. ሆኖም ግን, በፍላጎቶች ላይ ለውጦችን በመቃወም ይለያያሉ. “ሌላ ቁጥር ማከል ካለብኝ በኮዱ ውስጥ ስንት ቦታዎች መስተካከል አለባቸው?” የሚለውን ጥያቄ ይጠይቁ። "በሚቻል" ስሪት ውስጥ አንድ ተጨማሪ ቅርንጫፍ ማከል እና በ 10 ሌሎች ቦታዎች ላይ አዲስ ቁጥር ማከል ያስፈልግዎታል. "በተፈለገው" ውስጥ አንድ ቅርንጫፍ ብቻ መጨመር በቂ ነው.
"የተፈለገውን" አማራጭ እንደገና ለማባዛት ስራውን ያቀናብሩ, ከዚያም በኮዱ ውስጥ ስርዓተ-ጥለት ይፈልጉ, ተለዋዋጭ ምትክ ያድርጉ እና ዑደት ይጻፉ.
ይህንን ችግር ያለ ሉፕ በሌላ መንገድ እንዴት እንደሚፈታ ሀሳብ ካሎት ፣ እባክዎን በአስተያየቶቹ ውስጥ ይፃፉ ።

Loops በ Loops ውስጥ

በዚህ ርዕስ ውስጥ ለሚከተሉት ትኩረት መስጠት አለብዎት:
— የውስጠኛው እና የውጪው ቀለበቶች ቆጣሪዎች የተለያዩ ተለዋዋጮች መሆን አለባቸው።
- የውስጠኛው ዑደት ቆጣሪው ብዙ ጊዜ እንደገና መጀመር አለበት (ይህም በውጫዊ ዑደት አካል ውስጥ)።
- በጽሑፍ ውፅዓት ተግባራት ውስጥ በመጀመሪያ አንድ ፊደል በበርካታ መስመሮች እና ከዚያም ሁለተኛውን መጻፍ አይችሉም። በመጀመሪያ የመጀመሪያውን መስመር ሁሉንም ፊደሎች, ከዚያም ሁሉንም የሁለተኛውን ፊደሎች, ወዘተ ማተም አለብዎት.

ቆጣሪውን ወደ ዜሮ የማቀናበሩን አስፈላጊነት በማብራራት የ loopsን ርዕስ በ loops ውስጥ ማብራራት መጀመር ጥሩ ነው።
ምሳሌ ተግባር፡-

ተጠቃሚው ሁለት ቁጥሮችን ያስገባል: R እና T. ሁለት መስመሮችን የ "#" ቁምፊዎችን ያትሙ. የመጀመሪያው መስመር R ቁምፊዎችን መያዝ አለበት. ሁለተኛው መስመር ቲ ቁርጥራጮችን ይዟል. ማንኛውም ቁጥር አሉታዊ ከሆነ, የስህተት መልእክት አሳይ.

አር=5፣ ቲ=11#####
############

አር=20፣ ቲ=3#################
###

R=-1፣ ቲ=6የ R ዋጋ አሉታዊ ያልሆነ መሆን አለበት

R=6፣ ቲ=-2ቲ ዋጋ አሉታዊ ያልሆነ መሆን አለበት።

ይህ ችግር ቢያንስ ሁለት መፍትሄዎች እንዳሉት ግልጽ ነው።
የሚፈለግ

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

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

ልዩነቱ "በሚቻል" መፍትሄ ውስጥ, ሁለተኛው ተለዋዋጭ ሁለተኛውን መስመር ለማውጣት ጥቅም ላይ ውሏል. ለሁለቱም loops አንድ አይነት ተለዋዋጭ ለመጠቀም አጥብቀህ ጠይቅ። ለሁለት ዑደቶች አንድ ቆጣሪ ያለው መፍትሄ የ "ቆጣሪ ዳግም ማስጀመር" ለሚለው ቃል ምሳሌ ስለሚሆን ይህ ገደብ ሊጸድቅ ይችላል. የሚከተሉትን ችግሮች በሚፈታበት ጊዜ ይህንን ቃል መረዳት አስፈላጊ ነው. እንደ ስምምነት, ለችግሩ ሁለቱንም መፍትሄዎች ማስቀመጥ ይችላሉ.

አንድ ቆጣሪ ተለዋዋጭ ለሁለት loops የመጠቀም ዓይነተኛ ችግር እንደዚህ ይመስላል።
አር=5፣ ቲ=11#####
######

በሁለተኛው መስመር ውስጥ ያሉት የቁምፊዎች ብዛት ከ T ዋጋ ጋር አይዛመድም. በዚህ ችግር ላይ እርዳታ ከፈለጉ, ከዚያም በ loops ላይ ስለ ተለመዱ ችግሮች ማስታወሻዎችን መመልከት ያስፈልግዎታል. ይህ ምልክት #3 ነው። ከሁለተኛው ዑደት በፊት የቆጣሪ እሴት ውፅዓት ካከሉ ይታወቃል። ዳግም በማስጀመር ተስተካክሏል። ግን ይህን ወዲያውኑ አለመናገር ይሻላል. ተማሪው ቢያንስ አንድ መላምት ለመቅረጽ መሞከር አለበት።

በእርግጥ ሌላ መፍትሔ አለ. በተማሪዎች መካከል ግን አይቼው አላውቅም። ዑደቶችን በማጥናት ደረጃ, ስለ እሱ ያለው ታሪክ ትኩረትን ይከፋፍላል. ስለ ሕብረቁምፊ ተግባራት ሲማሩ በኋላ ወደ እሱ መመለስ ይችላሉ።
የሚቻል #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));

ቀጣይ የሚፈለግ ተግባር፡-

ቁጥሮችን ከ 0 እስከ 9 ያሳዩ. እያንዳንዱ ቁጥር በራሱ መስመር ላይ መሆን አለበት. በአንድ መስመር (W) ውስጥ ያሉት የቁጥሮች ብዛት ከቁልፍ ሰሌዳው ውስጥ ገብቷል.

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

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

አንድ ተማሪ ተለዋዋጭ የመተካት ቴክኒኮችን ከተለማመደ በፍጥነት ይቋቋማል። ተለዋዋጭውን እንደገና በማስጀመር ላይ ሊኖር የሚችል ችግር እንደገና ይከሰታል። ለውጡን መቋቋም ካልቻሉ, እርስዎ ቸኩለዋል እና ቀላል ችግሮችን መፍታት አለብዎት ማለት ነው.

ለሰጠህው አትኩሮት እናመሰግናለን. ቻናሉን ላይክ እና ሰብስክራይብ ያድርጉ።

PS በጽሁፉ ውስጥ የትየባ ወይም ስህተቶች ካገኙ እባክዎን ያሳውቁኝ። ይህም የጽሁፉን ክፍል በመምረጥ በማክ ላይ “⌘ + አስገባ”፣ እና “Ctrl/Enter” የሚለውን ክላሲክ ኪቦርዶች በመጫን ወይም በግል መልእክቶች ማድረግ ይቻላል። እነዚህ አማራጮች ከሌሉ በአስተያየቶቹ ውስጥ ስለ ስህተቶች ይጻፉ. አመሰግናለሁ!

በዳሰሳ ጥናቱ ውስጥ የተመዘገቡ ተጠቃሚዎች ብቻ መሳተፍ ይችላሉ። ስግን እንእባክህን።

ካርማ ለሌላቸው አንባቢዎች አስተያየት ይስጡ

  • 20,0%በሙያዊ አስተምራለሁ፣ +12

  • 10,0%በሙያዊ አስተምራለሁ -11

  • 70,0%አላስተምርም +17

  • 0,0%አላስተምርም, -10

  • 0,0%ሌላ0

10 ተጠቃሚዎች ድምጽ ሰጥተዋል። 5 ተጠቃሚዎች ድምፀ ተአቅቦ አድርገዋል።

ምንጭ: hab.com

አስተያየት ያክሉ