על המסמך: הצעה לפתרון מלא לשאלון 815381 — אלקטרוניקה ומחשבים, קיץ תשפ"ב 2022. בשאלון שמונה שאלות בשלושה פרקים, ועל הנבחן לענות על חמש שאלות — אחת לפחות מכל פרק. פרק ראשון (1–3) אלקטרוניקה תקבילית וספרתית; פרק שני (4–5) תורת החשמל; פרק שלישי (6–8) תכנות בשפת C#. כאן פתורות כל השאלות, לנוחות הלימוד.
מבנה המעגל: טרנזיסטור בהזנה קבועה — RB מ-VCC אל הבסיס, RC מ-VCC אל הקולט, הפולט מוארק ישירות. הקבל C₁ מקשר את המבוא Vi אל הבסיס, והקבל C₂ מקשר את הקולט אל המוצא Vo עם עומס RL.
סעיף א — התנגדות הנגד RC (נתון AV = −200)
הפולט מוארק, ולכן הגבר המתח של המגבר הוא AV = −β(RC ∥ RL)/hie. נבודד את ההתנגדות המשולבת ומתוכה את RC:
🧪 בגרסת האתר יש כאן סימולציה אינטראקטיבית — שלושה מגברי שרת.
שאלה 3 — משווה עם רשת HP (מעביר גבוהים)
נתונים: מקור 6V · C = 1000 µF · R₁ = R₂ = R₃ = 10 kΩ · הזנת המגבר 0–6V · מתח הקבל ב-t=0 הוא 0V
💡
מבנה המעגל: המקור 6V, המפסק S והקבל C בטור אל צומת B, ומ-B נגד R₃ אל האדמה — זו רשת מעבירת גבוהים (HP). מתח B מוזן לכניסה החיובית של המשווה. הכניסה השלילית מקבלת מתח ייחוס קבוע A ממחלק המתח R₁–R₂.
סעיף א — המתחים בנקודות A, B ובמוצא (המפסק פתוח)
מתח הייחוס נקבע ממחלק המתח R₁–R₂ בין 6V לאדמה, ואינו תלוי במפסק:
VA = 6 · R₂R₁ + R₂ = 6 · 1020 = 3 V
כשהמפסק פתוח אין נתיב מהמקור אל הקבל; R₃ מאריק את צומת B, ולכן VB = 0V. מכיוון ש-V+ = VB = 0 < V− = VA = 3, מוצא המשווה נמוך.
VA = 3 V ; VB = 0 V ; Vo ≈ 0 V
סעיף ב — צורות הגלים Vo ו-VB לאחר סגירת המפסק (0 ≤ t ≤ 50s)
ברגע סגירת המפסק (t=0) הקבל ריק, ולכן כל מתח המקור נופל על R₃ — VB(0)=6V. הקבל נטען דרך R₃ ומתח B דועך מעריכית לכיוון 0:
τ = R₃ · C = 10000 × 1000×10-6 = 10 s
VB(t) = 6 · e−t/τ = 6 · e−t/10 [V]
עקומת VB(t): יורדת מעריכית מ-6V לכיוון 0V (ב-t=50s כבר VB ≈ 0.04V ≈ 0). עקומת Vo(t): המשווה משווה את VB אל הייחוס 3V — כל עוד VB > 3V המוצא גבוה (≈6V), וברגע ש-VB יורד מתחת ל-3V המוצא נופל לנמוך (≈0V).
סעיף ג — הזמנים שבהם מתח המוצא משנה את ערכו
לפני הסגירה המוצא נמוך (סעיף א). ברגע הסגירה, t = 0, מתח B קופץ ל-6V והמוצא עולה לגבוה. הוא יורד חזרה לנמוך כאשר VB חוצה את מתח הייחוס 3V:
מבנה המעגל: שני חוגים החולקים את הענף האמצעי R₃. חוג שמאלי: E₁, R₁, R₃, R₂. חוג ימני: E₂, R₄, R₃, R₅. I₁ הוא הזרם דרך E₁ (הענף השמאלי) ו-I₂ הזרם דרך E₂ (הענף הימני); דרך R₃ זורם סכום הזרמים.
סעיף א — הזרמים I₁ ו-I₂
נכתוב את חוק המתחים של קירכהוף לשני החוגים. הזרם דרך R₃ הוא I₃ = I₁ + I₂ (חוק הזרמים בצומת האמצעי), הזרם דרך R₂ הוא I₁ והזרם דרך R₅ הוא I₂:
🧪 בגרסת האתר יש כאן סימולציה אינטראקטיבית — שני חוגים עם ענף משותף.
💻 פרק שלישי — תכנות בשפת C#
שאלה 6 (C#) — ספירת מספרים וחיפוש במערך
הפעולה: DoSomething מקבלת מערך שלמים ומחזירה שלם
התנאי arr[i] / 100 == arr[i] % 10 בודק אם ספרת המאות (חלוקה שלמה ב-100) שווה לספרת האחדות (שארית בחלוקה ב-10). הפעולה סופרת כמה מספרים כאלה יש במערך.
סעיף א — הפלט של קטע הקוד
נעבור על המערך {123,242,155,515,321,111,23,33,999,100} ונבדוק לכל מספר אם ספרת המאות שווה לספרת האחדות (במספרים בני שתי ספרות, ספרת המאות היא 0):
i
i < arr.Length
arr[i]
arr[i] / 100
arr[i] % 10
התנאי: שוות?
num
פלט
0
true
123
1
3
false
0
1
true
242
2
2
true
1
2
true
155
1
5
false
1
3
true
515
5
5
true
2
4
true
321
3
1
false
2
5
true
111
1
1
true
3
6
true
23
0
3
false
3
7
true
33
0
3
false
3
8
true
999
9
9
true
4
9
true
100
1
0
false
4
10
false
4
4
4
סעיף ב — מה מבצע קטע התוכנית
הפעולה DoSomething סופרת בכמה מספרים במערך ספרת המאות שווה לספרת האחדות. הבעיה שהיא פותרת: קבלת מערך שלמים והחזרת מספר האיברים שבהם הספרה השמאלית (מאות) זהה לספרה הימנית (אחדות).
סעיף ג — הפעולה FindNumber
הפעולה מחזירה את מיקום ההופעה הראשונה של הערך המבוקש במערך, או −1 אם הערך אינו קיים:
public static int FindNumber(int[] arr, int number)
{
for (int i = 0; i < arr.Length; i++)
{
if (arr[i] == number)
return i;
}
return -1;
}
עבור FindNumber(array, 515) מוחזר הערך 3, כי המספר 515 נמצא באיבר הרביעי (אינדקס 3).
3
🧪סימולציה בתוך הדף—C# — ספירה וחיפוש במערך
שנו איבר וראו את הספירה משתנה; החיפוש מחזיר אינדקס, ומינוס אחת כשאין התאמה.▶ פתח את פרק יסודות C#
🧪 בגרסת האתר יש כאן סימולציה אינטראקטיבית — C# — ספירה וחיפוש במערך.
שאלה 7 (C#) — אפליקציית הצבעה לעשרה מתמודדים
נתונים: עשרה מתמודדים ממוספרים 1–10 · כל צופה מקליד את מספר המתמודד המועדף עליו
משתמשים במערך מונים בגודל 11 (אינדקסים 1–10). הקליטה נמשכת כל עוד המספר בטווח 1–10, ונעצרת כשנקלט מספר לא חוקי (מחוץ לטווח). בסיום מוצג מספר המתמודד שקיבל את מספר הקולות הנמוך ביותר — המתמודד המודח:
int[] votes = new int[11]; // אינדקסים 1..10
int num = int.Parse(Console.ReadLine());
while (num >= 1 && num <= 10) // עצירה במספר לא חוקי
{
votes[num]++;
num = int.Parse(Console.ReadLine());
}
int loser = 1; // המתמודד עם הכי מעט קולות
for (int i = 2; i <= 10; i++)
{
if (votes[i] < votes[loser])
loser = i;
}
Console.WriteLine(loser);
💡
אם שני מתמודדים קיבלו את אותו מספר קולות מזערי, קוד זה יציג את הנמוך במספרו (הראשון שנמצא). זו התנהגות סבירה לפי דרישת השאלה — הצגת מספר יחיד.