הצעה לפתרון מלא — אלקטרוניקה ומחשבים
בגרות · קיץ תשפ"ג 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₂:

U(R₁∥R₂) = I₁ · R₁ = 0.6 × 20 = 12 V
I₂ = U(R₁∥R₂)R₂ = 1210 = 1.2 A
I(E) = I₁ + I₂ = 0.6 + 1.2
I(E) = 1.8 A
סעיף ב — הזרם דרך הנגד R₃

הזרם הכללי 1.8A זורם דרך הצירוף R₃∥R₄. נחשב את המתח על הצירוף, ומתוכו את הזרם דרך R₃:

R₃∥R₄ = 8 × 248 + 24 = 6 Ω
U(R₃∥R₄) = I(E) · (R₃∥R₄) = 1.8 × 6 = 10.8 V
I(R₃) = U(R₃∥R₄)R₃ = 10.88
I(R₃) = 1.35 A
סעיף ג — ההתנגדות השקולה של המעגל ואת R₅

ההתנגדות השקולה מחושבת מחוק אוהם על כל המעגל. היא שווה לסכום שלושת המקטעים הטוריים, ומכאן מבודדים את R₅:

Rשק = EI(E) = 301.8 = 16.67 Ω
R₁∥R₂ = 20 × 1030 = 6.67 Ω ; R₃∥R₄ = 6 Ω
R₅ = Rשק - (R₁∥R₂) - (R₃∥R₄) = 16.67 - 6.67 - 6
Rשק ≈ 16.67 Ω ; R₅ = 4 Ω
סעיף ד — ההספק המתפתח בנגד R₄

המתח על R₄ שווה למתח על הצירוף R₃∥R₄ שחושב בסעיף ב (10.8V). ההספק:

P(R₄) = U(R₄)²R₄ = 10.8²24 = 4.86 W
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 = 1f = 12000 = 0.5 ms = 500 µs
ω = 2π f = 2π × 2000 = 12566 rad/s
T = 500 µs ; ω ≈ 12566 rad/s (4000π)
סעיף ב — התנגדות הנגד R

בחיבור טורי הזרם משותף. מחוק אוהם על הנגד:

R = V₁I = 240.004
R = 6 kΩ
סעיף ג — קיבול הקבל C

תחילה נמצא את היגב הקבל XC מהמתח על הקבל, ומתוכו את הקיבול:

XC = V₂I = 70.004 = 1750 Ω
C = 12π f XC = 12π × 2000 × 1750
XC = 1.75 kΩ ; C ≈ 45.5 nF
סעיף ד — מתח המקור U (ערך יעיל)

בחיבור טורי RC המתח על הנגד והמתח על הקבל מוסטים ב-90°, ולכן מתח המקור הוא סכומם הווקטורי:

U = √V₁² + V₂² = √24² + 7² = √576 + 49 = √625
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₂, והוא פועל כמגבר הופך:

Vo1 = - R₂R₁ · V₁ = - 62 × 0.5 = -1.5 V

S₂ עדיין פתוח, ולכן A₂ בלולאה פתוחה. הכניסה + שלו על V₂ = 2V, והכניסה − על Vo1 = -1.5V (אין זרם דרך R₃). מאחר ש-V+ > V, מוצאו נצמד לרוויה החיובית:

Vo1 = -1.5 V ; Vo2 = +15 V
סעיף ג — מתח המוצא Vo2 (סוגרים את שני המפסקים)

כעת ל-A₂ יש משוב דרך R₄. הכניסה − שלו וירטואלית על מתח הכניסה + כלומר V₂ = 2V. נכתוב חוק זרמים בכניסה − של A₂:

Vo1 - V₂R₃ + Vo2 - V₂R₄ = 0
-1.5 - 22 + Vo2 - 24 = 0 → Vo2 = 2 - 4 × -3.52
Vo2 = +9 V
סעיף ד — הזרם Io1

Io1 הוא הזרם ביציאת A₁ (שני המפסקים סגורים, Vo1 = -1.5V). הוא סכום הזרם המגיע דרך R₂ מהכניסה − (0V) והזרם המגיע דרך R₃ מכניסת A₂ (2V):

I(R₂) = 0 - Vo1R₂ = 0 - (-1.5)6000 = 0.25 mA
I(R₃) = V₂ - Vo1R₃ = 2 - (-1.5)2000 = 1.75 mA
Io1 = I(R₂) + I(R₃) = 0.25 + 1.75
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 = VCC · R₂R₁ + R₂ = 6 × 3020 + 30 = 6 × 0.6
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:

VB = VCC · R₄RTC + R₄ = 3.6 → 6 × 600RTC + 600 = 3.6
RTC + 600 = 36003.6 = 1000 → RTC = 400 Ω = 0.4 kΩ

מגרף האופיין (איור ב'): הערך 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 = VCC - VLEDR₃ = 6 - 1.5500 = 4.5500
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) בבסיס, ומחשבים את זרם הבסיס:

Vth = VCC · R₂R₁ + R₂ = 15 × 380580 = 9.83 V
Rth = R₁∥R₂ = 200 × 380580 = 131 kΩ
IB = Vth - VBERth = 9.83 - 0.7131000 = 69.7 µA
IC = β · IB = 50 × 69.7 µA = 3.48 mA
VCE = VCC - ICRC = 15 - 3.48m × 1000 = 11.52 V
IC ≈ 3.48 mA ; VCE ≈ 11.52 V
סעיף ב — מעגל התמורה לאות חילופין (AC)

בזרם חילופין כל הקבלים מהווים קצר ו-VCC הוא אדמת חילופין. לכן: מקור האות Vs מגיע דרך C₁ אל הבסיס; המעבר בסיס-אמיטר מיוצג ב-hie = 1kΩ במקביל ל-R₁∥R₂; במוצא פועל מקור זרם תלוי β·ib בקולקטור; העומס הוא RC ∥ RL; והאמיטר מוארק. מכיוון ש-Vs מקור אידיאלי, מתח המבוא על הבסיס שווה ל-Vs.

סעיף ג — הגבר המתח AVs
RC ∥ RL = 1000 × 20001000 + 2000 = 666.7 Ω
AVs = VoVs = - β (RC ∥ RL)hie = - 50 × 666.71000
AVs ≈ -33.3 (מהפך)
סעיף ד — VA(t) ו-Vo(t): ערכים מרביים ומזעריים

נתון Vs(t) = 0.1·sin(100πt) V — משרעת 0.1V ותדר f = 100π/2π = 50 Hz. משרעת האות במוצא:

Vo(amp) = |AVs| · Vs(amp) = 33.3 × 0.1 = 3.33 V

VA(t) — מתח הקולקטור (נקודה A) הוא רכיב הישר VCE = 11.52V ועליו רוכב אות החילופין ההפוך במשרעת 3.33V:

VA(max) = 11.52 + 3.33 = 14.85 V ; VA(min) = 11.52 - 3.33 = 8.19 V

Vo(t) — מעבר לקבל C₃ נחסם רכיב הישר, ונותר אות חילופין הפוך בלבד סביב 0V:

Vo(max) = +3.33 V ; Vo(min) = -3.33 V
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} (אורכים שווים). טבלת המעקב אחרי הלולאה:

ix = arr1[i]y = arr2[i]s = s + x - y
010100
115105
2151010
35105
45100

בסיום 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
🏠