על המסמך: הצעה לפתרון מלא לשאלון 815381 — אלקטרוניקה ומחשבים, קיץ תשפ"ג 2023. בשאלון אחת-עשרה שאלות בשלושה פרקים, ועל הנבחן לענות על חמש שאלות — אחת לפחות מהפרק הראשון, שתיים מהפרק השני ושתיים מהפרק השלישי. פרק ראשון (1–2) תורת החשמל; פרק שני (3–5) אלקטרוניקה תקבילית וספרתית; פרק שלישי (6–11) תכנות — נבחני C# עונים על שתיים מ-6–8, ונבחני Python על שתיים מ-9–11. כאן פתורות כל השאלות, לנוחות הלימוד.
מבנה המעגל: המקור 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). ההספק:
🧪 בגרסת האתר יש כאן סימולציה אינטראקטיבית — שלושה מקטעים בטור.
שאלה 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°, ולכן מתח המקור הוא סכומם הווקטורי:
מבנה המעגל: A₁ — הכניסה + מוארקת, V₁ מוזן דרך R₁ אל הכניסה −, והמשוב R₂ מחובר בטור עם S₁: כאשר S₁ פתוח אין ל-A₁ משוב והוא פועל כמשווה (רוויה). A₂ — הכניסה + מחוברת ל-V₂, מוצא A₁ מוזן דרך R₃ אל הכניסה −, ובין הכניסה − למוצא R₄ והמפסק S₂ מחוברים במקביל: R₄ נמצא תמיד במסלול המשוב, וסגירת S₂ מקצרת אותו והופכת את A₂ לעוקב מתח.
סעיף א — המתח 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₂ פתוח, אבל R₄ מחובר במקביל למפסק ולכן נשאר במסלול המשוב של A₂: המגבר פועל בתחום הליניארי. הכניסה − שלו נמצאת על מתח הכניסה +, כלומר V₂ = 2V. נכתוב חוק זרמים בכניסה − של A₂:
סגירת S₂ מקצרת את R₄: מוצא A₂ מחובר ישירות אל הכניסה − שלו, והמגבר פועל כעוקב מתח של הכניסה +. הזרם שמגיע דרך R₃ נבלע במוצא המגבר ואינו משנה את מתח המוצא:
Vo2 = V− = V+ = V₂
Vo2 = +2 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₁)
🧪סימולציה בתוך הדף— שני מפסקים במסלולי המשוב
S₁ פתוח מנתק את המשוב של A₁ והוא קופץ לרוויה; S₂ סגור מקצר את R₄ ו-A₂ הופך לעוקב מתח. סגרו אותם בזה אחר זה וראו את ההבדל.▶ פתח את מעבדת מגברי השרת
🧪 בגרסת האתר יש כאן סימולציה אינטראקטיבית — שני מפסקים במסלולי המשוב.
מבנה המעגל: מחלק המתח 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:
מגרף האופיין (איור ב'): הערך 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₃:
מבנה המעגל: הטיה במחלק מתח 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
🧪סימולציה בתוך הדף— מגבר CE בהטיית מחלק מתח
שנו את R₂ וראו את נקודת העבודה נעה על קו העומס — עד לקיטום האות בקצוות.▶ פתח את מעבדת מגבר CE
🧪 בגרסת האתר יש כאן סימולציה אינטראקטיבית — מגבר CE בהטיית מחלק מתח.
💻 פרק שלישי — תכנות בשפת 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);
Candidate 1 sum: 550000
Candidate 2 sum: 500000
Donors: 6
Max Donation for Candidate 1: 200000
Max Donation for Candidate 2: 300000
🧪סימולציה בתוך הדף—C# — מערכת בחירות
שש התרומות של דוגמת השאלון. הקליטה נעצרת כשסך התרומות מגיע למיליון: הקטינו תרומה וראו שהלולאה ממשיכה לקלוט.▶ פתח את פרק יסודות C#
🧪 בגרסת האתר יש כאן סימולציה אינטראקטיבית — C# — מערכת בחירות.
שאלה 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++;
}
}
🧪סימולציה בתוך הדף—C# — המחלקה Average
בערכי השאלון סכום חמשת האיברים הוא אפס, ולכן הממוצע אפס. עברו לפעולה של סעיף ג וראו שנשארים רק 90 ו-100.▶ פתח את פרק יסודות C#
🧪 בגרסת האתר יש כאן סימולציה אינטראקטיבית — C# — המחלקה Average.
שאלה 8 (C#) — הפעולה Sod
הפעולה: Sod מקבלת שני מערכי שלמים ומחזירה ערך בוליאני
סעיף א — מעקב אחרי הפעולה והפלט
Main קוראת ל-Sod עם a1 = {10, 15, 15, 5, 5} ו-a2 = {10, 10, 10, 10, 10}. האורכים שווים, ולכן התנאי הראשון אינו מתקיים והביצוע עובר אל ה-else. בעמודות התנאים רשום true כאשר התנאי מתקיים ו-false כאשר אינו מתקיים; כל שורה מציגה את הערכים בסוף אותו שלב:
arr1.Length != arr2.Length
i
i < arr1.Length
x
y
s
s != 0
b
false
0
true
0
true
10
10
0
true
1
true
15
10
5
true
2
true
15
10
10
true
3
true
5
10
5
true
4
true
5
10
0
true
5
false
0
true
0
false
true
כאשר i = 5 תנאי הלולאה אינו מתקיים והלולאה מסתיימת. בסיום 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
🧪סימולציה בתוך הדף—C# — הפעולה Sod
ערכי השאלון: s עולה ל-10 וחוזר לאפס, ולכן מוחזר True. הפעולה משווה סכומים ולא איברים: שנו איבר אחד והסכומים כבר לא יהיו שווים.▶ פתח את פרק יסודות C#
🧪 בגרסת האתר יש כאן סימולציה אינטראקטיבית — C# — הפעולה Sod.
🐍 פרק שלישי — תכנות בשפת Python (שאלות 9–11)
שאלה 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)
🧪סימולציה בתוך הדף— Python — מערכת בחירות
אותה לולאת while עם צוברים כמו בשאלה 6. הסכומים ממשיים, ולכן הם מודפסים עם נקודה ואפס בסוף (550000.0).▶ פתח את פרק יסודות Python
🧪 בגרסת האתר יש כאן סימולציה אינטראקטיבית — Python — מערכת בחירות.
שאלה 10 (Python) — הפעולה sod
הפעולה: sod מקבלת שתי רשימות של מספרים שלמים ומחזירה ערך בוליאני (מקבילה לשאלה 8)
סעיף א — מעקב אחרי הפעולה sod והפלט של main_10
main_10 קוראת ל-sod עם a1 = [10, 15, 15, 5, 5] ו-a2 = [10, 10, 10, 10, 10]. האורכים שווים, ולכן התנאי הראשון אינו מתקיים והביצוע עובר אל ה-else. הלולאה עוברת על איברי arr1 (המשתנה x), והמונה i מצביע על האיבר המתאים ב-arr2 (המשתנה y). בעמודות התנאים רשום True כאשר התנאי מתקיים ו-False כאשר אינו מתקיים; בעמודת הלולאה True פירושו שנותר איבר נוסף ב-arr1. כל שורה מציגה את הערכים בסוף אותו שלב:
len(arr1) != len(arr2)
for x in arr1
x
y
s
i
s != 0
b
False
0
0
True
True
10
10
0
1
True
True
15
10
5
2
True
True
15
10
10
3
True
True
5
10
5
4
True
True
5
10
0
5
True
False
0
5
True
0
5
False
True
בסיום s = 0, ולכן התנאי s != 0 אינו מתקיים ו-b נשאר True. הפלט של הפעולה main_10:
True
סעיף ב — מה מבצעת sod עבור שתי רשימות באותו גודל
המשתנה s צובר את הסכום Σ(arr1[i] - arr2[i]) = Σarr1 - Σarr2. הפעולה מחזירה True כאשר s שווה לאפס, כלומר:
sod בודקת אם סכום איברי הרשימה הראשונה שווה לסכום איברי הרשימה השנייה, ומחזירה True אם כן ו-False אם לא
סעיף ג — הפעולה countEven
הפעולה מקבלת רשימה של מספרים שלמים ומחזירה את כמות המספרים הזוגיים בה:
def countEven(lst):
count = 0
for x in lst:
if x % 2 == 0:
count = count + 1
return count
# עבור [10, 15, 18, 2, 17] ⇒ 3
🧪סימולציה בתוך הדף— Python — הפעולה sod
ערכי השאלון: s עולה ל-10 וחוזר לאפס, ולכן מוחזר True. הפעולה משווה סכומים ולא איברים: שנו איבר אחד והסכומים כבר לא יהיו שווים.▶ פתח את פרק יסודות Python
🧪 בגרסת האתר יש כאן סימולציה אינטראקטיבית — Python — הפעולה sod.
שאלה 11 (Python) — המחלקה Average
המחלקה: Average מייצגת ממוצע חשבוני; התכונות: sum (ממשי) ו-count (שלם). מקבילה לשאלה 7
סעיף א — הפעולה הבונה ופעולת ההדפסה display
class Average:
def __init__(self): # פעולה בונה: אינה מקבלת דבר ומאפסת את התכונות
self.sum = 0.0
self.count = 0
def display(self): # מציגה כפלט את ערכי שתי התכונות
print("sum =", self.sum)
print("count =", self.count)
סעיף ב — הפלט של קטע הקוד
סכום איברי הרשימה [90, 100, -40, -60, -90] הוא 0 ומספרם 5, לכן הממוצע הוא 0 / 5 = 0.0. הפקודה print מדפיסה את שני הארגומנטים עם רווח ביניהם:
arr = [90,100,-40,-60,-90] # סכום = 0
a = Average()
for item in arr:
a.addNum(item) # count מגיע ל-5
x = a.calcAverage() # 0 / 5 = 0.0
print("Average is", x)
Average is 0.0
💡
בפייתון החילוק / מחזיר תמיד מספר ממשי, ולכן מודפס 0.0 ולא 0.
סעיף ג — שינוי addNum כך שייכנסו לחישוב רק ציונים בין 0 ל-100 (כולל)
def addNum(self, num):
if num >= 0 and num <= 100: # ציון חוקי בלבד
self.sum = self.sum + num
self.count = self.count + 1
🧪סימולציה בתוך הדף— Python — המחלקה Average
בערכי השאלון סכום חמשת האיברים הוא אפס, ולכן מודפס Average is 0.0. עברו לפעולה של סעיף ג וראו שנשארים רק 90 ו-100.▶ פתח את פרק יסודות Python
🧪 בגרסת האתר יש כאן סימולציה אינטראקטיבית — Python — המחלקה Average.