הצעה לפתרון מלא — אלקטרוניקה ומחשבים
בגרות · קיץ תשפ"ד 2024 · שאלון 815381 · שאלות 1–11
✦ בנוי על ידי פהד גאנם ✦
💡על המסמך: הצעה לפתרון מלא לשאלון 815381 — אלקטרוניקה ומחשבים, קיץ תשפ"ד 2024. בשאלון אחת-עשרה שאלות בשלושה פרקים, ועל הנבחן לענות על חמש שאלות — אחת לפחות מכל פרק. פרק ראשון (1–2) תורת החשמל; פרק שני (3–5) אלקטרוניקה תקבילית וספרתית; פרק שלישי (6–11) תכנות — נבחני C# עונים על שתיים מ-6–8, ונבחני Python על שתיים מ-9–11. שאלות 6 ו-9, 7 ו-10, 8 ו-11 מקבילות בדיוק. כאן פתורות כל השאלות, לנוחות הלימוד.
🔌 פרק ראשון — תורת החשמל
שאלה 1 — מעגל עם מפסק, שני ענפים מקבילים ומקור יחיד
נתונים: E = 18V · R₂ = 2 Ω · R₃ = 1 Ω · R₄ = 7 Ω · R₁ לא נתון (מחושב בסעיף ג)
💡מבנה המעגל: המקור E מזין דרך הנגד R₄ (7 Ω) הטורי. בין הצומת השמאלי לצומת הימני קיימים שני ענפים מקבילים: ענף עליון ובו R₁ בטור עם המפסק S, וענף אמצעי ובו R₂ ו-R₃ בטור (2 + 1 = 3 Ω). כשהמפסק פתוח ענף R₁ מנותק, וזורם זרם רק דרך R₂+R₃.
סעיף א — הזרם הכללי IT (המפסק פתוח)
כשהמפסק פתוח ענף R₁ מנותק, והמעגל הופך לטורי פשוט: R₂, R₃ ו-R₄ בטור עם המקור.
IT = 1.8 A
סעיף ב — ההספק הכללי (המפסק פתוח)
P = 32.4 W
סעיף ג — ערך הנגד R₁ (המפסק סגור, P = 36W)
בסגירת המפסק ענף R₁ מקביל לענף R₂+R₃ (3 Ω). מן ההספק הנתון נמצא את הזרם הכללי, ומתוכו את ההתנגדות הכוללת ואת R₁:
R₁ = 6 Ω
סעיף ד — ההספק הכללי לאחר ניתוק R₃ (המפסק סגור)
ניתוק R₃ פותח את הענף האמצעי (R₂ ו-R₃ בטור), ולכן נותר רק ענף R₁ בין שני הצמתים, בטור עם R₄:
P ≈ 24.9 W (= 324/13 W)
שאלה 2 — שני מקורות, מד-זרם ומפסק
נתונים: E₁ = 24V · E₂ = 8V · R₁ = 200 Ω · R₃ = 350 Ω · קריאת מד-הזרם (S פתוח) = 20 mA
💡מבנה המעגל: בין הצמתים A (עליון) ל-B (תחתון) שלושה ענפים: ענף שמאלי — מד-הזרם, R₁ והמקור E₁ (הדק הפלוס כלפי מעלה); ענף אמצעי — המפסק S בטור עם R₃; ענף ימני — R₂ והמקור E₂ (הדק הפלוס כלפי מעלה). מד-הזרם מודד את הזרם בענף השמאלי (של E₁).
סעיף א — ערך הנגד R₂ (המפסק פתוח)
כשהמפסק פתוח הענף האמצעי מנותק, ונותרת לולאה טורית אחת: E₁, R₁, R₂ ו-E₂. שני המקורות פונים באותו כיוון (פלוס למעלה), ולכן הם פועלים זה כנגד זה והמתח המניע הוא הפרש המקורות:
R₂ = 600 Ω
סעיף ב — המתח בין A ל-B (המפסק פתוח)
נסמן VB = 0. בענף הימני הזרם 20mA זורם מ-A דרך R₂ אל הדק הפלוס של E₂ (8V):
UAB = 20 V
סעיף ג — קריאת מד-הזרם (המפסק סגור, R₃ = 350 Ω)
בסגירת המפסק מתווסף הענף האמצעי R₃ בין A ל-B. נכתוב את חוק הזרמים בצומת A (VB = 0), כאשר צמתי המקורות קבועים על +24V ו-+8V:
קריאת מד-הזרם = 50 mA
סעיף ד — המתח בין A ל-B (המפסק סגור)
מתח הצומת A חושב זה עתה בסעיף ג:
UAB = 14 V
⚙️ פרק שני — אלקטרוניקה תקבילית וספרתית
שאלה 3 — טרנזיסטור כמתג המפעיל נורית LED
נתונים: β = 100 · VCE(sat) = 0.2V · VBE = 0.7V · VLED = 1.5V · VCC = +5V · R = 0.2 kΩ
💡מבנה המעגל: מ-+5V בטור: נורית ה-LED, הנגד R (200 Ω) ומעבר קולקטור-פולט של הטרנזיסטור T (הפולט מוארק). מתח המבוא Vi מגיע לבסיס דרך RB. מתח המוצא Vo נלקח מהקולקטור. המעגל הוא מהפך: כש-T ברוויה המוצא נמוך וה-LED דולק.
סעיף א — הזרם דרך נורית ה-LED (T ברוויה)
ברוויה VCE = VCE(sat) = 0.2V. הזרם דרך ה-LED שווה לזרם הקולקטור, ונקבע ממשוואת הלולאה מ-+5V אל האדמה:
ILED = IC = 16.5 mA
סעיף ב — ההתנגדות המרבית של RB לשמירה על רוויה (Vi = 5V)
כדי שהטרנזיסטור יישאר ברוויה נדרש זרם בסיס מזערי IB(min) = IC/β. ככל ש-RB גדול יותר, זרם הבסיס קטן — לכן RB(max) מתקבל בשוויון:
RB(max) ≈ 26.06 kΩ
סעיף ג — צורת מתח המוצא Vo(t)
מתח המבוא הוא דופק: Vi = 5V בקטע 0 < t < 15 msec, ו-0V מחוץ לו. המעגל מהפך:
בסרטוט: Vo הוא דופק הפוך ל-Vi — רמה גבוהה של 5V לפני t=0 ואחרי t=15ms, וצניחה לרמה נמוכה של 0.2V לאורך הדופק 0–15ms.
Vo = 0.2V בקטע 0–15ms ; 5V מחוצה לו (דופק מהופך)
שאלה 4 — מגבר שרת כמפחית הפרש עם שתי נוריות LED
נתונים: V₁ = 2V · V₂ = 4.5V · R₁ = 1kΩ · R₂ = 2kΩ · R₃ = 1kΩ · R₄ = 2kΩ · R₅ = 0.2kΩ · R₆ = 0.1kΩ · VLED₁ = VLED₂ = 2V
💡מבנה המעגל: מגבר שרת יחיד במבנה מגבר הפרש — V₁ דרך R₁ לכניסה השלילית, R₂ נגד המשוב; V₂ דרך R₃ לכניסה החיובית, R₄ מהכניסה החיובית לאדמה. במוצא שני ענפי LED מנוגדים בכיוונם: R₅+LED₁ (קתודה לצד המוצא) ו-R₆+LED₂ (אנודה לצד המוצא). לכן במתח מוצא חיובי דולקת LED₂ בלבד, ובמתח שלילי דולקת LED₁ בלבד.
סעיף א — ביטוי למתח המוצא Vo
מתח הכניסה החיובית נקבע ממחלק המתח R₃–R₄, ומתח המוצא לפי נוסחת מגבר ההפרש:
Vo = 2(V₂ - V₁) = 2(4.5 - 2) = 5 V
סעיף ב — איזו נורית דולקת והזרם דרכה
מכיוון ש-Vo = +5V (חיובי), הזרם זורם מהמוצא דרך R₆ אל LED₂ (אנודה לצד המוצא) ואל האדמה — LED₂ דולקת. LED₁ מקוטבת הפוך ולכן כבויה:
LED₂ דולקת · ILED₂ = 30 mA ; LED₁ כבויה
סעיף ג — קיצור הנגד R₄
ג1 — מצב ההולכה: בקיצור R₄ הכניסה החיובית מוארקת (V+ = 0), ולכן Vo = −(R₂/R₁)·V₁ = −2×2 = −4V. במתח מוצא שלילי LED₁ דולקת ו-LED₂ כבויה.
ג2 — הזרם דרך כל נורית: הזרם זורם מהאדמה דרך LED₁ ו-R₅ אל המוצא השלילי:
Vo = -4V · ILED₁ = 10 mA · ILED₂ = 0
שאלה 5 — מסנן LP, מגבר יחידה ונורית LED
נתונים: R₁ = 12kΩ · C = 500µF · אספקה +10V · VC(t=0) = 0V · VLED = 1.8V · ILED(min) = 8mA · ה-LED דולקת כאשר Vo > 5V
💡מבנה המעגל: R₁ ו-C יוצרים רשת מעבירת-נמוכים (LP). מתח הקבל VC מוזן לכניסה החיובית של מגבר השרת המחובר כמגבר יחידה (עוקב מתח) — המוצא מוחזר לכניסה השלילית, ולכן Vo = VC. העוקב מבודד את רשת ה-RC מעומס ה-LED שבמוצא.
⚠️יחידות הזמן: בסרטוט Vi מופיע ציון "msec", אך קבוע הזמן של המעגל הוא τ = R₁C = 6s, וסעיף א מתייחס במפורש לזמנים t = 8s ו-t = 20s. לכן ציר הזמן הוא בשניות (הציון "msec" הוא ככל הנראה שיבוש דפוס), והדופק הוא Vi = 10V בקטע 0 < t < 8s ו-0V לאחריו.
סעיף א — מתח המוצא Vo בזמנים t = 8s ו-t = 20s
קבוע הזמן, טעינת הקבל בקטע 0–8s (לעבר 10V), ואז פריקה מ-t=8s (לעבר 0V), כאשר Vo = VC:
Vo(8s) ≈ 7.36 V ; Vo(20s) ≈ 1.0 V
סעיף ב — סרטוט Vi(t) ו-Vo(t) בקטע 0 < t < 20s
Vi: דופק מלבני — 10V בקטע 0–8s, 0V בקטע 8–20s. Vo: עולה מעריכית מ-0 ומגיע ל-7.36V ב-t=8s (סימון על הגרף), ואז פורק מעריכית ויורד ל-≈1.0V ב-t=20s. שני הערכים 7.36V ו-1.0V מסומנים על הסרטוט (מסעיף א).
סעיף ג — פרק הזמן שבו נורית ה-LED דולקת
ה-LED דולקת כאשר Vo > 5V. נמצא את זמן החצייה בעלייה (טעינה) ובירידה (פריקה):
ה-LED דולקת מ-t ≈ 4.16s עד t ≈ 10.32s · משך ≈ 6.16 s
סעיף ד — ערך הנגד R₂ לפעולה תקינה
ה-LED מוגדרת "דולקת" כאשר Vo > 5V, ולכן בסף זה (Vo = 5V) הזרם צריך להשתוות לזרם המזערי ILED(min) = 8mA. מכאן ערך R₂:
R₂ = 400 Ω
💻 פרק שלישי — תכנות בשפת C# (שאלות 6–8)
שאלה 6 (C#) — הפעולה DoSomething
הפעולה: DoSomething מקבלת מערך שלמים ומחזירה ערך בוליאני
התנאי arr[i] % 10 != i בודק לכל איבר אם ספרת האחדות שלו (השארית בחלוקה ב-10) שונה מהאינדקס i. הפעולה מחזירה true רק אם בכל איבר ספרת האחדות שווה לאינדקס; ברגע שנמצא איבר שאינו מקיים זאת — מוחזר false.
סעיף א — הפלט (טבלת מעקב) עבור המערך הנתון
נעבור על {20,41,2,93,14,894,16,987,888,9} ונשווה ספרת אחדות מול האינדקס:
| i | arr[i] | arr[i] % 10 | == i ? | המשך / החזרה |
| 0 | 20 | 0 | ✓ | ממשיך |
| 1 | 41 | 1 | ✓ | ממשיך |
| 2 | 2 | 2 | ✓ | ממשיך |
| 3 | 93 | 3 | ✓ | ממשיך |
| 4 | 14 | 4 | ✓ | ממשיך |
| 5 | 894 | 4 | ✗ | return false |
False
סעיף ב — דוגמאות למערכים
1) מערך שעבורו מוחזר true (בכל איבר ספרת אחדות = אינדקס):
int[] arr = { 0, 1, 2, 3 }; // DoSomething ⇒ true
2) מערך שעבורו מוחזר false (איבר כלשהו אינו מקיים את התנאי):
int[] arr = { 1, 1, 1 }; // DoSomething ⇒ false (באינדקס 0: 1 ≠ 0)
סעיף ג — תיאור מטרת הפעולה במשפט אחד
הפעולה מחזירה true אם ורק אם בכל איבר במערך ספרת האחדות שווה למקומו (האינדקס) — כלומר arr[i] % 10 == i מתקיים לכל i.
סעיף ד — הפעולה IsInArray
public static bool IsInArray(int[] arr, int num)
{
for (int i = 0; i < arr.Length; i++)
if (arr[i] == num)
return true;
return false;
}
עבור {2,3,5,6,2,4,2}: IsInArray(array, 2) מחזיר true, ו-IsInArray(array, 7) מחזיר false.
True
False
שאלה 7 (C#) — הזמנת חולצות וסווצ'רים
נתונים: חולצה = 30 ₪ · סווצ'ר = 50 ₪ · קלט 1=חולצה, 2=סווצ'ר · עצירה במספר לא חוקי
התוכנית קולטת בלולאה את בחירות התלמידים, סופרת חולצות וסווצ'רים בנפרד, ומסכמת את המחיר הכולל. הקליטה נעצרת כשמתקבל מספר שאינו 1 ואינו 2.
התוכנית המלאה
int shirts = 0, sweatshirts = 0;
int choice = int.Parse(Console.ReadLine());
while (choice == 1 || choice == 2)
{
if (choice == 1)
shirts++; // חולצה
else
sweatshirts++; // סווצ'ר
choice = int.Parse(Console.ReadLine());
}
int total = shirts * 30 + sweatshirts * 50;
Console.WriteLine("Shirts: " + shirts);
Console.WriteLine("Sweatshirts: " + sweatshirts);
Console.WriteLine("Total: " + total);
💡דוגמה: עבור הקלט 1, 2, 1, 1, 2, 0 (0 = מספר לא חוקי שעוצר) — 3 חולצות, 2 סווצ'רים, וסך הכול 3×30 + 2×50 = 190 ₪.
שאלה 8 (C#) — המחלקה ListClass
המחלקה: מייצגת סדרה חשבונית משלם start עד end בקפיצות step
הפעולה DoSomething(number) בודקת אם (number - start) % step == 0, כלומר אם המספר הנתון שייך לסדרה החשבונית המתחילה ב-start עם הפרש קבוע step.
סעיף א1 — הפלט של קטע הקוד
עבור ListClass(10, 21, 4) — הסדרה היא 10, 14, 18. נבדוק כל קריאה לפי (number - 10) % 4:
| number | (number - 10) % 4 | פלט |
| 11 | 1 | False |
| 14 | 0 | True |
| 16 | 2 | False |
| 18 | 0 | True |
| 21 | 3 | False |
False
True
False
True
False
סעיף א2 — תיאור מטרת הפעולה במשפט אחד
הפעולה מחזירה true אם המספר הנתון שייך לסדרה החשבונית המתחילה ב-start ובעלת הפרש קבוע step (כלומר ניתן להגיע אליו מ-start בצעדים שלמים של step), אחרת false.
סעיף ב — הפעולה printRange
public void printRange()
{
for (int i = start; i <= end; i += step)
Console.Write(i + " ");
Console.WriteLine();
}
עבור ListClass(5, 12, 2):
5 7 9 11
סעיף ג — הפעולה getNumberByIndex
public int getNumberByIndex(int index)
{
return start + index * step;
}
עבור ListClass(5, 12, 2) ו-getNumberByIndex(1): 5 + 1×2 = 7.
7
🐍 פרק שלישי — תכנות בשפת Python (שאלות 9–11)
שאלה 9 (Python) — הפעולה DoSomething
מקבילה לשאלה 6: אותה לוגיקה בדיוק, בתחביר Python
התנאי item % 10 != i זהה בפעולתו לגרסת C#: לכל איבר נבדק אם ספרת האחדות שווה לאינדקס. הפלט זהה.
סעיף א — הפלט (טבלת מעקב) עבור הרשימה הנתונה
עבור testList = [20,41,2,93,14,894,16,987,888,9]:
| i | item | item % 10 | == i ? | המשך / החזרה |
| 0–4 | 20…14 | 0…4 | ✓ | ממשיך |
| 5 | 894 | 4 | ✗ | return False |
False
סעיף ב — דוגמאות לרשימות
lst = [0, 1, 2, 3] # DoSomething ⇒ True
lst = [1, 1, 1] # DoSomething ⇒ False (באינדקס 0: 1 ≠ 0)
סעיף ג — תיאור מטרת הפעולה במשפט אחד
הפעולה מחזירה True אם ורק אם בכל איבר ברשימה ספרת האחדות שווה למקומו (האינדקס), אחרת False.
סעיף ד — הפעולה IsInArray
def IsInArray(lst, num):
for item in lst:
if item == num:
return True
return False
עבור [2,3,5,6,2,4,2]: IsInArray(lst, 2) ⇒ True, ו-IsInArray(lst, 7) ⇒ False.
True
False
שאלה 10 (Python) — הזמנת חולצות וסווצ'רים
מקבילה לשאלה 7: אותה תוכנית בתחביר Python
התוכנית המלאה
shirts = 0
sweatshirts = 0
choice = int(input())
while choice == 1 or choice == 2:
if choice == 1:
shirts += 1 # חולצה
else:
sweatshirts += 1 # סווצ'ר
choice = int(input())
total = shirts * 30 + sweatshirts * 50
print("Shirts:", shirts)
print("Sweatshirts:", sweatshirts)
print("Total:", total)
💡דוגמה: עבור הקלט 1, 2, 1, 1, 2, 0 — 3 חולצות, 2 סווצ'רים, וסך הכול 190 ₪.
שאלה 11 (Python) — המחלקה ListClass
מקבילה לשאלה 8: אותה מחלקה בתחביר Python
סעיף א1 — הפלט של קטע הקוד
עבור ListClass(10, 21, 4) — הסדרה 10, 14, 18. כל קריאה מחזירה (number - 10) % 4 == 0:
False
True
False
True
False
סעיף א2 — תיאור מטרת הפעולה במשפט אחד
הפעולה מחזירה True אם המספר הנתון שייך לסדרה החשבונית המתחילה ב-start ובעלת הפרש קבוע step, אחרת False.
סעיף ב — הפעולה printRange
def printRange(self):
for i in range(self.start, self.end + 1, self.step):
print(i, end=" ")
print()
עבור ListClass(5, 12, 2):
5 7 9 11
סעיף ג — הפעולה getNumberByIndex
def getNumberByIndex(self, index):
return self.start + index * self.step
עבור ListClass(5, 12, 2) ו-getNumberByIndex(1): 5 + 1×2 = 7.
7