Biror kishi mustaqil ravishda yoki onlayn kurslarda dasturlashni o'rganishni boshlaganida , "faoliyat sohasi" ni aniqlash va hamma narsani tizimlashtirish juda muhimdir. Ushbu maqolada biz bunday tizimlashtirishni taqdim etamiz - yangi boshlanuvchilar uchun Java vazifalari, JavaRush dasturlashni o'rganish uchun onlayn kursda ma'lum bir tur qanchalik to'liq taqdim etilganligini va foydali havolalarni ko'rsatamiz.
Bulmacalarni qayerdan topishingiz mumkin:
Til sintaksisi muammolari
Yangi boshlanuvchilar uchun asoslar, eng birinchi Java dasturlash vazifalari - "Salom dunyo" dan tsikllar va massivlargacha. JavaRush-da ularning ko'pi bor: ular, ayniqsa, birinchi olti darajadagi Java sintaksisi qidiruvida zich joylashgan. Ularni o'zlashtirish uchun qo'shimcha manbalarni izlash kerak emas - bu erda ularning soni etarli. Bundan tashqari, har qanday murakkab muammolarni hal qilishda siz avtomatik ravishda sintaksisni takrorlaysiz. Ammo agar sizga to'satdan kerak bo'lsa, yangi boshlanuvchilar uchun har qanday Java muammoli kitobida shunga o'xshash mashqlar mavjud. Faqatgina ushbu muammoli kitoblarda JavaRush-dagi kabi tezkor tekshiruv bo'lmaydi.To'plam vazifalari
To'plamlar yangi boshlanuvchi dasturchi o'qish paytida duch keladigan birinchi "jiddiy" mavzudir. To'plamlarga bag'ishlangan yangi boshlanuvchilar uchun Java muammolari ham JavaRush-da keng tarqalgan - Java Syntax kvestining ettinchi va sakkizinchi darajalarida. Bu yerda talaba birinchi marta Java Collections Framework haqida eshitadi, Set, List va Map interfeyslari va ularning ba'zi ilovalari bilan ishlaydi. Biroq, bu bosqichda siz faqat ushbu foydali vosita va oddiy Java vazifalari bilan tanishasiz. To'plamlarni yanada chuqurroq o'rganish Java Collections qidiruvi davomida amalga oshiriladi . Bu ob'ekt qanchalik muhimligini ko'rasiz, chunki butun bir kvest uning nomi bilan atalgan!Istisno muammolari
Java-da g'ayritabiiy vaziyatlar bilan ishlash uchun maxsus mexanizm javobgar bo'lib, bu dasturlardagi xatolarni "tutish" ni sezilarli darajada osonlashtiradi. Ammo uni to'liq ishlatish uchun Java-da istisnolardan foydalanish qanday ishlashini tushunishingiz kerak. JavaRush-da bunday vazifalar juda ko'p va ular hatto birinchi Java Syntax kvestida ham topiladi.Turni o'zgartirish bilan bog'liq muammolar
Albatta, bu guruhni asosiy sintaksis vazifalari sifatida tasniflash mumkin. Biroq, bizning kamtarona fikrimizcha, bunday vazifalar ko'pincha e'tiborga olinmaydi va yangi boshlanuvchilar ularga shoshilishadi. Shuning uchun, shablonlardan uzoqlashaylik: biz yangi boshlanuvchilar uchun Java topshiriqlarini "Ibtidoiy turlarni o'zgartirish" mavzusida, odatda bajarilganidek, boshida emas, balki biroz keyinroq - birinchi Java sintaksisi kvestining oxirida o'rganamiz. Va keyin biz Java Core questida OOP ni o'rganish orqali ibtidoiy bo'lmagan turlarni (ob'ektlarni) qanday chiqarishni o'rganamiz . JavaRush-da bunday vazifalar juda ko'p, siz qo'shimcha narsa izlashingiz shart emas.OOPni tushunish uchun vazifalar
OOP eng qiyin mavzu emas, lekin bu juda muhim. Bundan tashqari, u suhbatdoshlar kelajakdagi "yoshlar" ni qo'lga olish uchun foydalanishni yoqtiradigan juda ko'p nozik narsalarni o'z ichiga oladi. JavaRush kursida yangi boshlanuvchilar uchun amaliy dasturlash masalalari mavjud bo'lib, ular sizga ob'ektga yo'naltirilgan yondashuvni tushunishga yordam beradi. Biroq, OOPni chinakam tushunish uchun mavzu bo'yicha adabiyotlarni o'qishni tavsiya etamiz (masalan, Kay Horstmann, Gari Kornelning Professional kutubxonasi, Maklaflinning ob'ektga yo'naltirilgan tahlil va dizayn yoki boshqa kitoblar ).Kiritish-chiqarish iplari bo'yicha vazifalar
Biz kiritish/chiqarish oqimlaridan ularni tushunishimizdan ancha oldin foydalanishni boshlaymiz - bu Java, chaqaloq va System.out-ni tushuntirish va bundan tashqari, System.in-ni yashil boshlovchiga tushuntirish qiyin va birinchi bosqichda kerak emas. Ammo Java Core kvestida bu biroz chalkash mavzuni tushunish uchun bilim yetarli va biz nafaqat konsol kiritish/chiqarish haqida, balki fayl tizimi bilan ishlash haqida ham gapiramiz. Asosiysi, bu vazifalarni o'tkazib yubormaslik (JavaRush-da ular juda ko'p) va nazariyani izchil tushunishdir.Boshqotirmalar
"Yubbozlar" deganda biz ko'p bilimni emas, balki uni nostandart usulda qo'llash qobiliyatini talab qiladigan murakkablikdagi vazifalarni nazarda tutamiz. Bu Java Junior uchun odatiy vazifalar - ular intervyularda juda mashhur, ammo haqiqiy ishda bu ma'noda jumboqlar juda keng tarqalgan emas. Shuning uchun JavaRush-da ular bor, lekin unchalik ko'p emas (odatda kapitan Bobrovning darslarida).- 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
Algoritmlar va ma'lumotlar tuzilmalari
Algoritmlar va ma'lumotlar tuzilmalari bo'yicha doimiy bahs-munozaralar mavjud bo'lib, ular kelajakdagi dasturchiga qanchalik muhtojligi haqida. Yana bir bor javob beramiz: fikrlashni rivojlantirish uchun - ular kerak, to'g'ridan-to'g'ri ish uchun - kamdan-kam hollarda. Chunki Java va boshqa tillar uchun kutubxonalar allaqachon ma'lum bo'lgan saralash, qidirish va boshqa algoritmlarni amalga oshirish bilan yozilgan. Biroq, algoritmlarning o'z ilovalarini yaratish juda foydali, chunki ularning murakkabligi haqida tushunchani rivojlantirish. Ayniqsa, faqat maktabda matematikani o'rgangan odamlar uchun. Asosan, bu vazifalar jumboqlar bilan aralashib ketgan, yagona farq shundaki, ularning barchasi ko'p marta Internetda tasvirlangan va hal qilingan. Tasdiqlash uchun sizga validator ham kerak emas. Har qanday kursni tanlang, masalan, Prinston universiteti , ularning Kaliforniyadagi hamkasblari yoki Stepik . Aytgancha, biz JavaRush-ga tarjimasini joylashtirgan CS50 kursida bir nechta muhim algoritmlar va ma'lumotlar tuzilmalari muhokama qilinadi. Biz 2-5-darajali videolarni tomosha qilishni va Java-da vazifalarni amalga oshirishni tavsiya qilamiz. Grafik muammolari: Ma'lumotlar tuzilishi vazifalari:Ko'p tarmoqli
Har kim "Salom dunyo" ni chop etadigan dastur yozishi mumkin... Mashhur ibora qo'shimcha ipdan chop etilishi uchun Java Thread API dan foydalanishga nima deysiz? “Salom dunyo”ni besh xil ipdan besh marta chop etishi va qatorlar bir-birini almashtirmasligi uchunmi?.. Multithreading Java Core-ni o'rganishda haqiqiy “kuch sinovidir”. JavaRush-dagi butun kvest Java Multithreading deb nomlangan ushbu juda qiyin mavzuga bag'ishlangan bo'lib , u talaba parallel jarayonlarning "og'riq va go'zalligini" his qilishi uchun juda ko'p vazifalarni o'z ichiga oladi. Ko'pincha o'quvchilarning birinchi "haqiqiy" loyihalari ko'p yoki kamroq darajada ko'p oqimlarni o'z ichiga oladi. Masalan, oddiy o'yinlar.
Ko'p oqim muammosi Beshta jim faylasuf davra stolida o'tirishadi. Ularning har birining oldida bir tovoq spagetti bor. Vilkalar stolda har bir faylasufning chap va o'ng tomonida yotadi (ular orasida). Faylasuf yo ovqatlanishi yoki o'ylashi mumkin. Bundan tashqari, agar u ikkita vilkani ushlab tursa, ovqatlanishi mumkin - biri o'ngga va chapga. "Sichqonchani oling" va "vilkani qo'ying" - ketma-ket bajariladigan alohida harakatlar. |
Generics bo'yicha vazifalar
Umumlashtirish - bu avtomatlashtirishning, ya'ni ma'lum ma'noda dasturlashning mohiyatidir. Shunday qilib, Java-dagi umumlashtirish yoki generiklar mavzusini ham e'tiborsiz qoldirmaslik kerak. JavaRush umumiy dasturlash vazifalariga ega (asosan Java Collections kvestida, 5-darajadan boshlab). Jeneriklar bo'yicha foydali mashqlar va materiallarni qaerdan topishingiz mumkin:- 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
- Joshua Blochning "Samarali Java" kitobi
Dizayn naqshlari bo'yicha vazifalar
Ba'zi bir bosqichda (JavaRush kursining 2/3 qismi) yangi boshlanuvchi dasturchi dasturlashda yaxshi xulq-atvor qoidalarini diqqat bilan ko'rib chiqishni boshlashi kerak. Biz kodni to'g'ri formatlash (bu osonroq) va dizayn naqshlari (bu qiyinroq) haqida gapiramiz. JavaRush-da bunday vazifalar mavjud. Qo'shimchalar kerak - ularni, masalan, kitobda topish mumkin (4-qism) " Java. Dasturlash usullari » Blinov va Romanchik. Yoki allaqachon hal qilingan muammolarni shablonga qanday joylashtirishingiz haqida o'ylab ko'ring.Birlik sinovi
Har qanday dasturchining muhim mahorati ko'pincha noto'g'ri ravishda faqat sinovchilarga tegishli bo'lib, bu o'z kodingiz uchun birlik (yoki birlik) testlarini yozishdir. JavaRush-da bir nechta Unit Test topshiriqlari mavjud, ammo siz haqiqatan ham yangilarini izlamasligingiz kerak. Testlarni qanday yozishni tushunganingizdan so'ng, kodingizni (o'z loyihalaringizda, o'quv topshiriqlarida) Unit testlari bilan qoplash odatini shakllantiring. Bu konsol chiqishi yordamida tekshirishlarni amalga oshirishdan ko'ra ancha foydalidir, bu talaba dasturchilar odatda azoblanadi. Bundan tashqari, ko'pincha kompaniyalar "yoshlarga" ishonib topshiradigan birinchi narsa bu boshqa birovning kodi uchun birlik testlarini yozishdir.- Qo'g'irchoqlar uchun birlik testi - Habrning foydali maqolasi, shundan so'ng birlik sinovi nima uchun kerakligi aniq bo'ladi.
- Junit - testerlar uchun Java - Yuriy Tkach tomonidan video darslik
Doimiy ifoda muammolari
Bu oddiy mavzu, uni deyarli hech bir boshlovchi tushunmaydi, chunki bu g'ayrioddiy va dangasalik. Darhaqiqat, mavzuni o'rganish uchun bir necha kun sarflash, "muntazam" ni tushunish va buni qilmaganlarga nisbatan ustunlikka ega bo'lishga arziydi. Bu ham foydali, chunki ular dasturlash tilidan deyarli mustaqil: uni bir marta o'rganing, uni hamma joyda ishlatishingiz mumkin. JavaRush-da oddiy iboralarga e'tibor qaratadigan hech qanday muammo yo'q, ammo ba'zilarini ulardan foydalanib hal qilish mumkin. Shunday qilib, mavzuni tushunish uchun qo'shimcha manbalar:- Java-dagi oddiy iboralar - Jeff Friesen maqolasining tarjimasi
- Muntazam iboralarni sinab ko'rish - muntazam iboralarni onlayn tekshirishingiz mumkin bo'lgan resurs
- Mayk Fitsjerald Muntazam ifodalar qisqa va oddiy o'quv qo'llanma.
GO TO FULL VERSION