מעבר לקוד · מדעי המחשב · Java · קלט, מודולו והגרלה
מודולו ומספר אקראי
כיתה י'6 שאלות12 משימותתרגול בסיסי
שלושה כלים בתוכנית אחת: קלט עם Scanner, שארית עם % והגרלה עם nextInt. קודם קוראים קוד קיים ומנבאים מה הוא יעשה, ורק אחר כך משנים אותו וכותבים קוד משלכם.
הושלמו 0 מתוך 12
שאלה 1 · מה יודפס?
ארבעה סעיפים
קראו את התוכנית. היא מקבלת מספר דקות שלמדתם היום, מדפיסה כמה שעות ודקות זה, ומגרילה משימת תרגול למחר. לפני שמריצים, נסו לדעת מה היא תדפיס.
import java.util.Scanner;import java.util.Random;publicclass Main {publicstaticvoid main(String[] args) { Scanner sc = new Scanner(System.in); Random rnd = new Random();int total = sc.nextInt();int hours = total / 60;int minutes = total % 60;int task = rnd.nextInt(6) + 1; System.out.println("hours: " + hours); System.out.println("minutes: " + minutes); System.out.println("task: " + task); }}
א
הקלט הוא 135. מה יודפס בשורות hours ו-minutes?
ב
הקלט הוא 45. מה יודפס בשורות hours ו-minutes?
ג
אילו ערכים יכול לקבל המשתנה task?
ד
מריצים את התוכנית פעמיים עם אותו קלט, 135. מה יהיה שונה בין שתי ההרצות?
שאלה 2 · הרצה
לא נבדקת
הקלידו מספר והריצו. הריצו כמה פעמים עם אותו קלט ושימו לב מה משתנה. נסו גם מספר שלילי וגם טקסט במקום מספר.
לחצו על הרצה.
הדף מדמה את התוכנית. כדאי להריץ את אותו קוד גם בסביבת הפיתוח שלכם ולהשוות.
שאלה 3 · חקירה
ארבעה סעיפים
עכשיו מסבירים למה. עקבו אחרי הקוד שורה אחרי שורה, כמו שהמחשב עושה. מספרי השורות הם של התוכנית משאלה 1.
א
עקבו אחרי הקוד עם הקלט 200. מלאו את הערכים של המשתנים אחרי שורות 10 ו-11.
ב
מחליפים את שורה 11 ל-int minutes = total % 100;. מה יודפס ב-minutes עבור הקלט 135?
ג
מהו הערך הגדול ביותר ש-minutes יכול לקבל בתוכנית המקורית, עבור כל קלט?
ד
מה משותף לביטוי total % 60 ולביטוי rnd.nextInt(60)?
שאלה 4 · השלמת קוד
שלושה סעיפים
שלוש משימות שבהן משנים את התוכנית משאלה 1. זה הקטע שמשנים בה, עם אותם מספרי שורות:
int total = sc.nextInt();int hours = total / 60;int minutes = total % 60;int task = rnd.nextInt(6) + 1;
בכל משימה כתבו את הביטוי שמימין לסימן = בשורה החדשה. הכלל מהחקירה יעזור: כמה ערכים אפשריים, ומה הערך הקטן ביותר.
א
בתוכנית יש 6 משימות תרגול, ושורה 12 מגרילה אחת מהן (מספר בין 1 ל-6). נוספו עוד משימות, ועכשיו יש 10, ממוספרות מ-1 עד 10. כתבו את שורה 12 החדשה.
ב
במקום להגריל משימה, שורה 12 תגריל את שעת ההתחלה של הלימוד מחר: מספר שלם בין 8 ל-12, כולל שני הקצוות. שם המשתנה החדש הוא start.
ג
משנים את התוכנית כך שהקלט הוא מספר ימים ולא דקות: שורה 9 הופכת ל-int days = sc.nextInt();. במקום שורות 10 ו-11 מחשבים כמה שבועות שלמים יש ב-days, וכמה ימים נשארו מעבר לכך.
שאלה 5 · סידור בלוקים
סעיף אחד
התוכנית הבאה כתובה בבלוקים מעורבבים. לחצו על בלוק כדי להוסיף אותו לפתרון, וסדרו אותם בסדר הנכון. שימו לב: שניים מהבלוקים אינם שייכים לפתרון.
א
המשתמש מקליד מספר max. המחשב מגריל מספר מזל בין 1 ל-max (כולל), מדפיס אותו, ומדפיס מתחתיו את ספרת האחדות שלו.
לדוגמה, אם הוקלד 25 והוגרל 11, מדפיסים lucky: 11 ואחריו last digit: 1.
בלוקים
הפתרון שלכם
import java.util.Scanner;
import java.util.Random;
public class Main {
public static void main(String[] args) {
לחצו על בלוק כדי להוסיף אותו כאן.
}
}
שאלה 6 · כתיבת תוכנית
בסביבת הפיתוח
עכשיו כותבים תוכנית שלמה בעצמכם, בסביבת הפיתוח. התוכנית קוראת מהמשתמש מספר דו-ספרתי (בין 10 ל-99). היא מדפיסה את ספרת העשרות שלו ואת ספרת האחדות שלו. בנוסף היא מגרילה ספרה אקראית בין 0 ל-9 ומדפיסה גם אותה.