כאשר אדם מתחיל ללמוד תכנות בעצמו או בקורסים מקוונים, חשוב מאוד להגדיר את "תחום הפעילות" ולעשות שיטתיות של הכל. במאמר זה אנו מציגים שיטתיות כזו - משימות ג'אווה למתחילים, המציינות עד כמה סוג מסוים מוצג במלואו בקורס המקוון ללימוד תכנות JavaRush וקישורים שימושיים.
איפה אפשר למצוא פאזלים:
בעיות תחביר שפה
היסודות, משימות התכנות הראשונות של Java למתחילים - מ"Hello World" ועד ללולאות ומערכים. יש הרבה מהם ב-JavaRush: הם מרוכזים בצפיפות במיוחד ב- Java Syntax קווסט בשש הרמות הראשונות. לא סביר שתצטרכו לחפש מקורות נוספים כדי להטמיע אותם - יש מספיק כאלה כאן. בנוסף, בעת פתרון בעיות מורכבות יותר, אתה חוזר אוטומטית על התחביר. אבל אם אתה פתאום צריך אותם, כל ספר בעיות Java למתחילים מכיל תרגילים דומים. רק שלא יהיה בדיקה מיידית, כמו ב-JavaRush, בספרי הבעיות הללו.משימות איסוף
אוספים הם הנושא ה"רציני" הראשון שבו נתקל מתכנת מתחיל במהלך לימודיו. בעיות Java למתחילים, המוקדשות לאוספים, מיוצגות גם כן ב-JavaRush - ברמה השביעית והשמינית של קווסט תחביר Java. כאן התלמיד ישמע לראשונה על מסגרת Java Collections, יעבוד עם ממשקי הסט, הרשימה והמפה וחלק מהטמעות שלהם. עם זאת, בשלב זה תכירו רק את הכלי השימושי הזה ומשימות ג'אווה פשוטות. מחקר יסודי יותר של אוספים יתרחש במהלך החיפוש של Java Collections . אתה רואה כמה חשוב האובייקט הזה, מכיוון שמסע שלם נקרא על שמו!בעיות חריגות
מנגנון מיוחד אחראי לעבודה עם מצבים חריגים ב-Java, מה שמפשט מאוד את ה"תפיסה" של שגיאות בתוכניות. אבל כדי להשתמש בו באופן מלא, אתה צריך להבין איך עובד טיפול חריג ב-Java. יש הרבה משימות כאלה ב-JavaRush, והן נמצאות אפילו ב-Java Syntax קווסט הראשון.סוג בעיות המרה
כמובן שניתן לסווג קבוצה זו כמשימות תחביר בסיסיות. עם זאת, לעניות דעתנו, לעתים קרובות מזלזלים במשימות כאלה, ומתחילים מתבלבלים בהן. לכן, בואו נתרחק מתבניות: אנו לומדים משימות Java למתחילים בנושא "המרה של טיפוסים פרימיטיביים" לא ממש בהתחלה, כפי שנעשה לעתים קרובות, אלא מעט מאוחר יותר - בסוף המסע הראשון של תחביר Java. ואז נלמד כיצד להטיל טיפוסים לא פרימיטיביים (אובייקטים) על ידי לימוד OOP ב- Java Core Quest . יש הרבה משימות כאלה ב-JavaRush; אתה לא צריך לחפש שום דבר נוסף.משימות להבנת OOP
OOP הוא לא הנושא הקשה ביותר, אבל הוא חשוב ביותר. בנוסף, הוא מכיל הרבה דקויות שמראיינים אוהבים להשתמש בהן כדי לתפוס "צעירים" עתידיים. קורס JavaRush מכיל בעיות תכנות מעשיות למתחילים שיעזרו לכם להבין את הגישה מונחה עצמים. עם זאת, כדי להבין באמת את OOP, אנו ממליצים לקרוא ספרות בנושא (לדוגמה, קיי הורסטמן, הספרייה המקצועית של גארי קורנל, ניתוח ועיצוב מונחה עצמים של מקלוהן, או ספרים אחרים ).משימות בנושאי קלט/פלט
אנחנו מתחילים להשתמש בזרמי I/O הרבה לפני שהבנו אותם - זה Java, baby, והסבר System.out, ויתרה מכך, System.in למתחילים ירוק, זה קשה, ולא הכרחי בשלב הראשון. אבל במהלך החיפוש של Java Core , הידע מספיק רק כדי להבין את הנושא המבלבל הזה, ואנחנו מדברים לא רק על קלט/פלט של המסוף, אלא גם על עבודה עם מערכת הקבצים. העיקר לא לדלג על המשימות הללו (יש די הרבה מהן ב-JavaRush), ולהבין באופן עקבי את התיאוריה.חידות
ב"פאזלים" אנו מתכוונים למשימות בעלות מורכבות מוגברת שדורשות לא כל כך ידע כמו היכולת ליישם אותה בצורה לא סטנדרטית. אלו משימות אופייניות לג'אווה ג'וניור - הן מאוד פופולריות בראיונות, אבל בעבודה אמיתית, חידות במובן הזה אינן נפוצות במיוחד. בגלל זה יש אותם ב-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, וגם לשפות אחרות, ספריות כבר נכתבו עם יישומים של כל האלגוריתמים המוכרים למיון, חיפוש ואחרים. עם זאת, יצירת יישומים משלך של אלגוריתמים היא שימושית מאוד, כמו גם פיתוח הבנה של מורכבותם. במיוחד לאנשים שלמדו רק מתמטיקה בבית הספר. באופן עקרוני, משימות אלו משובצות בחידות, ההבדל היחיד הוא שכולן מתוארות ונפתרות באינטרנט פעמים רבות. אתה אפילו לא צריך מאמת לאימות. בחר כל קורס, למשל, מאוניברסיטת פרינסטון , עמיתיהם מקליפורניה או סטפיק . אגב, בקורס CS50 , שאת תרגומו שמנו על JavaRush, נדון בכמה אלגוריתמים ומבני נתונים חשובים. אנו ממליצים בחום לצפות בסרטונים של רמות 2-5 וליישם את המשימות בג'אווה. בעיות גרפים: משימות מבנה נתונים:ריבוי השרשורים
כל אחד יכול לכתוב תוכנה שמדפיסה "Hello World"... מה דעתך להשתמש ב-Java Thread API כך שהביטוי המפורסם מודפס משרשור נוסף? וכדי שזה ידפיס "Hello world" חמש פעמים מחמישה שרשורים שונים, וכדי שהקווים לא יתחלפו?.. Multithreading הוא "מבחן כוח" אמיתי תוך כדי לימוד Java Core. מסע שלם ב-JavaRush מוקדש לנושא מאוד קשה זה, הנקרא Java Multithreading , והוא מכיל מספר רב של משימות כך שהתלמיד יוכל להרגיש את ה"כאב והיופי" של תהליכים מקבילים. לעתים קרובות יותר מאשר לא, הפרויקטים ה"אמיתיים" הראשונים של התלמידים כוללים ריבוי שרשורים במידה רבה או פחותה. למשל, משחקים פשוטים.
בעיה בריבוי השחלות חמישה פילוסופים שקטים יושבים ליד שולחן עגול. מול כל אחד מהם צלחת ספגטי. מזלגות מונחים על השולחן משמאל וימין של כל פילוסוף (ביניהם). פילוסוף יכול לאכול או לחשוב. יתר על כן, הוא יכול לאכול רק אם הוא מחזיק שני מזלגות - אחד נלקח מימין ומשמאלו. "להרים מזלג" ו"להניח מזלג" הן פעולות נפרדות שמתבצעות ברצף. |
משימות בנושא גנריות
הכללה היא עצם המהות של אוטומציה, כלומר, במובן מסוים, תכנות. אז אסור להתעלם גם מהנושא של הכללות או גנריות בג'אווה. ל-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
- ספר "ג'אווה יעילה" מאת יהושע בלוך
משימות עיצוב דפוסים
בשלב מסוים (בערך 2/3 מהקורס JavaRush), מתכנת מתחיל צריך להתחיל לבחון מקרוב את כללי הנימוס בתכנות. אנחנו מדברים על עיצוב קוד נכון (שזה קל יותר) ותבניות עיצוב (שזה יותר קשה). ל-JavaRush יש משימות כאלה. נדרשים נוספים - ניתן למצוא אותם, למשל, בספר (חלק 4) " Java. שיטות תכנות » בלינוב ורונצ'יק. או חשבו כיצד תוכלו להכניס בעיות שכבר נפתרו לתבנית.בדיקת יחידה
מיומנות חשובה של כל מתכנת, אשר לרוב מיוחסת בטעות בלעדית לבודקים, היא כתיבת בדיקות יחידה (או יחידה) עבור הקוד שלך. ל-JavaRush יש כמה משימות בדיקת יחידות, אבל אתה באמת לא צריך לטרוח לחפש חדשות. ברגע שאתה מבין איך לכתוב מבחנים, צור הרגל לכסות את הקוד שלך (בפרויקטים שלך, במשימות חינוכיות) עם מבחני יחידה. זה הרבה יותר שימושי מאשר ביצוע בדיקות באמצעות פלט מסוף, מה שממנו מתכנתים סטודנטים נוטים לסבול. בנוסף, לעתים קרובות הדבר הראשון שחברות מפקידות ל"זוטרים" לעשות הוא כתיבת מבחני יחידה עבור קוד של מישהו אחר.- בדיקת יחידות לבובות - מאמר שימושי מהבר, שלאחריו יתברר מדוע יש צורך בבדיקת יחידות
- Junit - ג'אווה לבודקים - סרטון הדרכה מאת יורי טקך
בעיות בביטוי רגיל
זהו נושא פשוט שכמעט אף מתחיל לא מבין, כי הוא יוצא דופן ועצלנות. למעשה, כדאי להקדיש כמה ימים ללימוד הנושא, להבין את ה"קבועים" ולהשיג יתרון על מי שלא עשה זאת. זה שימושי גם מכיוון שהם כמעט בלתי תלויים בשפת התכנות: למד אותה פעם אחת, אתה יכול להשתמש בה בכל מקום. אין בעיות ב-JavaRush המתמקדות בביטויים רגולריים, אם כי חלקן ניתנות לפתרון באמצעותן. אז הנה כמה משאבים נוספים להבנת הנושא:- ביטויים רגולריים בג'אווה - תרגום מאמר מאת ג'ף פריזן
- בדיקת ביטויים רגולריים - משאב בו ניתן לבדוק ביטויים רגולריים באינטרנט
- מייק פיצג'רלד ביטויים רגילים הוא מדריך קצר ופשוט.
GO TO FULL VERSION