LATEST POST

קרב וירטואלי-אבסטרקטי

במשך השנים אני פוגש סטודנטים לשעבר שלי, והם מספרים לי על ראיונות עבודה שהם עברו. זה מעניין לשמוע איך “בעולם האמיתי” מתייחסים לידע האקדמי שאנחנו לומדים בקורסים, אבל זה גם טוב לדעת שהידע הזה לא נלמד לשווא – הוא נחוץ ושימושי. כיוון שצברתי אצלי לא מעט שאלות שכאלה, שנשאלו בראיונות עבודה, החלטתי לשתף בכמה מהן…

קרא עוד ←

ספרות בעשרות

הנה סיפור עם מוסר השכל יפה, לפחות מבחינתי: לימדתי שיעור על לולאות, ונתתי לסטודנטים שאלה – עליכם לכתוב שיטה שחתימתה – public int digitsNum(int n) השיטה תקבל כפרמטר מספר שלם n ותחזיר את מספר הספרות במספר. למשל, עבור המספר 245 השיטה תחזיר 3, ועבור המספר 87345 השיטה תחזיר 5. אם אתם לא מכירים את הרעיון,…

קרא עוד ←

על קוצו של ביט

בעקבות הפוסט הקודם שלי (מתחלקים לקבוצות) קיבלתי כמה הערות מחברי פייסבוק שלי שהם גם חברים בעולם האמיתי (היי איציק!) שהם לא הצליחו לקרוא אותו עד הסוף כי הוא היה טכני מידי ולא מובן, ובאופן כללי – התחיל טוב אבל התדרדר. “אתה לא יכול לכתוב משהו שקשור למחשבים וגם יהיה מעניין?” שאלו אותי. האמת שחשבתי שמחשבים…

קרא עוד ←

מתחלקים לקבוצות

מעשה שהיה כך היה – לימדתי באיזשהו מקום – לא משנה איפה, לא משנה איזה קורס, לא משנה אילו סטודנטים J . הצגתי שאלה שבמהלכה צריך היה לחלק איברים במערך לשתי קבוצות – אדומים וירוקים. האדומים בתחילת המערך, והירוקים בסופו. שאלתי שאלה רטורית “אז מה האלגוריתם שיעשה את זה?” וקיבלתי תשובה רטורית “….”. אחרי שהצקתי…

קרא עוד ←

הוכח או הפרך

אני רוצה להקדיש את הפוסט הזה לאחד מסוגי הבעיות הקלאסיות שנתקלים בהן בתור מתכנתים. אני קורא להן “בעיות הוכח או הפרך”. אני אמחיש את הרעיון דרך דוגמא – נניח שנרצה לכתוב שיטה שחתימתה – public boolean allEven(int[] a) השיטה תקבל כפרמטר מערך מלא במספרים שלמים חיוביים. השיטה תחזיר true אם כל איברי המערך הם זוגיים,…

קרא עוד ←

אני רק שאלה

תקופת הבחינות באה עלינו (לטובה/לרעה, כל אחד ומה שמתאים לו) וזה זמן טוב לשתף בשאלה בנושא ירושה ופולימורפיזם, ששאלתי בבחינה הסמסטר, ומכילה טריק לא לגמרי טריוויאלי. אז בשאלה נתון הממשק הבא: public interface MyInterface { void f(); } ונתונה המחלקה הבאה: public abstract class A implements MyInterface { public A() { System.out.println(“In A”); f(); }…

קרא עוד ←

צורה לך

פעם לפני המון שנים, כשרק התחלתי ללמוד OOP, למדתי קורס שעירב תכנות מונחה עצמים, ובאחת המטלות התבקשתי לכתוב מחלקה שמייצגת צורות גיאומטריות. הפתרון שלי למחלקה שמייצגת מלבן, למשל, התחיל ככה – public class Rectangle {    private double width, height;    private double area, perimeter; } אילו הן התכונות של המלבן, כפי שחשבתי שהן ראויות…

קרא עוד ←

תיעוד

בואו נדבר על תיעוד. כן כן, אותן הערות שאנחנו כמתכנתים כותבים בשפה חופשית ליד, לפני, אחרי ומסביב לקוד שלנו. ההערות שאמורות להסביר את מה שהקוד עצמו לא מסביר. למה אני רוצה לדבר על תיעוד? כדי להבהיר נקודה חשובה. בשביל מה אנחנו משתמשים בתיעוד? כיוון שבהרבה מקרים, הקוד שאנחנו כותבים לא מספיק ברור ואנחנו חושבים שכמה…

קרא עוד ←

משתנים שאינם משתנים

בפוסט הזה אני רוצה לדבר על קבועים. אותם “משתנים שאינם משתנים” – שמשמשים אותנו להגדיר מספרים באמצעות שם משמעותי כלשהו, מספרים שערכם לא ישתנה. למשל, נניח שאנחנו כותבים תוכנית שמבצעת חישובי שכר, הכנסות והוצאות, וכחלק מחישוביה משתמשת באחוז המע”מ. נוכל למצוא בתוכנית שורת קוד מהסוג הבא: workerSalary = baseSalary * 0.18; מה הדבר היחיד שלא…

קרא עוד ←

ריק או לא ריק?

הפוסט הזה עוסק בריקנות. שזה נשמע אולי מוזר, אבל המושג “ריק” בשפת תכנות הוא מושג בעייתי, בייחוד כשמתעסקים בתאי זיכרון. תא זיכרון לא יכול להיות ריק, זה לא הגיוני. כיוון שתאי הזיכרון במחשב הם ישויות פיסיות, יש בהם אפסים או אחדים (בצורת שדות מגנטיים). לא יכול להיות שבתא זיכרון לא יהיה כלום, המושג לא קיים.…

קרא עוד ←

Page 1 of 2