Bir şəxs proqramlaşdırmanı təkbaşına və ya onlayn kurslarda öyrənməyə başlayanda "fəaliyyət sahəsini" müəyyənləşdirmək və hər şeyi sistemləşdirmək çox vacibdir. Bu yazıda biz belə bir sistemləşdirməni təqdim edirik - JavaRush proqramlaşdırmasını öyrənmək üçün onlayn kursda müəyyən bir növün nə dərəcədə tam təqdim olunduğunu göstərən yeni başlayanlar üçün Java tapşırıqları və faydalı bağlantılar.
Bulmacaları harada tapa bilərsiniz:
Dil sintaksisi problemləri
Əsaslar, yeni başlayanlar üçün ilk Java proqramlaşdırma tapşırıqları - “Salam Dünya”dan döngələr və massivlərə qədər. JavaRush-da onların çoxu var: onlar xüsusilə ilk altı səviyyədə Java Sintaksis axtarışında sıx şəkildə cəmlənib. Onları mənimsəmək üçün hər hansı əlavə mənbələr axtarmaq lazım deyil - burada onların sayı kifayət qədərdir. Bundan əlavə, hər hansı daha mürəkkəb məsələləri həll edərkən, avtomatik olaraq sintaksisi təkrarlayırsınız. Ancaq birdən onlara ehtiyacınız varsa, yeni başlayanlar üçün hər hansı bir Java problem kitabı oxşar məşqləri ehtiva edir. Yalnız bu problem kitablarında JavaRush-da olduğu kimi ani yoxlama olmayacaq.Kolleksiya tapşırıqları
Kolleksiyalar yeni başlayan proqramçının təhsili zamanı qarşılaşdığı ilk “ciddi” mövzudur. Kolleksiyalara həsr olunmuş yeni başlayanlar üçün Java problemləri də JavaRush-da geniş şəkildə təmsil olunur - Java Syntax axtarışının yeddinci və səkkizinci səviyyələrində. Burada tələbə Java Collections Framework haqqında ilk dəfə eşidəcək, Set, List və Map interfeysləri və onların bəzi tətbiqləri ilə işləyəcək. Ancaq bu mərhələdə siz yalnız bu faydalı alət və sadə Java tapşırıqları ilə tanış olacaqsınız. Kolleksiyaların daha ətraflı öyrənilməsi Java Collections axtarışı zamanı baş verəcək . Bu obyektin nə qədər vacib olduğunu görürsünüz, çünki bütöv bir axtarış onun adını daşıyır!İstisna problemləri
Java-da anormal vəziyyətlərlə işləmək üçün xüsusi bir mexanizm cavabdehdir, bu da proqramlarda səhvlərin "tutulmasını" xeyli asanlaşdırır. Ancaq ondan tam istifadə etmək üçün Java-da istisnaların idarə edilməsinin necə işlədiyini başa düşməlisiniz. JavaRush-da belə tapşırıqlar çoxdur və onlar hətta ilk Java Syntax axtarışında da tapılır.Tip çevirmə problemləri
Təbii ki, bu qrupu əsas sintaksis tapşırıqları kimi təsnif etmək olar. Bununla belə, bizim təvazökar fikrimizcə, bu cür tapşırıqlar çox vaxt lazımi səviyyədə qiymətləndirilmir və yeni başlayanlar onları yerinə yetirirlər. Buna görə də şablonlardan uzaqlaşaq: "İbtidai növlərin çevrilməsi" mövzusunda yeni başlayanlar üçün Java tapşırıqlarını tez-tez edildiyi kimi əvvəlində deyil, bir az sonra - ilk Java Sintaksis axtarışının sonunda öyrənirik. Və sonra biz Java Core axtarışında OOP-u öyrənməklə primitiv olmayan növləri (obyektləri) necə yaymağı öyrənəcəyik . JavaRush-da belə tapşırıqlar çoxdur; əlavə bir şey axtarmaq lazım deyil.OOP-u başa düşmək üçün tapşırıqlar
OOP ən çətin mövzu deyil, lakin son dərəcə vacibdir. Bundan əlavə, o, müsahibə verənlərin gələcək “kiçikləri” tutmaq üçün istifadə etməyi xoşladığı bir çox incəlikləri ehtiva edir. JavaRush kursu sizə obyekt yönümlü yanaşmanı başa düşməyə kömək edəcək yeni başlayanlar üçün praktik proqramlaşdırma problemlərini ehtiva edir. Bununla belə, OOP-u həqiqətən başa düşmək üçün mövzu ilə bağlı ədəbiyyatı oxumağı tövsiyə edirik (məsələn, Kay Horstmann, Gary Cornell's Professional Library, McLaughlin's Object-Oriented Analysis and Design və ya digər kitablar ).I/O mövzularında tapşırıqlar
Biz I/O axınlarını başa düşməmişdən çox əvvəl istifadə etməyə başlayırıq - bu, Java-dır, körpəm və System.out-u izah etmək, üstəlik, System.in-i yaşıl bir başlanğıc üçün izah etmək çətindir və ilk mərhələdə lazım deyil. Lakin Java Core axtarışı zamanı bilik bu bir qədər dolaşıq mövzunu başa düşmək üçün kifayətdir və biz təkcə konsol giriş/çıxışı haqqında deyil, həm də fayl sistemi ilə işləmək haqqında danışırıq. Əsas odur ki, bu tapşırıqları atlamamaq (JavaRush-da onların çoxu var) və ardıcıl olaraq nəzəriyyəni başa düşməkdir.Bulmacalar
"Bulmacalar" dedikdə, biz qeyri-standart şəkildə tətbiq etmək bacarığı kimi çox bilik tələb edən artan mürəkkəb tapşırıqları nəzərdə tuturuq. Bunlar Java Junior üçün tipik vəzifələrdir - müsahibələrdə çox populyardırlar, lakin real işdə bu mənada tapmacalar çox yaygın deyil. Buna görə də JavaRush-da onlar var, lakin çox deyil (adətən kapitan Bobrovun dərslərində).- 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
Alqoritmlər və məlumat strukturları
Gələcək proqramçının onlara nə qədər ehtiyacı olduğu barədə alqoritmlər və məlumat strukturları haqqında daimi mübahisələr var. Bir daha cavab verəcəyik: təfəkkürün inkişafı üçün - onlar lazımdır, birbaşa iş üçün - nadir hallarda. Çünki Java və digər dillər üçün kitabxanalar artıq bütün məlum çeşidləmə, axtarış və digər alqoritmlərin tətbiqi ilə yazılmışdır. Bununla belə, alqoritmlərin öz tətbiqlərini yaratmaq, onların mürəkkəbliyini başa düşmək kimi çox faydalıdır. Xüsusilə məktəbdə yalnız riyaziyyat oxuyan insanlar üçün. Prinsipcə, bu tapşırıqlar tapmacalarla kəsişir, yeganə fərq onların hamısının dəfələrlə onlayn təsvir edilməsi və həll edilməsidir. Doğrulama üçün təsdiqləyiciyə belə ehtiyacınız yoxdur. İstənilən kursu seçin, məsələn, Princeton Universitetindən , onların Kaliforniyadan olan həmkarlarından və ya Stepicdən . Yeri gəlmişkən, tərcüməsini JavaRush-a yerləşdirdiyimiz CS50 kursunda bir neçə vacib alqoritm və məlumat strukturları müzakirə olunur. 2-5 səviyyəli videolara baxmağı və Java-da tapşırıqları yerinə yetirməyi şiddətlə tövsiyə edirik. Qrafik problemlər: Məlumat strukturu vəzifələri:Çoxmilli
Hər kəs "Salam Dünya" çap edən proqram yaza bilər... Məşhur ifadənin əlavə ipdən çap olunması üçün Java Thread API-dən istifadə etməyə necə baxırsınız? Və beş müxtəlif mövzudan beş dəfə “Salam dünya” çap etməsi və sətirlərin bir-birini əvəz etməməsi üçün?.. Multithreading Java Core-u öyrənərkən əsl “güc testidir”. JavaRush-da bütöv bir araşdırma Java Multithreading adlanan bu çox çətin mövzuya həsr olunub və o, tələbənin paralel proseslərin “acı və gözəlliyini” hiss etməsi üçün çoxlu sayda tapşırıqları ehtiva edir. Çox vaxt tələbələrin ilk "real" layihələri az və ya çox dərəcədə çox iş parçacığını əhatə edir. Məsələn, sadə oyunlar.
Çox iş parçacığı problemi Beş səssiz filosof dəyirmi masa arxasında oturur. Onların hər birinin qarşısında bir boşqab spagetti var. Çəngəllər stolun üstündə hər bir filosofun solunda və sağında (onların arasında) uzanır. Filosof ya yeyə, ya da düşünə bilər. Üstəlik, o, yalnız iki çəngəl tutduqda yeyə bilər - biri sağında və solunda. “Çəngəl götür” və “çəngəl qoy” ardıcıl olaraq yerinə yetirilən ayrı-ayrı hərəkətlərdir. |
Generics üzrə tapşırıqlar
Ümumiləşdirmə avtomatlaşdırmanın, yəni müəyyən mənada proqramlaşdırmanın özüdür. Beləliklə, Java-da ümumiləşdirmələr və ya ümumiləşdirmələr mövzusu da diqqətdən kənarda qalmamalıdır. JavaRush ümumi proqramlaşdırma tapşırıqlarına malikdir (əsasən Java Collections axtarışında, 5-ci səviyyədən başlayaraq). Jeneriklər haqqında faydalı məşqlər və materialları harada tapa bilərsiniz:- 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 Bloch tərəfindən "Effektiv Java" kitabı
Dizayn Nümunələri Tapşırıqları
Bəzi mərhələdə (JavaRush kursunun təxminən 2/3 hissəsi) təcrübəsiz bir proqramçı proqramlaşdırmada yaxşı davranış qaydalarına diqqətlə baxmağa başlamalıdır. Söhbət kodun düzgün formatlaşdırılmasından (bu daha asandır) və dizayn nümunələrindən (daha çətin olan) gedir. JavaRush-un belə vəzifələri var. Əlavələrə ehtiyac var - onları, məsələn, kitabda tapmaq olar (4-cü hissə) “ Java. Proqramlaşdırma üsulları » Blinov və Romanchik. Və ya artıq həll edilmiş problemləri şablona necə yerləşdirə biləcəyinizi düşünün.Vahid sınağı
Hər hansı bir proqramçının çox vaxt səhvən yalnız sınaqçılara aid edilən mühüm bacarığı öz kodunuz üçün vahid (və ya Vahid) testlərini yazmaqdır. JavaRush-da bir neçə Unit Test tapşırığı var, lakin siz həqiqətən yenilərini axtarmağa can atmamalısınız. Testləri necə yazacağınızı anladıqdan sonra kodunuzu (öz layihələrinizdə, təhsil tapşırıqlarında) Unit testləri ilə əhatə etmək vərdişini formalaşdırın. Bu, tələbə proqramçılarının əziyyət çəkdiyi konsol çıxışından istifadə etməklə yoxlama aparmaqdan daha faydalıdır. Bundan əlavə, çox vaxt şirkətlərin “kiçiklərə” həvalə etdiyi ilk şey başqasının kodu üçün vahid testləri yazmaqdır.- Dummies üçün vahid testi - Habr-dan faydalı bir məqalə, bundan sonra vahid testinin nə üçün lazım olduğu aydın olacaq
- Junit - Testçilər üçün Java - Yuri Tkach tərəfindən video dərslik
Daimi ifadə problemləri
Bu, qeyri-adi və tənbəllik olduğu üçün demək olar ki, heç bir yeni başlayanın başa düşməyəcəyi sadə bir mövzudur. Əslində, mövzunu öyrənməyə bir neçə gün sərf etməyə, "müntəzəmləri" başa düşməyə və bunu etməyənlər üzərində üstünlük əldə etməyə dəyər. Bu həm də faydalıdır, çünki onlar proqramlaşdırma dilindən demək olar ki, müstəqildirlər: onu bir dəfə öyrənin, hər yerdə istifadə edə bilərsiniz. JavaRush-da müntəzəm ifadələrə diqqət yetirən heç bir problem yoxdur, baxmayaraq ki, bəziləri onlardan istifadə etməklə həll edilə bilər. Beləliklə, mövzunu başa düşmək üçün bəzi əlavə mənbələr var:- Java-da müntəzəm ifadələr - Jeff Friesen məqaləsinin tərcüməsi
- Normal ifadələrin sınaqdan keçirilməsi - müntəzəm ifadələri onlayn sınaqdan keçirə biləcəyiniz resurs
- Mike Fitzgerald Regular Expressions qısa və sadə dərslikdir.
GO TO FULL VERSION