Качан адам программалоону өз алдынча же онлайн курстарда үйрөнө баштаганда , "иш чөйрөсүн" аныктоо жана бардыгын системалаштыруу абдан маанилүү. Бул макалада биз ушундай системалаштырууну сунуштайбыз - JavaRush программалоону үйрөнүү үчүн онлайн курста белгилүү бир тип канчалык толук берилгенин жана пайдалуу шилтемелерди көрсөтүү менен, башталгычтар үчүн Java тапшырмалары.
Пазлдарды кайдан тапса болот:
Тилдин синтаксисинин көйгөйлөрү
Негиздер, башталгычтар үчүн эң биринчи Java программалоо тапшырмалары - "Hello World"ден циклдерге жана массивдерге чейин. JavaRushте алардын көбү бар: алар биринчи алты деңгээлдеги Java синтаксисинин квестинде өзгөчө жыш топтолгон. Аларды өздөштүрүү үчүн кандайдыр бир кошумча булактарды издөө керек болушу күмөн - бул жерде алардын саны жетиштүү. Мындан тышкары, кандайдыр бир татаал маселелерди чечүүдө сиз автоматтык түрдө синтаксисти кайталайсыз. Бирок сизге күтүлбөгөн жерден керек болсо, башталгычтар үчүн Java көйгөйлүү китеби ушул сыяктуу көнүгүүлөрдү камтыйт. Бул көйгөй китептеринде JavaRush сыяктуу тез текшерүү болбойт.Чогултуу тапшырмалары
Коллекциялар - жаңыдан келген программист окуу учурунда жолуккан биринчи "олуттуу" тема. Коллекцияларга арналган жаңы башталгычтар үчүн Java көйгөйлөрү JavaRush да кеңири чагылдырылган - Java Syntax квестинин жетинчи жана сегизинчи деңгээлдеринде. Бул жерде студент Java Collections Framework жөнүндө биринчи жолу угат, Set, List жана Map интерфейстери жана алардын айрым ишке ашырылышы менен иштей алат. Бирок, бул этапта сиз бул пайдалуу курал жана жөнөкөй Java тапшырмалары менен гана тааныша аласыз. Коллекцияларды кылдат изилдөө Java Collections квестинин жүрүшүндө ишке ашат . Сиз бул an objectтин канчалык маанилүү экенин көрүп жатасыз, анткени бүт квест анын атынан аталган!Өзгөчө көйгөйлөр
Javaдагы анормалдуу кырдаалдар менен иштөө үчүн атайын механизм жооп берет, бул программалардагы каталарды "кармоону" бир топ жеңилдетет. Бирок аны толугу менен колдонуу үчүн, сиз Java'да өзгөчө кырдаалды иштетүү кантип иштээрин түшүнүшүңүз керек. JavaRushто мындай тапшырмалар көп жана алар Java синтаксисинин биринчи квестинде да кездешет.Типти которуу көйгөйлөрү
Албетте, бул топту негизги синтаксис милдеттери катары классификациялоого болот. Бирок, биздин момун пикирибиз боюнча, мындай милдеттер көп учурда бааланбай, башталгычтар аларды аткарышат. Ошондуктан, келгиле, шаблондордон алыстайлы: биз башталгычтар үчүн Java тапшырмаларын «Примитивдүү типтерди конвертациялоо» темасында, көбүнчө жасалгандай эң башында эмес, бир аз кийинчерээк - Java синтаксисинин биринчи квестинин аягында изилдейбиз. Анан биз Java Core квестинде OOP үйрөнүү менен примитивдүү эмес типтерди (an objectтерди) кантип чыгарууну үйрөнөбүз . JavaRushто мындай тапшырмалар көп, кошумча эч нерсе издөөнүн кажети жок.OOP түшүнүү үчүн тапшырмалар
OOP эң татаал тема эмес, бирок бул өтө маанилүү. Мындан тышкары, анда интервью алуучулар келечектеги "жаш балдарды" кармоо үчүн колдонгон көптөгөн сырларды камтыйт. JavaRush курсу жаңы баштагандар үчүн an objectиге багытталган мамилени түшүнүүгө жардам бере турган практикалык программалоо маселелерин камтыйт. Бирок, OOP чындап түшүнүү үчүн, биз тема боюнча адабияттарды окууну сунуштайбыз (мисалы, Кей Хорстманн, Гари Корнелдин Профессионалдык китепканасы, МакЛофлиндин Объектке багытталган анализ жана дизайн же башка китептер ).Киргизүү/чыгаруу жиптери боюнча тапшырмалар
Биз I/O агымдарын аларды түшүнө электе эле колдоно баштайбыз - бул Java, балам, жана System.outти түшүндүрүү, анын үстүнө System.inди жашыл башталгычка түшүндүрүү кыйын жана биринчи этапта зарыл эмес. Бирок Java Core квестинин жүрүшүндө бул бир аз чаташкан теманы түшүнүү үчүн бorм жетиштүү жана биз консолдук киргизүү/чыгарма жөнүндө гана эмес, ошондой эле файл системасы менен иштөө жөнүндө да айтып жатабыз. Эң негизгиси, бул тапшырмаларды өткөрүп жибербөө (JavaRushта алар абдан көп) жана теорияны ырааттуу түшүнүү.Пазлдар
"Батырмалар" деп биз көп бorмди эмес, аны стандарттуу эмес түрдө колдонуу жөндөмүн талап кылган татаалдыгы жогорулаган тапшырмаларды түшүнөбүз. Бул Java Junior үчүн типтүү тапшырмалар - алар интервьюларда абдан популярдуу, бирок чыныгы жумушта бул маанидеги пазлдар көп кездешпейт. Ошондуктан JavaRushта алар бар, бирок өтө көп эмес (көбүнчө капитан Бобровдун класстарында).- http://acm.timus.ru/problemset.aspx?space=1&tag=tricky
- https://tproger.ru/category/problems/
- https://www.codechef.com/
- https://www.codewars.com/?language=java
Алгоритмдер жана маалымат структуралары
Алгоритмдер жана маалымат структуралары жөнүндө келечектеги программист аларга канчалык керек экендиги жөнүндө тынымсыз талаш-тартыштар бар. Дагы бир жолу жооп беребиз: ой жүгүртүүнү өнүктүрүү үчүн - алар керек, түздөн-түз жумуш үчүн - сейрек. Анткени Java жана башка тилдер үчүн китепканалар бардык белгилүү сорттоо, издөө жана башка алгоритмдердин ишке ашырылышы менен жазылган. Бирок, алгоритмдердин өзүңүздүн ишке ашырууларын түзүү, алардын татаалдыгын түшүнүү сыяктуу абдан пайдалуу. Айрыкча мектепте математиканы гана окугандар үчүн. Негизи, бул тапшырмалар пазлдар менен кесorшкен, бир гана айырмасы, алардын бардыгы сүрөттөлүп, онлайн режиминде көп жолу чечилет. Текшерүү үчүн валидатордун да кереги жок. Каалаган курсту тандаңыз, мисалы, Принстон университетинен , алардын Калифорниядагы кесиптештеринен же Степиктен . Айтмакчы, курста CS50 , анын котормосу JavaRushке жайгаштырылды, бир нече маанилүү алгоритмдер жана маалымат структуралары талкууланат. Биз 2-5-деңгээлдеги видеолорду көрүп, Java'да тапшырмаларды аткарууну сунуштайбыз. Графикалык көйгөйлөр: Берorштер структурасы милдеттери:Multithreading
Ар бир адам "Hello World" басып чыгаруучу программаны жаза алат... Атактуу фразаны кошумча жиптен басып чыгаруу үчүн Java Thread API колдонуу жөнүндө эмне айтууга болот? Жана беш түрдүү жиптен “Салам дүйнөнү” беш жолу басып чыгарышы үчүн жана сызыктар алмашып калбашы үчүн?.. Multithreading Java Core-ну үйрөнүүдө чыныгы “күч сынагы” болуп саналат. JavaRush боюнча бүтүндөй квест Java Multithreading деп аталган бул абдан татаал темага арналган жана анда студент параллелдүү процесстердин “оорусун жана сулуулугун” сезе алышы үчүн көптөгөн тапшырмаларды камтыйт. Көбүнчө студенттердин биринчи "чыныгы" долбоорлору аздыр-көптүр көп темаларды камтыйт. Мисалы, жөнөкөй оюндар.
Көп агым маселеси Беш унчукпаган философ тегерек столдо отурушат. Алардын ар биринин алдында бир табак спагетти турат. Айрылар столдун үстүндө ар бир философтун оң жана сол жагында (алардын ортосунда) жатат. Философ же жесе, же ойлоно алат. Анын үстүнө, ал эки айрыны кармаса гана жей алат - бири оң жана сол жагына. «Айырды ал» жана «айрыны коюу» ырааттуу түрдө аткарылуучу өзүнчө аракеттер. |
Generics боюнча тапшырмалар
Жалпылоо – бул автоматташтыруунун, башкача айтканда, кандайдыр бир мааниде программалоонун маңызы. Ошентип, Javaдагы жалпылоо же генерик темасын да этибарга албай коюуга болбойт. JavaRush жалпы программалоо тапшырмаларына ээ (негизинен Java Collections квестинде, 5-деңгээлден баштап). Генерик боюнча пайдалуу көнүгүүлөрдү жана материалдарды кайдан тапса болот:- https://docs.oracle.com/javase/tutorial/java/generics/QandE/generics-questions.html
- https://www.geeksforgeeks.org/generics-in-java/
- http://www.angelikalanger.com/GenericsFAQ/FAQSections/ProgrammingIdioms.html
- Жошуа Блохтун "Натыйжалуу Java" китеби
Дизайн үлгүлөрүнүн тапшырмалары
Кээ бир этапта (JavaRush курсунун болжол менен 2/3 бөлүгү) башталгыч программист программалоодо жакшы жүрүм-турум эрежелерин кылдат карап башташы керек. Биз codeду туура форматтоо (бул оңой) жана дизайн үлгүлөрү (бул кыйыныраак) жөнүндө болуп жатат. JavaRush мындай тапшырмаларды камтыйт. Кошумчалары керек - аларды, мисалы, китептен тапса болот (4-бөлүк) “ Java. Программалоо методдору » Блинов жана Романчик. Же буга чейин чечилген көйгөйлөрдү шаблонго кантип батыра аларыңызды ойлонуп көрүңүз.Бирдикти сыноо
Ар бир программисттин маанилүү жөндөмү, көбүнчө жаңылыш түрдө тестерлерге гана таандык, бул сиздин жеке codeуңуз үчүн бирдик (же бирдик) тесттерин жазуу. JavaRush бир нече Unit Test тапшырмалары бар, бирок сиз чындап эле жаңыларын издеп убара болбошуңуз керек. Тесттерди кантип жазууну билгенден кийин, codeуңузду (өзүңүздүн долбоорлоруңузда, бorм берүү тапшырмаларыңызда) Unit тесттери менен жабууну адат кылып алыңыз. Бул студент программисттер жапа чеккен консолдук натыйжаларды колдонуу менен текшерүү жүргүзүүгө караганда алда канча пайдалуу. Кошумчалай кетсек, көбүнчө компаниялар "жаш балдарга" ишенип тапшырган биринчи нерсе - бул башка бирөөнүн codeу үчүн Unit тесттерин жазуу.- Муляждар үчүн бирдикти тестирлөө - Хабрдын пайдалуу макаласы, андан кийин бирдикти тестирлөө эмне үчүн керек экендиги түшүнүктүү болот.
- Junit - Java тестерлер үчүн - Юрий Ткачтын видеосабактары
Регулярдуу туюнтма көйгөйлөрү
Бул адаттан тыш жана жалкоолук болгондуктан, дээрлик эч кандай башталгыч түшүнө албаган жөнөкөй тема. Чындыгында, бул теманы изилдөөгө бир нече күн сарптап, "регулярларды" түшүнүп, анте электерге караганда артыкчылыкка ээ болуу керек. Бул дагы пайдалуу, анткени алар программалоо тorнен дээрлик көз карандысыз: аны бир жолу үйрөнүңүз, сиз аны бардык жерде колдоно аласыз. JavaRushта кадимки туюнтмаларга көңүл бурган көйгөйлөр жок, бирок айрымдарын аларды колдонуу менен чечсе болот. Ошентип, бул жерде теманы түшүнүү үчүн кээ бир кошумча ресурстар бар:- Java тorндеги регулярдуу сөз айкаштары - Джефф Фризендин макаласынын котормосу
- Регулярдуу туюнтмаларды тестирлөө - онлайн режиминде туруктуу сөз айкаштарын сынай турган ресурс
- Майк Фицджералд Регулярдык туюнтмалар кыска жана жөнөкөй окуу куралы.
GO TO FULL VERSION