Professional Documents
Culture Documents
תזכורת יא
תזכורת יא
מבנה תוכנית
*/
הערה המציינת את מטרת התוכנית
את קלט התוכנית ופלט התוכנית
*/
הכרזה על שימוש במרחב השמות של מחלקות כלליות בשפת התכנות using System; //
שם המחלקה של התוכנית class ProgramName //
{
הפעולה הראשית של התוכניתpublic static void Main(string[ ] args) //
{
הוראות גוף התוכנית
}
}
טיפוסי משתנים
הערה :בכל הוראת קלט ניתן לקלוט ערך למשתנה אחד בלבד.
פלט -
לאחר הפלט לא תתבצע ירידת שורה); //ביטוי ו/או מחרוזת תווים בין זוג גרשיים(Console.Write
לאחר הפלט תתבצע ירידת שורה); //ביטוי ו/או מחרוזת תווים בין זוג גרשיים(Console.WriteLine
ביטוי יכול להיות מספר קבוע ,משתנה או ביטוי חשבוני המורכב ממספרים ו/או משתנים וארבע
פעולות חשבון אפשריות :חיבור , +חיסור , -כפל * ,חילוק /
.ביטוי יופיע ללא זוג גרשיים בניגוד למחרוזת תווים שתתוחם בין זוג גרשיים
1
:דוגמאות להוראות פלט
סימני הפלוס +והסוגריים המסולסלים וממוספרים { }0{ , }1בשתי דוגמאות הפלט האחרונות
נועדו לשלב (לשרשר) ערכי משתנים ותוצאות של ביטויים מחושבים בהודעות הפלט המודפסות.
לפני הוראת קלט תופיע הוראת פלט המבקשת מהמשתמש להכניס ערך קלט למשתנה ,לדוגמה:
)";Console.WriteLine("Enter number
)) (;a = int.Parse(Console.ReadLine
הוראת השמה
;ביטוי = משתנה
כיוון ההשמה הוא מימין לשמאל :ערך הביטוי בצד ימין של סימן ההשמה = מוצב במשתנה
.שבצד שמאל של סימן ההשמה
גם כאן בהוראת השמה ,ביטוי יכול להיות מספר קבוע ,משתנה או ביטוי חשבוני המורכב
ממספרים ו/או משתנים וארבע פעולות חשבון אפשריות :חיבור , +חיסור , -כפל * ,חילוק /
הערה :יש להבחין בין השמה לבין השוואה מתמטית ,לדוגמה ההוראה n = n + 1מבטאת
השמה ולא השוואה ,כמו -כן משתנה יכול להופיע משני צידי סימן ההשמה = ,ואז ערכו החדש
של המשתנה תלוי בערכו הקודם .במקרה זה ערכו של המשתנה nעולה ב.1-
;int num = 1 ניתן להציב ערך התחלתי במשתנה בעת הצהרתו ,לדוגמה:
קיצורים -סימני פעולה לקיצור הכתיבה של פעולות הגדלת /הקטנת ערך משתנה:
הגדלת ערך משתנה ב1- ++
הקטנת ערך משתנה ב1- --
הגדלת ערך של משתנה =+
הקטנת ערך של משתנה =-
הכפלת ערך של משתנה =*
חלוקת ערך של משתנה =/
2
חלוקת ערכו של המשתנה בsum /= 5; // 5-
x/y
תוצאת מנת החלוקה של מספר שלם xבמספר שלם yהיא מספר הפעמים השלמות בהן הערך y
נכנס בערך .x
כאשר המחולק והמחלק הם מספרים שלמים ,תוצאת המנה תהווה מספר שלם ,לדוגמה:
כאשר המחולק או המחלק (או שניהם) אינם מספר שלם ,תבוצע חלוקה מתמטית רגילה ,ותוצאת
:המנה תהווה מספר ממשי ,לדוגמה
כאשר המחולק והמחלק הם מספרים שלמים ,ובכל זאת נדרש לבצע עליהם פעולת חלוקה
ממשית ,אז יש להמיר את אחד מגורמי החלוקה ,המחולק או המחלק ,לטיפוס ,doubleכדי
לקבל תוצאת חלוקה ממשית רגילה כמקובל במתמטיקה [נושא המרת טיפוסים -בעמוד הבא]:
(double) x / y
x%y
תוצאת שארית החלוקה של מספר שלם xבמספר שלם yהיא הערך הנותר לאחר שמפחיתים מ-
xאת כל הכפולות השלמות האפשריות של .y
הפעולה משמשת לחישוב תוצאת השארית השלמה בחלוקת 2מספרים שלמים ,לדוגמה:
3
הספרה השמאלית ,ספרת המאות (123 / 10) / 10 = 1 //
4
כללים לפירוק מספר לספרותיו והמחשתם בדוגמה
הספרה הימנית של המספר מתקבלת ע"י הפעלת פעולת שארית חלוקה ב 10-על המספר.
יתרת המספר ,ללא הספרה הימנית של המספר ,מתקבלת ע"י הפעלת פעולת מנת חלוקה ב-
10על המספר.
( )2בדיקות חלוקה של 2מספרים ללא ועם שארית [נושא הוראת התנאי - ifבהמשך המסמך]
כך נבדוק האם ערכי 2משתנים מתחלקים זה בזה ללא שארית:
בדיקה אם שארית החלוקה בין ערכי 2המשתנים היא if (num1 % num2 = = 0) // 0
כך נבדוק האם ערך משתנה הוא זוגי ,כלומר מתחלק ב 2-ללא שארית:
(num )double לדוגמה ,כך נציין המרת טיפוס ערך המשתנה numלטיפוס ממשי:
לדוגמה ,אם bמכיל 2.34אז הערך השלם ( 2.34)intהוא ,2גם הערך השלם ( 2.94)intהוא ,2אף
על פי ש 2.94-יותר קרוב ל ,3-כלומר פעולת הערך השלם אינה פעולת עיגול מתמטי רגיל.
;int x, y
חישוב חלוקה מתמטית ממשית בין מספרים שלמים double z = (double) x / y; //
חישוב ממוצע מתמטי בין מספרים שלמים double avg = (double)(x + y) / 2; //
הערה :ניתן להציב משתנה מטיפוס שלם intבמשתנה מטיפוס ממשי doubleללא ביצוע המרה
מפורשת ,שכן משתנה מטיפוס ממשי יכול להכיל גם מספר שלם ,לדוגמה:
5
int num1;
double num2 = num1;
6
פונקציות (פעולות) מתמטיות
מבנה הוראת זימון של פונקציה מתמטית:
דוגמאות לזימון וערכים מוחזרים טיפוס ערך התוצאה טיפוס הפרמטר /ים תיאור פעולת הפונקציה הפונקציה
שלם או ממשי בהתאם
Math.Abs(63) ->63 מחזירה את הערך המוחלט
לטיפוס ערך הפרמטר שלם או ממשי )Abs(x
Math.Abs(-12.7) -> 12.7 של ; xבסימון מתמטי| x | :
המתקבל
Math.Sqrt(16) -> 4.0 מחזירה את השורש הריבועי
ממשי שלם או ממשי )Sqrt(x
Math.Sqrt(6.25) ->2.5 של ; xבסימון מתמטי:
Math.Pow(2, 3) -> 8.0 מחזירה את ערך תוצאת
Math.Pow(-4, 2) -> 16.0 החישוב של xבחזקת y
ממשי שלמים או ממשיים )Pow(x, y
Math.Pow(2.5, 2) -> 6.25
בסימון מתמטי:
Math.Pow(2, 2.5) -> 5.66
Math.Round(15.2) -> 15.0 מוחזר מספר שלם מעגלת את ; xמחזירה את
Math.Round(0.78) -> 1.0 בייצוג ממשי ,לכן השלם הקרוב ביותר לx-
Math.Round(-8.9) -> -9.0 בהשמת התוצאה ממשי אם חלק השבר גדול מ0.5- )Round(x
Math.Round(-8.2) -> -8.0 למשתנה מטיפוס שלם השלם הבא יתקבל כתוצאה
נדרשת המרה לint-
Math.Floor(15.2) -> 15.0 מוחזר מספר שלם
Math.Floor(0.78) -> 0.0 בייצוג ממשי ,לכן
מחזירה את השלם הגדול
Math.Floor(-8.9) -> -9.0 בהשמת התוצאה ממשי )Floor(x
ביותר שקטן מx-
Math.Floor(-8.2) -> -9.0 למשתנה מטיפוס שלם
נדרשת המרה לint-
מחזירה את המספר
Math.Min(1, 3) -> 1 שלם או ממשי
שלמים או ממשיים המינימלי מבין שני )Min(a, b
Math.Min(3.5, 2.8) -> 2.8 בהתאם לטיפוסי הקלט
הפרמטרים
מחזירה את המספר
Math.Max(1, 3) -> 3 שלם או ממשי
שלמים או ממשיים ) Max(a, bהמקסימלי מבין שני
Math.Max(3.5, 2.8) -> 3.5 בהתאם לטיפוסי הקלט
הפרמטרים
הערה :פעולות העיגול Round , Floorמחזירות כתוצאה מספר שלם אך בייצוג ממשי ,double
לכן בהשמת התוצאה המתקבלת למשתנה מטיפוס שלם נדרשת המרה ל ,int-לדוגמה:
7
דרכים לזימון פונקציות מתמטיות
השמת ערך מוחלט של תוכן משתנה במשתנה תוצאה absolute = Math.Abs(num); //
חישוב ממוצע בין 2ערכים מוחלטים avg = (Math.Abs(num1) + Math.Abs(num2)) / 2.0; //
מצויינות רק הוראות לביצוע במקרה שתנאי הבדיקה מתקיים ,לא מצויינות הוראות לביצוע
במקרה שתנאי הבדיקה לא מתקיים:
8
מבנה ב' if :עם else
מצויינות הוראות לביצוע הן במקרה שתנאי הבדיקה מתקיים והן במקרה שתנאי הבדיקה לא
מתקיים:
הערה :אם סדרת ההוראות לביצוע לאחר חלקי ה if-או ה else-כוללת רק הוראה אחת לביצוע,
אז ניתן להשמיט את בלוק הסוגריים המסולסלים {} התוחם את ההוראה .כאשר סדרת
ההוראות לביצוע כוללת יותר מהוראה אחת ,חובה לתחום אותן בסוגריים מסולסלים.
דוגמה:
האם ערך המשתנה גדול מ 5-וגם קטן מif (num1 > 5 && num1 < 15) // 15-
עבור שני ביטויי תנאי בוליאניים המשולבים בהוראת תנאי מורכב בקשר לוגי של וגם ,אלה
תוצאות הביטוי הבוליאני של התנאי המורכב ב 4-צירופים אפשריים לערכים הבוליאניים של
שני ביטויי התנאי הפשוטים יותר -ביטוי בוליאני , 1ביטוי בוליאני :2
ביטוי בוליאני 1 ביטוי בוליאני 2 (ביטוי בוליאני && 2ביטוי בוליאני )1
true true true
true false false
false true false
false false false
וגם && :התנאי המורכב מתקיים רק אם שני התנאים הפשוטים יותר מתקיימים שניהם
9
10
דוגמה נוספת:
כאשר נדרש לנסח בדיקה מתמטית של יחסי גודל בין 3גורמים,num1 < num2 < num3 :
נגדיר 2ביטויים בוליאנים פשוטים לבדיקת יחסי הגודל בין הגורמים הראשון והשני ובין
הגורמים השני והשלישי ,ונשלב ביניהם ע"י הקשר הלוגי וגם && ליצירת ביטוי תנאי בוליאני
מורכב:
דוגמה:
האם ערך המשתנה קטן מ 0-או גדול או שווה if (num1 < 0 | | num1 >= 10) // 10
עבור שני ביטויי תנאי בוליאניים המשולבים בהוראת תנאי מורכב בקשר לוגי של או ,אלה
תוצאות הביטוי הבוליאני של התנאי המורכב ב 4-צירופים אפשריים לערכים הבוליאניים של
שני ביטויי התנאי הפשוטים יותר -ביטוי בוליאני , 1ביטוי בוליאני :2
ביטוי בוליאני 1 ביטוי בוליאני 2 (ביטוי בוליאני | | 2ביטוי בוליאני )1
true true true
true false true
false true true
false false false
או | | :התנאי המורכב מתקיים אם לפחות אחד משני התנאים הפשוטים יותר מתקיים
דוגמה:
האם ערך המשתנה לא שווה ל ,0-כלומר האם שונה מif (!(num1 = = 0)) // 0-
עבור ביטוי תנאי בוליאני אחד המשולב בהוראת תנאי מורכב בקשר לוגי של לא ,אלה
תוצאות הביטוי הבוליאני של התנאי המורכב בהתאם ל 2-ערכים אפשריים לביטוי התנאי
הבוליאני :1
11
המחשה לקשרים הלוגיים או ,וגם בתנאי מורכב -מחסומים במערכת כבישים
המחשת וגם :ניתן להגיע מנקודה א' לנקודה ב' רק אם מחסום 1מורם וגם מחסום 2מורם .אם
לפחות אחד משני המחסומים 2 , 1לא מורם ,לא ניתן להגיע מנקודה א' לנקודה ב'.
המחשת או :ניתן להגיע מנקודה ב' לנקודה ג' אם מחסום 3מורם או מחסום 4מורם .כמובן,
שאם שני המחסומים 4 , 3מורמים ,בוודאי שגם ניתן להגיע מנקודה ב' לנקודה ג' .מספיק
שלפחות אחד משני המחסומים 4 , 3יהיה מורם ,כדי שיהיה ניתן להגיע מנקודה ב' לנקודה ג'.
רק אם שני המחסומים 4 , 3לא מורמים ,לא ניתן להגיע מנקודה ב' לנקודה ג'.
שילוב משתנה בוליאני בתנאי לבדיקה
ניתן לשלב משתנה מטיפוס בוליאני boolבתנאי לבדיקה ללא שימוש בסימני השוואה ,לדוגמה:
מאתחלים משתנה בוליאני בערך אמת trueאו שקר falseבהתאם למטרת השימוש במשתנה:
;bool b = true
או
;bool b = false
ניתן להציב משתנה בוליאני גם בביטוי התנאי של לולאת [ .whileנושא לולאת - whileבהמשך
המסמך].
12
קינון של הוראות תנאי (הוראות תנאי מקוננות)
ניתן לכלול הוראת תנאי כאחת מהוראות בלוק ה if-או בלוק ה else-של הוראת תנאי אחרת.
( )1הוראת תנאי ifללא בלוק elseמופיעה תחת בלוק elseשל הוראת תנאי אחרת:
( )2הוראת תנאי if elseמופיעה תחת בלוק ifשל הוראת תנאי אחרת ,שלא כוללת בלוק :else
( )3הוראת תנאי if elseמופיעה תחת בלוק ifשל הוראת תנאי אחרת ,שכן כוללת בלוק :else
הערה :כלל השיוך של elseל if-מתאים else :תמיד משוייך ל if-שנמצא לפניו וקרוב אליו ביותר
בתנאי של if-זה לא משוייך elseאחר קרוב יותר ,וש if-זה אינו כלול בתוך בלוק סוגריים
מסולסלים אחר שמסתיים עוד לפני ה.else-
13
לולאות /הוראות ביצוע חוזר
) משתנה בקרה אתחול; ביטוי תנאי בוליאני לקביעת המשך ביצוע הלולאה ;עדכון משתנה הבקרה( for
{
גוף הלולאה המכיל הוראות לביצוע כל עוד ביטוי התנאי הבוליאני מתקיים והוא אמת
}
דוגמה:
לולאה המתבצעת 5פעמים ומדפיסה את המספרים הזוגיים בין for (int i = 1; i <= 5; i++) // 1-10
כולל
;)Console.WriteLine (i * 2
כל עוד ביטוי התנאי הבוליאני מתקיים ,הוראות גוף הלולאה מתבצעות.
כאשר ביטוי התנאי הבוליאני כבר לא מתקיים ,ביצוע הלולאה מסתיים.
אם גוף הלולאה כולל רק הוראה אחת לביצוע ,אז ניתן להשמיט את בלוק הסוגריים
המסולסלים {} התוחם את ההוראה .כאשר גוף הלולאה כולל יותר מהוראה אחת,
חובה לתחום אותן בסוגריים מסולסלים.
יש לאתחל לפני הלולאה את המשתנים הנמצאים בביטוי התנאי הבוליאני המוצב
בכניסה ללולאה על מנת שבדיקת תנאי הלולאה בפעם הראשונה תיעשה על ערכים
רלוונטיים.
14
יש לעדכן במהלך גוף הלולאה את המשתנים הנמצאים בביטוי התנאי הבוליאני המוצב
בכניסה ללולאה על מנת להבטיח ביצוע תקין וסופי (מסתיים) של הלולאה.
15
דוגמה:
הדפסת תוצאות כל מכפלות הצירופים האפשריים בין המספרים 4-5לבין המספרים // 1-3
)for (int i = 4 ; i < 6 ; i++
)for (int j = 1 ; j <= 3 ; j++
;)Console.WriteLine(i * j
16
הוראת בחירה switch case
הוראת הבחירה switch caseשימושית כאשר נדרש לנתב את מהלך הביצוע של התוכנית
בהתאם לבחירה באחת מכמה אפשרויות של ערכים בדידים שונים.
)ביטוי( switch
{
; ; breakערך :קבוצת הוראות לביצוע case
; ; breakערך :קבוצת הוראות לביצוע case
.
.
.
; ; breakקבוצת הוראות לביצוע default:
}
בביצוע ההוראה מחושב תחילה ערכו של הביטוי ,ולאחר מכן הוא מושווה לערכים
המצויינים בחלופות ה case-השונות .מהשלב שבו מתקיים שיוויון בין ערך הביטוי המחושב
לבין ערך של caseמסויים ,מתבצעות כל ההוראות הנמצאות החל מקבוצת ההוראות
הצמודה לערך caseזה ועד להוראת ה break-הראשונה שאליה מגיעים ברצף ההוראות.
הוראת ה break-גורמת לסיום הביצוע של הוראת ה.switch-
ערך הביטוי המחושב וערכי ה case-יכולים להיות מטיפוס שלם ,intטיפוס תווי ,charטיפוס
בוליאני boolאו טיפוס מחרוזתי (רצף תווים) .string
קבוצת ההוראות הצמודה לחלופת ה default-מתבצעת אם ערך הביטוי המחושב אינו שווה
לאף אחד מערכי ה case-המצויינים .אין חובה לכלול את חלופת ברירת המחדל .default
במקרה שערך הביטוי המחושב אינו שווה לאף אחד מערכי ה ,case-ואין חלופת ברירת מחדל
,defaultאז לא מבוצעת אף הוראה של ה.switch-
17
:דוגמה
... if else if else כך שבמקום להשתמש בהוראות תנאי מקוננות,נייעל את כתיבת הקטע הבא
:switch case נשתמש בהוראה
// day : 7- ל1 מספר בין, משתנה מטיפוס שלם המייצג את אחד מימות השבוע
if (day == 1)
Console.WriteLine("Sunday");
else
if (day == 2)
Console.WriteLine("Monday");
else
if (day == 3)
Console.WriteLine("Tuesday");
else
if (day == 4)
Console.WriteLine("Wednesday");
else
if (day == 5)
Console.WriteLine("Thursday");
else
if (day == 6)
Console.WriteLine("Friday");
else
if (day == 7)
Console.WriteLine("Saturday");
else
Console.WriteLine("Not Valid Day Number");
18