אלגוריתמים, תכנות, מתרגמים
הוצג| English | משמעות |
|---|---|
| algorithm/ˈælɡərɪθəm/ | אלגוריתם |
| high-level language/haɪ ˈlevl ˈlæŋɡwɪdʒ/ | שפת תכנות ברמה גבוהה |
| compiler/kəmˈpaɪlə/ | מתרגם |
| syntax error/ˈsɪntæks ˈerə/ | שגיאת סינטקס |
| logic error/ˈlɒdʒɪk ˈerə/ | שגיאת לוגיקה |
בנייה נקייה עדיין יכולה למכור במחיר שגוי
- תוכנית חנות מתכוונת להחיל הנחה של 10% על מחיר של 100, אך מחשבת את המחיר * 10 / 100 כסכום לתשלום.
- היא מחשבת את סכום ההנחה, 10, במקום את המחיר המופחת, 90. הקוד יכול להתקפל ולהיצר תוך יישום הנוסחה השגויה.
מהו אלגוריתם?
- אלגוריתם הוא סט סופי ומסודר של שלבים הפותר בעיה. מתכון הוא אלגוריתם: שלבים מדויקים, בסדר, שמגיעים לסיום.
- תכנות הוא מלאכת ההפיכה של אלגוריתם לקוד שמחשב מפעיל. עבור האלגוריתמים הסופיים המלמדים כאן, כל קלט תקף חייב להוביל לתוצאה לאחר מספר סופי של שלבים. תוכנית עשויה גם להפעיל שירות מתמשך; לא כל תוכנית היא חישוב בעל סיום.
שפות תכנות
- מחשבים מפעילים קוד מכונה (0s ו1s גולמיים) — קשה לאנשים לכתיבה. אנו כותבים בשפה ברמה גבוהה כמו Java: קריאה, דומה לאנגלית.
- קוד Java אומר מה לעשות; מתרגם ממיר אותו לפקודות מכונה. קורס זה מלמד פתרון בעיות דרכו של Java.
מתרגמים
- מתרגם כמו javac ממיר קבצי מקור Java לקבצי מחלקה ובוקר תחבורת, סוגים ושמות. Java מתרגם ל-bytecode, שה-Java Virtual Machine (JVM) מפעיל לאחר מכן.
- "Write once, run anywhere": קבצי מחלקה יכולים להיצר בפלטפורמות שונות עם JVM תואם והספרייה הנדרשת; גרסאות חדשות יותר של קבצי מחלקה זקוקות ל-runtimes שתומך בהן. טעעי התקפל (נתפסו לפני ההיצר) שונים מטעעי ריצה (נתפסו בזמן הרצה).
אלגוריתם מתואר באופן הטוב ביותר כ...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
צעדים סופיים ומסודרים שמסתיימים — זהו אלגוריתם.
מתרגם Java ממיר את הקוד המקור שלך ל...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Java מתרגם לבייטקוד, ש-JVM מבצע אותו.
תוכנית שתורכב ותיפעל אך תניב תוצאה שגויה מכילה שגיאת...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
תוצאה שגויה למרות הרכבה נקייה = שגיאת לוגיקה.
שגיאת סינטקס מונעת מהתוכנית Java להתרכז.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
דקדוק שגוי → המתרגם דוחה את הבנייה.
אם תוכנית מתרגמת ללא שגיאות, אין הבטחה לכך שהיא נכונה.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
הקומפיילר בודוק סyntaxis, סוגים ושמות, אך אינו מבטיח את הכלכלות העסקיות המתוכוננות או את הפלט הנכון.
כל חריגה בזמן ריצה גורמת בהכרח לסיום התוכנית, גם אם קוד טיפול בחריגות מתאים caught אותה.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
חריגה עשויה להיות caught וטופלה; חריגה שלא טופלה עשויה לגרום לסיום הביצועים.
איזה פעולה זורקת ArithmeticException למשתנה int בעל ערך 0?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
חילוק שלם באפס גורם לחריגה; חילוק double באפס מניב תוצאות IEEE floating-point.
סוגי שגיאות
- טעות תחבורת שוברת את התחבורת של Java — המתרגם מסרב לבנות. טעות ריצה מתרחשת במהלך הביצוע; חריגה שאינה נתפסת עלולה להפסיק את התוכנית. חלוקה של שלמים באפס משתנה זורעת ArithmeticException, בעוד חלוקה של נקודה צפה עוקבת אחר כללים אחרים.
- טעות לוגיקה מיוצרת היטב אך נותנת תשובה שגויה. דיבוג הוא מציאת ותיקון שלוש הטענות הללו.
מקודד מקור לביצוע תוכנית
התבונן כיצד קוד מקור Java הופך לתוכנית הפועלת.
תוכנית שמתקפלת אינה אוטומטית נכונה. המתרגם תופש טעאי תחבורה וטעאי התקפל אחרים, כולל טעאי סוג ושם. טעות לוגיקה — נוסחה שגויה, תנאי שגוי — מתקפלת בצורה נקייה והופעת, אך מייצרת תוצאה שגויה. יש לבדוק תמיד את התפוקה של האלגוריתם שלך, ולא רק אם היא מתקפלת.
Match each defect to its category.
Difficulty 2/5 · 140 coins + a small bonus on first completion today
The categories depend on when and how the defect is detected; successful compilation does not establish the intended result.
אלגוריתם למציאת המספר הגדול יותר בין שני מספרים a וb:
- שלב 1: אם
a > b, התשובה היאa. - שלב 2: אחרת, התשובה היא
b. - סופי, מסודר ולעולם מסתיים — אלגוריתם תקין, מוכן לכתיבת קוד ב-Java.
להעביר את הניתוח למקרה חדש
- בדקו את תפוקת ההנחה נגד מקרים ידועים. לדוגמה זו, 100 אמור להניב 90 ו0 אמור להניב 0; כללו קלט שאינו עגול תחת מדיניות עיגול מצוין ולא להניח שחלוקת שלמים היא אריתמטיקה עשרונית.
- המתרגם תופש גם טעאי סוג ושם, ולא רק טעאי פיסוק. לעומת זאת, חריגה יכולה להיות מטופלת במהלך הביצוע; בנייה נקייה אינה מבטיחה תוצאה רצויה או היעדר כישלונות ריצה.
אלגוריתם הוא סדרה סופית ומסודרת של צעדים הפותרים בעיה; תכנות ממיר אותו לקוד. Java היא שפה ברמה גבוהה שהמתרגם ממיר לביטקוד עבור ה-JVM. שימו לב לשגיאות סינטקס, זמן הרצה ולוגיקה — תרגום נקי אינו מבטיח תוצאה נכונה.