הצעה לפתרון מלא — אלקטרוניקה ומחשבים
בגרות · קיץ תשפ"ג 2023 · שאלון 815381 · שאלות 1–11
✦ בנוי על ידי פהד גאנם ✦
💡על המסמך: הצעה לפתרון מלא לשאלון 815381 — אלקטרוניקה ומחשבים, קיץ תשפ"ג 2023. בשאלון אחת-עשרה שאלות בשלושה פרקים, ועל הנבחן לענות על חמש שאלות — אחת לפחות מהפרק הראשון, שתיים מהפרק השני ושתיים מהפרק השלישי. פרק ראשון (1–2) תורת החשמל; פרק שני (3–5) אלקטרוניקה תקבילית וספרתית; פרק שלישי (6–11) תכנות — נבחני C# עונים על שתיים מ-6–8, ונבחני Python על שתיים מ-9–11. כאן פתורות כל השאלות, לנוחות הלימוד.
🔌 פרק ראשון — תורת החשמל
שאלה 1 — מעגל טורי-מקבילי עם מקור מתח
נתונים: E = 30V · R₁ = 20 Ω · R₂ = 10 Ω · R₃ = 8 Ω · R₄ = 24 Ω · I₁ = 0.6A (דרך R₁)
💡מבנה המעגל: המקור E מזין בטור את הצירוף המקבילי R₁∥R₂, אחריו את הצירוף המקבילי R₃∥R₄, ואת הנגד R₅ בענף התחתון. הזרם הכללי מהמקור זהה בכל שלושת המקטעים הטוריים ומתחלק בכל צומת בין הנגדים המקבילים.
סעיף א — הזרם שמספק מקור המתח E
הזרם I₁ נתון דרך R₁. המתח על הצירוף המקבילי R₁∥R₂ שווה למתח על R₁, ומתוכו הזרם דרך R₂:
I(E) = 1.8 A
סעיף ב — הזרם דרך הנגד R₃
הזרם הכללי 1.8A זורם דרך הצירוף R₃∥R₄. נחשב את המתח על הצירוף, ומתוכו את הזרם דרך R₃:
I(R₃) = 1.35 A
סעיף ג — ההתנגדות השקולה של המעגל ואת R₅
ההתנגדות השקולה מחושבת מחוק אוהם על כל המעגל. היא שווה לסכום שלושת המקטעים הטוריים, ומכאן מבודדים את R₅:
Rשק ≈ 16.67 Ω ; R₅ = 4 Ω
סעיף ד — ההספק המתפתח בנגד R₄
המתח על R₄ שווה למתח על הצירוף R₃∥R₄ שחושב בסעיף ב (10.8V). ההספק:
P(R₄) = 4.86 W
שאלה 2 — מעגל RC טורי בזרם חילופין
נתונים: V₁ = 24V (על R) · V₂ = 7V (על C) · I = 4mA · f = 2 kHz · הקריאות יעילות
💡מבנה המעגל: הנגד R והקבל C מחוברים בטור אל מקור החילופין U. מד-הזרם A מודד את הזרם המשותף (4mA), מד-המתח V₁ מודד את המתח על R (24V) ו-V₂ את המתח על C (7V).
סעיף א — זמן המחזור והתדירות הזוויתית של מתח המקור
T = 500 µs ; ω ≈ 12566 rad/s (4000π)
סעיף ב — התנגדות הנגד R
בחיבור טורי הזרם משותף. מחוק אוהם על הנגד:
R = 6 kΩ
סעיף ג — קיבול הקבל C
תחילה נמצא את היגב הקבל XC מהמתח על הקבל, ומתוכו את הקיבול:
XC = 1.75 kΩ ; C ≈ 45.5 nF
סעיף ד — מתח המקור U (ערך יעיל)
בחיבור טורי RC המתח על הנגד והמתח על הקבל מוסטים ב-90°, ולכן מתח המקור הוא סכומם הווקטורי:
U = 25 V (יעיל)
⚙️ פרק שני — אלקטרוניקה תקבילית וספרתית
שאלה 3 — שני מגברי שרת אידיאליים עם מפסקים
נתונים: V₁=0.5V · V₂=2V · R₁=2kΩ · R₂=6kΩ · R₃=2kΩ · R₄=4kΩ · אספקה ±15V
💡מבנה המעגל: A₁ — הכניסה + מוארקת, V₁ מוזן דרך R₁ אל הכניסה −, והמשוב R₂ מחובר בטור עם S₁. A₂ — הכניסה + מחוברת ל-V₂, מוצא A₁ מוזן דרך R₃ אל הכניסה −, והמשוב R₄ בטור עם S₂. מפסק פתוח מנטרל את המשוב ומעביר את המגבר לפעולת השוואה (רוויה).
סעיף א — המתח Vo1 (שני המפסקים פתוחים)
כאשר S₁ פתוח אין נתיב משוב ל-A₁, והמגבר פועל בלולאה פתוחה. כניסת המגבר אינה מושכת זרם, לכן אין נפילת מתח על R₁ והכניסה − שווה ל-V₁ = 0.5V, בעוד הכניסה + מוארקת (0V). מאחר ש-V− > V+, המוצא נצמד לרוויה השלילית:
Vo1 = -15 V
סעיף ב — המתחים Vo1 , Vo2 (סוגרים את S₁ בלבד)
סגירת S₁ מחזירה ל-A₁ משוב דרך R₂, והוא פועל כמגבר הופך:
S₂ עדיין פתוח, ולכן A₂ בלולאה פתוחה. הכניסה + שלו על V₂ = 2V, והכניסה − על Vo1 = -1.5V (אין זרם דרך R₃). מאחר ש-V+ > V−, מוצאו נצמד לרוויה החיובית:
Vo1 = -1.5 V ; Vo2 = +15 V
סעיף ג — מתח המוצא Vo2 (סוגרים את שני המפסקים)
כעת ל-A₂ יש משוב דרך R₄. הכניסה − שלו וירטואלית על מתח הכניסה + כלומר V₂ = 2V. נכתוב חוק זרמים בכניסה − של A₂:
Vo2 = +9 V
סעיף ד — הזרם Io1
Io1 הוא הזרם ביציאת A₁ (שני המפסקים סגורים, Vo1 = -1.5V). הוא סכום הזרם המגיע דרך R₂ מהכניסה − (0V) והזרם המגיע דרך R₃ מכניסת A₂ (2V):
Io1 = 2 mA (נכנס אל מוצא A₁)
שאלה 4 — משווה עם נגד תלוי-טמפרטורה (RTC) ו-LED
נתונים: VCC=6V · R₁=20kΩ · R₂=30kΩ · R₃=500Ω · R₄=600Ω · VLED=1.5V
💡מבנה המעגל: מחלק המתח R₁–R₂ קובע מתח ייחוס קבוע בנקודה A (כניסה −). מחלק המתח RTC–R₄ קובע את מתח נקודה B (כניסה +) התלוי בטמפרטורה. ה-RTC הוא נגד שהתנגדותו יורדת עם עליית הטמפרטורה (לפי איור ב'). ה-LED נדלק כאשר מוצא המשווה גבוה, כלומר כאשר VB > VA.
סעיף א1 — המתח בנקודה A
VA = 3.6 V
סעיף א2 — תחום ערכי המתחים בנקודה B שבהם ה-LED דולק
ה-LED דולק כאשר VB > VA = 3.6V. הערך המרבי של VB מתקבל כאשר RTC שואף לאפס (VB → VCC = 6V). לכן התחום הוא:
3.6 V < VB < 6 V
סעיף ב — הטמפרטורה שבה נורית ה-LED תידלק
מעלים את הטמפרטורה של ה-RTC — התנגדותו יורדת ומתח B עולה. נמצא את ערך ה-RTC שבו VB מגיע לסף 3.6V:
מגרף האופיין (איור ב'): הערך RTC = 0.4kΩ מתקבל בטמפרטורה של כ-20°C. מכיוון שההתנגדות ממשיכה לרדת בטמפרטורות גבוהות יותר, ה-LED יידלק בכל טמפרטורה מעל 20°C.
ה-LED נדלק כאשר RTC < 0.4 kΩ ⇒ T > 20 °C
סעיף ג — זרם המוצא Io כאשר ה-LED דולק
כשה-LED דולק המוצא גבוה ונצמד למתח האספקה (≈ VCC = 6V). הזרם זורם דרך ה-LED (נפילת מתח 1.5V) ואז דרך R₃:
Io = 9 mA
שאלה 5 — מגבר טרנזיסטור במוצא משותף (הטיית מחלק מתח)
נתונים: VCC=15V · R₁=200kΩ · R₂=380kΩ · RC=1kΩ · RL=2kΩ · β=hfe=50 · hie=1kΩ · VBE=0.7V
💡מבנה המעגל: הטיה במחלק מתח R₁–R₂ אל הבסיס. האמיטר מוארק ישירות (ללא RE). C₁ מקשר את מקור האות Vs לבסיס, ו-C₃ מקשר את הקולקטור (נקודה A) אל העומס RL. היגבי הקבלים זניחים בזרם חילופין.
סעיף א — נקודת העבודה (IC , VCE)
ממירים את מחלק המתח למקור תבנין (Thevenin) בבסיס, ומחשבים את זרם הבסיס:
IC ≈ 3.48 mA ; VCE ≈ 11.52 V
סעיף ב — מעגל התמורה לאות חילופין (AC)
בזרם חילופין כל הקבלים מהווים קצר ו-VCC הוא אדמת חילופין. לכן: מקור האות Vs מגיע דרך C₁ אל הבסיס; המעבר בסיס-אמיטר מיוצג ב-hie = 1kΩ במקביל ל-R₁∥R₂; במוצא פועל מקור זרם תלוי β·ib בקולקטור; העומס הוא RC ∥ RL; והאמיטר מוארק. מכיוון ש-Vs מקור אידיאלי, מתח המבוא על הבסיס שווה ל-Vs.
סעיף ג — הגבר המתח AVs
AVs ≈ -33.3 (מהפך)
סעיף ד — VA(t) ו-Vo(t): ערכים מרביים ומזעריים
נתון Vs(t) = 0.1·sin(100πt) V — משרעת 0.1V ותדר f = 100π/2π = 50 Hz. משרעת האות במוצא:
VA(t) — מתח הקולקטור (נקודה A) הוא רכיב הישר VCE = 11.52V ועליו רוכב אות החילופין ההפוך במשרעת 3.33V:
Vo(t) — מעבר לקבל C₃ נחסם רכיב הישר, ונותר אות חילופין הפוך בלבד סביב 0V:
VA: 8.19V ↔ 14.85V ; Vo: -3.33V ↔ +3.33V
💻 פרק שלישי — תכנות בשפת C# (שאלות 6–8)
שאלה 6 (C#) — מערכת בחירות: תרומות לשני מועמדים
המשימה: קליטת זוגות (מספר מועמד 1/2, סכום תרומה) עד לתנאי עצירה, והצגת סיכומים
💡תנאי העצירה: הקליטה נעצרת כאשר סך התרומות לכלל המועמדים מגיע ל-1,000,000 ש"ח, או לאחר שנקלטו 1,000 תורמים — המוקדם מביניהם. אין צורך לבדוק את תקינות הקלט.
סעיף א — התוכנית הקולטת והמסכמת
double sum1 = 0, sum2 = 0; // סכום התרומות לכל מועמד
double max1 = 0, max2 = 0; // התרומה הבודדת הגבוהה ביותר
double total = 0; // סך כל התרומות
int donors = 0; // מספר התורמים
while (total < 1000000 && donors < 1000)
{
int candidate = int.Parse(Console.ReadLine());
double amount = double.Parse(Console.ReadLine());
donors++;
total += amount;
if (candidate == 1)
{
sum1 += amount;
if (amount > max1) max1 = amount;
}
else
{
sum2 += amount;
if (amount > max2) max2 = amount;
}
}
Console.WriteLine("Candidate 1 sum: " + sum1);
Console.WriteLine("Candidate 2 sum: " + sum2);
Console.WriteLine("Donors: " + donors);
Console.WriteLine("Max Donation for Candidate 1: " + max1);
Console.WriteLine("Max Donation for Candidate 2: " + max2);
בדיקה על נתוני הדוגמה
עבור התרומות (1, 200000) (2, 300000) (1, 100000) (1, 100000) (2, 200000) (1, 150000):
Candidate 1 sum: 550000
Candidate 2 sum: 500000
Donors: 6
Max Donation for Candidate 1: 200000
Max Donation for Candidate 2: 300000
שאלה 7 (C#) — המחלקה Average
המחלקה: ממוצע חשבוני עם התכונות sum (סכום, ממשי) ו-count (כמות, שלם)
סעיף א — הבנאי ופעולת האחזור GetCount
הבנאי אינו מקבל פרמטרים ומאתחל את שתי התכונות לאפס; פעולת האחזור מחזירה את ערך התכונה count:
public Average() // בנאי ללא פרמטרים
{
this.sum = 0;
this.count = 0;
}
public int GetCount() // פעולת אחזור לתכונה count
{
return this.count;
}
סעיף ב — הפלט של קטע הקוד
הקוד מוסיף את איברי המערך {90, 100, -40, -60, -90} ומחשב את הממוצע. סכום האיברים הוא 0 ומספרם 5, לכן הממוצע 0:
double[] arr = { 90, 100, -40, -60, -90 }; // סכום = 0
Average a = new Average();
for (int i = 0; i < arr.Length; i++)
a.AddNum(arr[i]); // count מגיע ל-5
double x = a.CalcAverage(); // 0 / 5 = 0
Console.WriteLine("Average is:" + x);
Average is:0
סעיף ג — שינוי AddNum לספירת ציונים בלבד (0–100)
משנים את AddNum כך שרק מספרים בתחום 0 עד 100 (כולל) ייכנסו לחישוב הממוצע; מספר מחוץ לתחום מתעלמים ממנו:
public void AddNum(double num)
{
if (num >= 0 && num <= 100) // ציון חוקי בלבד
{
this.sum = this.sum + num;
this.count++;
}
}
שאלה 8 (C#) — הפעולה Sod
הפעולה: Sod מקבלת שני מערכי שלמים ומחזירה ערך בוליאני
סעיף א — מעקב אחרי הפעולה והפלט
עבור a1 = {10, 15, 15, 5, 5} ו-a2 = {10, 10, 10, 10, 10} (אורכים שווים). טבלת המעקב אחרי הלולאה:
| i | x = arr1[i] | y = arr2[i] | s = s + x - y |
| 0 | 10 | 10 | 0 |
| 1 | 15 | 10 | 5 |
| 2 | 15 | 10 | 10 |
| 3 | 5 | 10 | 5 |
| 4 | 5 | 10 | 0 |
בסיום s = 0, ולכן התנאי s != 0 אינו מתקיים ו-b נשאר true. הפלט:
True
💡ב-C# ערך בוליאני מודפס באות ראשונה גדולה: True / False.
סעיף ב — מה מבצעת Sod עבור שני מערכים באותו גודל
המשתנה s צובר את הסכום Σ(arr1[i] - arr2[i]) = Σarr1 - Σarr2. הפעולה מחזירה true כאשר s שווה לאפס, כלומר:
Sod מחזירה true אם ורק אם סכום איברי המערך הראשון שווה לסכום איברי המערך השני (ובעלי אותו אורך)
סעיף ג — הפעולה CountEven
הפעולה מקבלת מערך שלמים ומחזירה את כמות המספרים הזוגיים בו:
public static int CountEven(int[] arr)
{
int count = 0;
for (int i = 0; i < arr.Length; i++)
if (arr[i] % 2 == 0)
count++;
return count;
}
// עבור { 10, 15, 18, 2, 17 } ⇒ 3
🐍 פרק שלישי — תכנות בשפת Python (שאלות 9–11)
⚠️הערה על המקור: קובץ ה-PDF שנסרק כולל 10 עמודים בלבד ומסתיים בשאלה 8; עמודי שאלון 11–13 ובהם שאלות Python 9–11 אינם מופיעים בו. על פי מבנה השאלון והנחיית מפתח ההערכה, שאלות 9–11 בפייתון מקבילות בדיוק לשאלות 6–8 ב-C#. להלן הצעה לפתרונן כמקבילות, בתחביר Python.
שאלה 9 (Python) — מערכת בחירות: תרומות לשני מועמדים
מקבילה לשאלה 6: אותה לוגיקה בדיוק, בתחביר Python
סעיף א — התוכנית הקולטת והמסכמת
sum1 = 0.0; sum2 = 0.0 # סכום התרומות לכל מועמד
max1 = 0.0; max2 = 0.0 # התרומה הבודדת הגבוהה ביותר
total = 0.0 # סך כל התרומות
donors = 0 # מספר התורמים
while total < 1000000 and donors < 1000:
candidate = int(input())
amount = float(input())
donors += 1
total += amount
if candidate == 1:
sum1 += amount
if amount > max1:
max1 = amount
else:
sum2 += amount
if amount > max2:
max2 = amount
print("Candidate 1 sum:", sum1)
print("Candidate 2 sum:", sum2)
print("Donors:", donors)
print("Max Donation for Candidate 1:", max1)
print("Max Donation for Candidate 2:", max2)
שאלה 10 (Python) — המחלקה Average
מקבילה לשאלה 7: אותה מחלקה בתחביר Python
סעיף א — הבנאי ופעולת האחזור
class Average:
def __init__(self): # בנאי ללא פרמטרים
self.sum = 0
self.count = 0
def get_count(self): # פעולת אחזור לתכונה count
return self.count
סעיף ב — הפלט של קטע הקוד
סכום איברי המערך [90, 100, -40, -60, -90] הוא 0 ומספרם 5, לכן הממוצע 0:
arr = [90, 100, -40, -60, -90] # סכום = 0
a = Average()
for x in arr:
a.add_num(x) # count מגיע ל-5
x = a.calc_average() # 0 / 5 = 0
print("Average is:" + str(x))
Average is:0.0
סעיף ג — שינוי add_num לספירת ציונים בלבד (0–100)
def add_num(self, num):
if 0 <= num <= 100: # ציון חוקי בלבד
self.sum = self.sum + num
self.count += 1
שאלה 11 (Python) — הפעולה sod
מקבילה לשאלה 8: אותה פעולה בתחביר Python
סעיף א — הפעולה sod והפלט
def sod(arr1, arr2):
b = True
if len(arr1) != len(arr2):
b = False
else:
s = 0
for i in range(len(arr1)):
s = s + arr1[i] - arr2[i]
if s != 0:
b = False
return b
a1 = [10, 15, 15, 5, 5]
a2 = [10, 10, 10, 10, 10]
print(sod(a1, a2))
סכום ההפרשים הוא 0, לכן הפלט (בפייתון האות הראשונה גדולה):
True
סעיף ב — מה מבצעת sod עבור שני מערכים באותו גודל
sod מחזירה True אם ורק אם סכום איברי המערך הראשון שווה לסכום איברי המערך השני
סעיף ג — הפעולה count_even
def count_even(arr):
count = 0
for x in arr:
if x % 2 == 0:
count += 1
return count
# עבור [10, 15, 18, 2, 17] ⇒ 3