הצעה לפתרון מלא — אלקטרוניקה ומחשבים
בגרות · קיץ תש"ף 2020 · שאלון 815381 · שאלות 1–8
✦ בנוי על ידי פהד גאנם ✦
💡על המסמך: הצעה לפתרון מלא לשאלון 815381 — אלקטרוניקה ומחשבים, קיץ תש"ף 2020. בשאלון שמונה שאלות בשלושה פרקים, ועל הנבחן לענות על חמש שאלות — אחת לפחות מכל פרק. פרק ראשון (1–2) תורת החשמל; פרק שני (3–5) אלקטרוניקה תקבילית וספרתית; פרק שלישי (6–8) תכנות בשפת C#. כאן פתורות כל השאלות, לנוחות הלימוד.
🔌 פרק ראשון — יסודות תורת החשמל
שאלה 1 — מעגל עם שני מקורות ושני מדי-זרם
נתונים: E₁ = 9V · R₁ = 3Ω · E₂ = 4V · I(A₁) = 2A · I(A₂) = 1A
💡קריאת המעגל: מדי-הזרם A₁ ו-A₂ אידיאליים (התנגדות אפס). מד A₁ מודד את הזרם בענף השמאלי (E₁–R₁) ומראה 2A הנכנסים לצומת A; מד A₂ מודד את הזרם בענף הימני (R₃–E₂) ומראה 1A היוצא מ-A. הדק הפלוס של E₁ פונה כלפי מעלה (אל A), והדק הפלוס של E₂ פונה כלפי מטה (אל B).
סעיף א — המתח בין A ל-B
נסמן את הפוטנציאל בצומת B כאפס. בענף השמאלי המקור E₁ מעלה את הפוטנציאל ב-9V מעל B, והמתח על R₁ נובע מהזרם שמד A₁ מודד:
UAB = 3 V
סעיף ב — ההתנגדות R₂
לפי חוק הזרמים של קירכהוף בצומת A, הזרם הנכנס (A₁) שווה לסכום הזרם היוצא לענף הימני (A₂) והזרם היורד דרך R₂ אל B:
R₂ = 3 Ω
סעיף ג — ההתנגדות R₃
בענף הימני זורם הזרם I(A₂)=1A מ-A אל B דרך R₃ ואז דרך E₂. מכיוון שהדק הפלוס של E₂ פונה אל B, המקור E₂ מוסיף למתח שעל R₃. נכתוב חוק המתחים על הענף מ-A ל-B:
R₃ = 7 Ω
שאלה 2 — מעגל RL טורי בזרם חילופין
נתונים: L = 30 mH · I = 0.5A (יעיל) · v(t) = 25√2·sin(1000t) V
מצורת המקור: המתח היעיל הוא U = 25V, והתדר הזוויתי ω = 1000 rad/s. בחיבור טורי הזרם משותף לנגד ולסליל.
סעיף א — היגב הסליל XL
XL = 30 Ω
סעיף ב — עכבת המעגל Z
Z = 50 Ω
סעיף ג — ההתנגדות R
בחיבור טורי מתקיים Z² = R² + XL², ומכאן:
R = 40 Ω
סעיף ד — זווית הפאזה בין מתח המקור לזרם
המעגל השראי, ולכן הזרם מפגר אחרי המתח בזווית 36.87°.
φ ≈ 36.87° (הזרם מפגר אחרי המתח)
סעיף ה — דיאגרמת מחוגים של העכבה Z
בדיאגרמת העכבה מציירים את הרכיבים כמחוגים במישור המרוכב: R על הציר האופקי (הממשי), XL אנכי כלפי מעלה (הסליל מקדים), והעכבה Z היא הסכום הווקטורי — היתר של המשולש ישר-הזווית:
משולש עכבה: R=40Ω אופקי, XL=30Ω אנכי, Z=50Ω בזווית 36.87°
⚙️ פרק שני — אלקטרוניקה תקבילית וספרתית
שאלה 3 — מגבר טרנזיסטור במוצא משותף (CE)
נתונים: VBE=0.7V · β=hfe=100 · hie=1kΩ · VCC=20V · RB=200kΩ
משקף התנודות: Time/div = 0.1ms · CH₁: 50mV/div · CH₂: 2V/div
💡מבנה המעגל: מגבר טרנזיסטור במוצא משותף — האמיטר מוארק ישירות (ללא נגד אמיטר). המבוא Vin מגיע לבסיס דרך C₁, והמוצא Vo נלקח מהקולקטור דרך C₂. ערוץ CH₁ מציג את מתח המבוא (משרעת קטנה) ו-CH₂ את מתח המוצא (משרעת גדולה).
סעיף א — הגבר המתח AV מן המשקף
מאיור ב' קוראים את המשרעות: אות CH₁ (המבוא) בעל משרעת של תא אחד, ואות CH₂ (המוצא) בעל משרעת של שני תאים; שני האותות בפאזה הפוכה (180°) — סימן היכר של מגבר מוצא-משותף (מגבר מהפך).
AV = -80 (מהפך, |AV| = 80)
סעיף ב — דגם חילופין (מעגל תמורה)
בזרם חילופין כל הקבלים מהווים קצר: מתח המבוא Vi מגיע ישירות אל הבסיס דרך C₁; המעבר בסיס-אמיטר מיוצג בהתנגדות hie = 1kΩ; במוצא פועל מקור זרם תלוי β·ib הזורם בקולקטור; העומס בקולקטור הוא RC (אין נגד עומס — משקף התנודות בעל התנגדות גבוהה מאוד); האמיטר מוארק, ו-RB מחובר בין הבסיס לאדמת החילופין.
סעיף ג — ההתנגדות RC
במגבר מוצא-משותף עם אמיטר מוארק, הגבר המתח הוא AV = -β·RC/hie. נחלץ את RC מגודל ההגבר שמצאנו:
RC = 800 Ω
סעיף ד — נקודת העבודה של הטרנזיסטור
מהזנה קבועה דרך RB (אמיטר מוארק במצב מנוחה): נמצא את זרם הבסיס, ומתוכו את זרם הקולקטור ואת VCE:
IC ≈ 9.65 mA ; VCE ≈ 12.28 V
שאלה 4 — שני מגברי שרת: מגבר הפרש ומשווה
נתונים: V₁=1V · V₂=4V · R₁=5kΩ · R₂=10kΩ · R₃=10kΩ · R₄=20kΩ · R₅=10kΩ · אספקה ±12V
💡מבנה המעגל: A₁ הוא מגבר לא-מהפך — כניסתו החיובית מוזנת ב-V₁, R₁ בין הכניסה השלילית לאדמה ו-R₂ נגד המשוב. A₂ הוא מגבר עם משוב (R₄ מהמוצא אל הכניסה השלילית, צומת B), כניסתו החיובית מוזנת ב-V₂, וצומת B מקבל זרמים מ-Vo₁ (דרך R₃) וממקור 2V (דרך R₅).
סעיף א — המתח בנקודה A ובנקודה B
המגברים אידיאליים ופועלים עם משוב שלילי, ולכן מתקיים קצר וירטואלי: מתח הכניסה השלילית שווה למתח הכניסה החיובית בכל מגבר.
VA = 1 V ; VB = 4 V
סעיף ב — מתח המוצא Vo1
A₁ הוא מגבר לא-מהפך:
Vo1 = 3 V
סעיף ג — מתח המוצא Vo
נכתוב חוק הזרמים בצומת B (מתחו 4V), עם שלושה ענפים — R₃ מ-Vo₁, R₅ ממקור 2V, ו-R₄ מהמוצא Vo:
Vo = 10 V
סעיף ד — מנתקים את R₄; מתח המוצא Vo
ללא R₄ אין למגבר A₂ משוב — הוא הופך למשווה. צומת B הופך למחלק מתח בין Vo₁ (דרך R₃) ומקור 2V (דרך R₅), וכניסת המשווה אינה מושכת זרם:
כעת הכניסה החיובית V₂=4V גבוהה מהכניסה השלילית VB=2.5V, ולכן המשווה נכנס לרוויה חיובית ומוצאו נצמד למתח האספקה החיובי:
Vo = +12 V
שאלה 5 — מסנן מעביר גבוהים (HPF) ומשווה עם נורית LED
נתונים: VCC=6V · C=1000µF · R=10kΩ · R₁=10kΩ · R₂=10kΩ · R₃=1kΩ · מתח הקבל ב-t=0 הוא 0V
💡מבנה המעגל: המסנן המעביר-גבוהים בנוי מקבל C בטור ונגד R לאדמה; מוצאו (צומת B) מחובר לכניסה החיובית של המשווה. הכניסה השלילית (צומת A) מחוברת למחלק המתח R₁–R₂ ומקבלת מתח ייחוס קבוע. במוצא, נורית LED בטור עם R₃ נדלקת כאשר מתח B עולה מעל מתח הייחוס A.
סעיף א — המתח בנקודות A ו-B ומתח המוצא (המפסק פתוח)
מתח הייחוס בצומת A נקבע ממחלק המתח ואינו תלוי במפסק:
כשהמפסק פתוח הקבל ריק ואין נתיב הזנה למסנן; הנגד R מוריד את צומת B לאפס, ולכן VB = 0V. מאחר ש-V+=VB=0 < V−=VA=3, מוצא המשווה נמוך (≈0V) — ה-LED כבוי.
VA = 3 V ; VB = 0 V ; Vo ≈ 0 V (ה-LED כבוי)
סעיף ב — סרטוט VB(t) ו-Vo(t) לאחר סגירת המפסק ב-t=0
ברגע סגירת המפסק מוזרק מדרגת מתח של 6V אל הקבל הריק, ולכן מלוא ה-6V מופיע רגעית על R — מתח B קופץ ל-6V ודועך מעריכית לכיוון אפס תוך כדי טעינת הקבל:
עקומת VB(t): יורדת מעריכית מ-6V לכיוון 0V, וחוצה את מתח הייחוס 3V בנקודת המעבר. עקומת Vo(t): גבוהה (≈6V, LED דולק) כל עוד VB>3V, ונמוכה (0V, LED כבוי) מרגע ש-VB יורד מתחת ל-3V.
סעיף ג — משך הזמן שבו נורית ה-LED דולקת
ה-LED דולק כל עוד VB > VA = 3V. נמצא את הזמן שבו VB יורד ל-3V:
משך ההדלקה ≈ 6.93 s
סעיף ד — פתיחת המפסק ל-10 שניות וסגירתו מחדש
כאשר פותחים את המפסק, הדק הקבל השמאלי מתנתק לחלוטין (ה-6V והמחלק R₁–R₂ נשארים בצד השני של המפסק). אין כל נתיב שדרכו הקבל יכול להיפרק — לכן הקבל שומר על מטענו (6V) לאורך כל 10 השניות, ופרק הזמן אינו משנה. עם הסגירה מחדש אין מדרגת מתח על הקבל (הוא כבר טעון ל-6V), ולכן אין מעבר חולף — VB נשאר 0V.
ה-LED לא יידלק לאחר הסגירה השנייה — הקבל לא נפרק (אין נתיב פריקה), ולכן אין קפיצת מתח ב-B
💻 פרק שלישי — תכנות בשפת C# (שאלות 6–8)
שאלה 6 (C#) — המחלקה Car
המחלקה: מכונית עם kind, color, year, price ומתודות print() ו-getprice()
סעיף א — הפלט של קטע הקוד
נוצרים שני עצמים ומופעלת car1.print(). המתודה מדפיסה שלוש שורות (שימו לב לרווח המוביל בשורה הראשונה):
Car car1 = new Car("Mazda", "Red", 2017, 120000);
Car car2 = new Car("Ferrari", "Green", 2015, 1300000);
car1.print();
The car is Mazda in color Red
The car was made in 2017
The price is 120000
סעיף ב — הוספת מכונית car3
מכונית מסוג Audi, בצבע שחור (black), שנת ייצור 2020 ומחיר 260,000 ש"ח:
Car car3 = new Car("Audi", "black", 2020, 260000);
סעיף ג — הדפסת פרטי המכונית היקרה ביותר
נשווה את המחירים בעזרת getprice() ונשמור את העצם היקר ביותר, ואז נדפיס את פרטיו:
Car max = car1;
if (car2.getprice() > max.getprice())
max = car2;
if (car3.getprice() > max.getprice())
max = car3;
max.print();
המחירים הם 120,000 / 1,300,000 / 260,000, ולכן המכונית היקרה ביותר היא car2 (Ferrari):
The car is Ferrari in color Green
The car was made in 2015
The price is 1300000
סעיף ד — האם ניתן לשנות את מחיר המכונית לאחר יצירת העצם?
לא ניתן לשנות את המחיר מחוץ למחלקה. התכונה price מוגדרת private, ובמחלקה קיימת רק מתודת קריאה (getprice) ואין מתודת עדכון (set). כדי לאפשר שינוי מחיר יש להוסיף למחלקה מתודה ציבורית ייעודית, למשל:
public void setprice(int newPrice)
{
this.price = newPrice;
}
שאלה 7 (C#) — ספירת סיביות דלוקות
הקוד: קולט מספר שלם בין 0 ל-255 ומבצע לולאה של 8 מעברים עם & ו->>
סעיף א — טבלת מעקב עבור הקלט 25 והפלט
בכל מעבר, num & 1 מחזיר את הסיבית הימנית (0 או 1) ומוסיף אותה ל-count, ואז num >> 1 מזיז את המספר סיבית אחת ימינה. עבור 25 (בבינארי 11001):
| i | num (לפני) | num & 1 | count | num >> 1 |
| 0 | 25 | 1 | 1 | 12 |
| 1 | 12 | 0 | 1 | 6 |
| 2 | 6 | 0 | 1 | 3 |
| 3 | 3 | 1 | 2 | 1 |
| 4 | 1 | 1 | 3 | 0 |
| 5 | 0 | 0 | 3 | 0 |
| 6 | 0 | 0 | 3 | 0 |
| 7 | 0 | 0 | 3 | 0 |
result = 3
סעיף ב — מה מבצע קטע התוכנית
התוכנית סופרת כמה סיביות דלוקות (ספרות 1) יש בייצוג הבינארי של המספר הנקלט. הלולאה עוברת על כל שמונה הסיביות של מספר בתחום 0–255, בודקת בכל פעם את הסיבית הימנית ביותר ומזיזה ימינה, ולבסוף מדפיסה את מספר הסיביות הדלוקות.
סעיף ג — הרחבה לטווח 0 עד 1023
מספר עד 1023 דורש 10 סיביות (במקום 8). לכן יש לשנות רק את שורה 4 — מספר המעברים בלולאה — מ-8 ל-10:
for (int i = 0; i < 10; i++) // שורה 4: 8 → 10
שאלה 8 (C#) — טמפרטורות קיצון בחודש
המשימה: קליטת מדידות (יום + טמפרטורה ממוצעת) עד קליטת מספר יום לא חוקי, ומציאת היום החם ביותר וממוצע הטמפרטורות
פתרון מלא
קולטים בכל סבב את מספר היום (משמש כתנאי עצירה — כל מספר מחוץ לתחום 1–31 מפסיק את הקליטה) ואז את הטמפרטורה. שומרים את היום בעל הטמפרטורה הגבוהה ביותר, וצוברים סכום ומונה לחישוב הממוצע:
double temp, sum = 0, maxTemp = 0, avg;
int day, count = 0, maxDay = 0;
Console.WriteLine("Enter day (1-31):");
day = int.Parse(Console.ReadLine());
while (day >= 1 && day <= 31)
{
Console.WriteLine("Enter temperature:");
temp = double.Parse(Console.ReadLine());
sum = sum + temp;
count++;
if (count == 1 || temp > maxTemp) // היום החם ביותר עד כה
{
maxTemp = temp;
maxDay = day;
}
Console.WriteLine("Enter day (1-31):");
day = int.Parse(Console.ReadLine());
}
if (count > 0)
{
avg = sum / count;
Console.WriteLine("Hottest day: " + maxDay);
Console.WriteLine("Average temperature: " + avg);
}
else
{
Console.WriteLine("No data entered.");
}
💡קולטים תחילה את מספר היום ומשתמשים בו כתנאי הלולאה — כך קליטת הנתונים נעצרת מיד עם מספר יום לא חוקי, ולא נצברת טמפרטורה מיותרת. התנאי count == 1 מבטיח שהמדידה הראשונה תיקבע כמקסימום התחלתי, בלי תלות בערך התחלתי שרירותי.