על המסמך: הצעה לפתרון מלא לשאלון 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₄ בטור עם המקור.
Rט = R₂ + R₃ + R₄ = 2 + 1 + 7 = 10 Ω
IT = ERט = 1810
IT = 1.8 A
סעיף ב — ההספק הכללי (המפסק פתוח)
P = E · IT = 18 × 1.8
P = 32.4 W
סעיף ג — ערך הנגד R₁ (המפסק סגור, P = 36W)
בסגירת המפסק ענף R₁ מקביל לענף R₂+R₃ (3 Ω). מן ההספק הנתון נמצא את הזרם הכללי, ומתוכו את ההתנגדות הכוללת ואת R₁:
IT = PE = 3618 = 2 A → Rט = EIT = 182 = 9 Ω
R₁ ∥ (R₂+R₃) = Rט - R₄ = 9 - 7 = 2 Ω
R₁ × 3R₁ + 3 = 2 → 3R₁ = 2R₁ + 6 → R₁ = 6 Ω
R₁ = 6 Ω
סעיף ד — ההספק הכללי לאחר ניתוק R₃ (המפסק סגור)
ניתוק R₃ פותח את הענף האמצעי (R₂ ו-R₃ בטור), ולכן נותר רק ענף R₁ בין שני הצמתים, בטור עם R₄:
מבנה המעגל: בין הצמתים A (עליון) ל-B (תחתון) שלושה ענפים: ענף שמאלי — מד-הזרם, R₁ והמקור E₁ (הדק הפלוס כלפי מעלה); ענף אמצעי — המפסק S בטור עם R₃; ענף ימני — R₂ והמקור E₂ (הדק הפלוס כלפי מעלה). מד-הזרם מודד את הזרם בענף השמאלי (של E₁).
סעיף א — ערך הנגד R₂ (המפסק פתוח)
כשהמפסק פתוח הענף האמצעי מנותק, ונותר חוג טורי אחד: E₁, R₁, R₂ ו-E₂. שני המקורות פונים באותו כיוון (פלוס למעלה), ולכן הם פועלים זה כנגד זה והמתח המניע הוא הפרש המקורות:
מבנה המעגל: מ-+5V בטור: נורית ה-LED, הנגד R (200 Ω) ומעבר קולט-פולט של הטרנזיסטור T (הפולט מוארק). מתח המבוא Vi מגיע לבסיס דרך RB. מתח המוצא Vo נלקח מהקולט. המעגל הוא מהפך: כש-T ברוויה המוצא נמוך וה-LED דולק.
סעיף א — הזרם דרך נורית ה-LED (T ברוויה)
ברוויה VCE = VCE(sat) = 0.2V. הזרם דרך ה-LED שווה לזרם הקולט, ונקבע ממשוואת החוג מ-+5V אל האדמה:
סעיף ב — ההתנגדות המרבית של RB לשמירה על רוויה (Vi = 5V)
כדי שהטרנזיסטור יישאר ברוויה נדרש זרם בסיס מזערי IB(min) = IC/β. ככל ש-RB גדול יותר, זרם הבסיס קטן יותר — לכן RB(max) מתקבל בשוויון:
IB(min) = ICβ = 16.5 mA100 = 0.165 mA
RB(max) = Vi - VBEIB(min) = 5 - 0.70.165 mA = 4.30.165×10-3
RB(max) ≈ 26.06 kΩ
סעיף ג — צורת מתח המוצא Vo(t)
מתח המבוא הוא דופק: Vi = 5V בקטע 0 < t < 15 msec, ו-0V מחוץ לו. המעגל מהפך:
Vi = 5V (0 < t < 15ms) → T ברוויה → Vo = VCE(sat) = 0.2V (LED דולק)
Vi = 0V (מחוץ לדופק) → T בניתוק → Vo ≈ VCC = 5V (LED כבוי)
בסרטוט: Vo הוא דופק הפוך ל-Vi — רמה גבוהה של 5V לפני t=0 ואחרי t=15ms, וצניחה לרמה נמוכה של 0.2V לאורך הדופק 0–15ms.
Vo = 0.2V בקטע 0–15ms ; 5V מחוצה לו(דופק מהופך)
🧪סימולציה בתוך הדף— טרנזיסטור כמתג לנורית
הגדילו את R_B מעבר ל-26 קילו-אוהם וראו את הטרנזיסטור יוצא מרוויה: הזרם בנורית קטן, היא מאירה חלש יותר, ו-V_o עולה מעל 0.2 וולט.▶ פתח את מרכז הטרנזיסטור
🧪 בגרסת האתר יש כאן סימולציה אינטראקטיבית — טרנזיסטור כמתג לנורית.
מבנה המעגל: מגבר שרת יחיד במבנה מגבר הפרש — V₁ דרך R₁ לכניסה השלילית, R₂ נגד המשוב; V₂ דרך R₃ לכניסה החיובית, R₄ מהכניסה החיובית לאדמה. במוצא שני ענפי LED מנוגדים בכיוונם: R₅+LED₁ (קתודה לצד המוצא) ו-R₆+LED₂ (אנודה לצד המוצא). לכן במתח מוצא חיובי דולקת LED₂ בלבד, ובמתח שלילי דולקת LED₁ בלבד.
סעיף א — ביטוי למתח המוצא Vo
מתח הכניסה החיובית נקבע ממחלק המתח R₃–R₄, ומתח המוצא לפי נוסחת מגבר ההפרש:
🧪 בגרסת האתר יש כאן סימולציה אינטראקטיבית — מגבר הפרש ושתי נוריות.
שאלה 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:
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. נמצא את זמן החצייה בעלייה (טעינה) ובירידה (פריקה):
עלייה: 10(1 - e-t/6) = 5 → t = 6·ln2 = 4.16 s
ירידה: 7.36 · e-(t-8)/6 = 5 → t = 8 + 6·ln(7.36/5) = 10.32 s
ה-LED דולקת מ-t ≈ 4.16s עד t ≈ 10.32s · משך ≈ 6.16 s
סעיף ד — ערך הנגד R₂ לפעולה תקינה
ה-LED מוגדרת "דולקת" כאשר Vo > 5V, ולכן בסף זה (Vo = 5V) הזרם צריך להשתוות לזרם המזערי ILED(min) = 8mA. מכאן ערך R₂:
R₂ = Vo - VLEDILED(min) = 5 - 1.80.008 = 3.20.008
R₂ = 400 Ω
🧪סימולציה בתוך הדף— מסנן LP, עוקב מתח ונורית
הקו האדום הוא סף ההדלקה; הנורית דולקת בדיוק בין שתי החציות של העקומה.▶ פתח את פרק רשתות RC
🧪 בגרסת האתר יש כאן סימולציה אינטראקטיבית — מסנן LP, עוקב מתח ונורית.
💻 פרק שלישי — תכנות בשפת 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}. בעמודות התנאים רשום true כאשר התנאי מתקיים ו-false כאשר אינו מתקיים. כאשר i = 5 ספרת האחדות של 894 היא 4 ולא 5, התנאי מתקיים והפעולה מסתיימת:
i
i < arr.Length
arr[i]
arr[i] % 10
arr[i] % 10 != i
הערך המוחזר
0
true
20
0
false
1
true
41
1
false
2
true
2
2
false
3
true
93
3
false
4
true
14
4
false
5
true
894
4
true
false
הפעולה מחזירה false
סעיף ב — דוגמאות למערכים
1) מערך שעבורו מוחזר true (בכל איבר ספרת אחדות = אינדקס):
int[] arr = { 0, 1, 2, 3 }; // DoSomething ⇒ true
2) מערך שעבורו מוחזר false (איבר כלשהו אינו מקיים את התנאי):
הפעולה מחזירה 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
🧪סימולציה בתוך הדף—C# — הפעולה DoSomething
המערך בן עשרת האיברים של השאלון: הלולאה נעצרת באינדקס 5, כי ספרת האחדות של 894 היא 4. הזיזו את num ל-7 וראו ש-IsInArray מחזירה False.▶ פתח את פרק יסודות C#
🧪 בגרסת האתר יש כאן סימולציה אינטראקטיבית — C# — הפעולה DoSomething.
שאלה 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 ₪.
🧪סימולציה בתוך הדף—C# — הזמנת חולצות וסווצ׳רים
דוגמת השאלון: הקלט 1, 2, 1, 1, 2, 0 נותן 3 חולצות ו-2 סווצ׳רים, וסך הכול 190. שנו את הכמויות וראו את ההזמנה מתעדכנת.▶ פתח את פרק יסודות C#
🧪 בגרסת האתר יש כאן סימולציה אינטראקטיבית — C# — הזמנת חולצות וסווצ׳רים.
שאלה 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
🧪סימולציה בתוך הדף—C# — המחלקה ListClass
שנו את הצעד וראו את הסדרה משתנה; הנוסחה start + index·step נותנת כל איבר ישירות.▶ פתח את פרק יסודות C#
🧪 בגרסת האתר יש כאן סימולציה אינטראקטיבית — C# — המחלקה ListClass.
🐍 פרק שלישי — תכנות בשפת Python (שאלות 9–11)
שאלה 9 (Python) — הפעולה DoSomething
מקבילה לשאלה 6: אותה לוגיקה בדיוק, בתחביר Python
התנאי item % 10 != i זהה בפעולתו לגרסת C#: לכל איבר נבדק אם ספרת האחדות שווה לאינדקס. הפלט זהה.
סעיף א — טבלת מעקב והערך המוחזר עבור הרשימה הנתונה
נעקוב אחרי הפעולה עבור testList = [20,41,2,93,14,894,16,987,888,9]. בעמודת הלולאה True פירושו שנותר איבר נוסף ברשימה. בעמודות התנאים רשום True כאשר התנאי מתקיים ו-False כאשר אינו מתקיים. כאשר i = 5 ספרת האחדות של 894 היא 4 ולא 5, התנאי מתקיים והפעולה מסתיימת: