תקציר פקודות השפה

‫יסודות מדעי המחשב‬
‫‪C#‬‬
‫‪1‬‬
‫תקציר הוראות השפה ב‪C# -‬‬
‫טיפוסי משתנים בסיסיים (פרימיטיבים) בשפת ‪:C#‬‬
‫מספרי שלם‬
‫‪int‬‬
‫)בתחום ‪(±2,147,483,648‬‬
‫מספרי שלם ארוך‬
‫‪long‬‬
‫מספר ממשי‬
‫‪double‬‬
‫תו‬
‫‪char‬‬
‫מחרוזת‬
‫‪string‬‬
‫קבועים (של המחלקה‪:)static ,‬‬
‫; ערך‪-‬הקבוע = שם‪-‬הקבוע טיפוס‪-‬נתונים ‪static const‬‬
‫דוגמא‪:‬‬
‫;‪static const int N = 10‬‬
‫;‪static const double X = 2.34‬‬
‫נהוג לרשום שמות קבועים באות‬
‫גדולה‬
‫קבועים בשפה‪:‬‬
‫הערך השלם הגדול ביותר ‪//‬‬
‫הערך השלם הקטן ביותר ‪//‬‬
‫‪int.MaxValue‬‬
‫‪int.MinValue‬‬
‫הגדרת משתנים‪:‬‬
‫;‪int a, b‬‬
‫;‪double x, y‬‬
‫מבנה התכנית בשפת ‪:Java‬‬
‫שם‪-‬המחלקה ‪public class‬‬
‫{‬
‫)‪public static void Main(string[] args‬‬
‫{‬
‫;הגדרת המשתנים‬
‫שים לב להזחות ‪identification‬‬
‫(קפיצת ‪ tab‬של תחילת השורה)‬
‫;הוראה‬
‫;הוראה‬
‫}‬
‫}‬
‫הערות‬
‫הערת שורה ‪//‬‬
‫הערת קטע‬
‫הנמשכת על פני‬
‫כמה שורות‬
‫*‪/‬‬
‫‪ */‬הערה *‪/‬‬
‫‪*/‬‬
‫‪‬‬
‫ב‪ C# -‬יש חשיבות לגודל אות )‪(case sensitive‬‬
‫‪blog.csit.org.il‬‬
‫הילה קדמן‬
‫יסודות מדעי המחשב‬
‫‪C#‬‬
‫‪2‬‬
‫קלט‪/‬פלט‪:‬‬
‫;)"מחרוזת בשפה האנגלית"( ‪Console.Write‬‬
‫;)"מחרוזת"( ‪Console.WriteLine‬‬
‫פלט מחרוזת‬
‫מחרוזות יוצגו בשפה האנגלית‬
‫;)שם‪-‬משתנה( ‪Console.Write‬‬
‫;)שם‪-‬משתנה ‪ + " " +‬שם‪-‬משתנה( ‪Console.Write‬‬
‫הדפסת תוכן משתנה‬
‫;)שם‪-‬משתנה( ‪Console.WriteLine‬‬
‫;)שם‪-‬משתנה ‪ + " " +‬שם‪-‬משתנה( ‪Console.WriteLine‬‬
‫;)" מחרוזת " ‪ +‬שם‪-‬משתנה( ‪Console.Write‬‬
‫;)" מחרוזת " ‪+‬שם‪-‬משתנה‪ " +‬מחרוזת"( ‪Console.Write‬‬
‫הדפסת משתנים ומחרוזות‬
‫;)" מחרוזת " ‪ +‬שם‪-‬משתנה( ‪Console.WriteLine‬‬
‫;)"מחרוזת"‪+‬שם‪-‬משתנה‪ "+‬מחרוזת"( ‪Console.WriteLine‬‬
‫קלט מספר שלם‬
‫;))(‪int a = int.Parse(Console.ReadLine‬‬
‫קלט מספר ממשי‬
‫קלט מספר תו‬
‫או‪:‬‬
‫;))(‪double x = double.Parse(Console.ReadLine‬‬
‫;)(‪char tav = (char)Console.Read‬‬
‫;))(‪char ch = Convert.ToChar(Console.Read‬‬
‫קלט מחרוזת‬
‫דגשים‬
‫;)( ‪String str = Console.ReadLine‬‬
‫‪‬‬
‫בכל הוראת קלט ניתן לקלוט בדיוק משתנה אחד‪.‬‬
‫‪‬‬
‫לפני כל הוראת קלט יש להציג בקשה‪:‬‬
‫;)" ‪Console.Write ("type a number ‬‬
‫;))(‪int a = int.Parse(Console.ReadLine‬‬
‫הוראות השמה‪:‬‬
‫מספר‬
‫אתחול בהגדרה‬
‫הצבת קבוע‬
‫מחרוזת‬
‫תו‬
‫;‪int a = 0‬‬
‫מחרוזת ריקה ‪string str = "" ; //‬‬
‫תו רווח ‪char ch = ' '; //‬‬
‫;‪a = 5‬‬
‫;"‪str = "hello‬‬
‫; '‪ch = 'b‬‬
‫פעולות חישוביות‪:‬‬
‫נתונים המשתנים הבאים‪:‬‬
‫;‪int a, b, c‬‬
‫;‪double x, y, z‬‬
‫חיבור‬
‫;‪c = a + b‬‬
‫חיסור‬
‫;‪c = a – b‬‬
‫כפל‬
‫;‪c = a * b‬‬
‫‪blog.csit.org.il‬‬
‫הילה קדמן‬
‫יסודות מדעי המחשב‬
‫‪C#‬‬
‫‪3‬‬
‫שלם ‪ /‬שלם ‪ ‬שלם‬
‫חילוק‪:‬‬
‫ממשי ‪ /‬ממשי ‪ ‬ממשי‬
‫שלם ‪ /‬ממשי ‪ ‬ממשי‬
‫שלם ‪ /‬שלם)‪  (double‬ממשי‬
‫חילוק בממשיים‬
‫לפחות אחד המשתנים המשתתפים ‪//‬‬
‫‪ ‬המרה מפורשת‬
‫בפעולה החישוב חייב להיות ממשי ‪//‬‬
‫;‪z = x / y‬‬
‫;‪z = (double)a / b‬‬
‫חילוק בשלמים (מנה)‬
‫;‪c = a / b‬‬
‫שארית‬
‫‪‬‬
‫;‪c = a % b‬‬
‫המרה ‪ -‬ניתן להמיר משלם לממשי ולהיפך בהמרה מפורשת )‪.(casting‬‬
‫קיצורים‪:‬‬
‫הגדלה עצמית‬
‫; ‪a ++‬‬
‫הקטנה עצמית‬
‫; ‪a --‬‬
‫הוראות השפה‪:‬‬
‫סוגי יחס‬
‫(קרא משמאל לימין)‬
‫שווה ==‬
‫שונה =!‬
‫גדול מ‪< -‬‬
‫גדול או‬
‫שווה =<‬
‫קטן מ‪> -‬‬
‫קטן או‬
‫שווה =<‬
‫בלוק הוראות‪:‬‬
‫{‬
‫בלוק הוראות‬
‫}‬
‫אם ‪...‬‬
‫(הוראה יחידה)‬
‫אם ‪...‬‬
‫(בלוק הוראות)‬
‫‪blog.csit.org.il‬‬
‫)פסוק‪-‬לוגי( ‪if‬‬
‫;ביצוע‬
‫)‪if (a > 5‬‬
‫;‪b = b + 1‬‬
‫)פסוק‪-‬לוגי) ‪if‬‬
‫{‬
‫;הוראה‬
‫;הוראה‬
‫}‬
‫)‪if (a == 3‬‬
‫{‬
‫;‪c = b * 2‬‬
‫;)‪Console.WriteLine ("result : " + c‬‬
‫}‬
‫הילה קדמן‬
C#
4
‫יסודות מדעי המחשב‬
if (a != 5)
b = b + 1;
else
b = b – 1;
if (‫לוגי‬-‫)פסוק‬
1‫;ביצוע‬
else
2‫;ביצוע‬
... ‫ אחרת‬...‫אם‬
if (a > 3)
{
Console.Write ("a number  ");
b = int.Parse(Console.ReadLine());
}
else
{
b = a;
c = c + 1;
}
if (‫לוגי‬-‫)פסוק‬
{
1‫;הוראה‬
2‫;הוראה‬
}
else
{
3‫;הוראה‬
4‫;הוראה‬
}
... ‫ אחרת‬...‫אם‬
)‫(הוראה יחידה‬
)‫(בלוק הוראות‬
switch
(a)
{
case 1: Console.WriteLine("one");
break;
case 2: Console.WriteLine("two");
break;
case 3:
case 4:
case 5: Console.WriteLine("five");
break;
case 6: Console.WriteLine("six");
break;
default:
Console.WriteLine("out of range");
break;
}
switch (‫)משתנה‬
{
case 1-‫ ערך‬: 1-‫;ביצוע‬
break;
case 2-‫ ערך‬: 2-‫;ביצוע‬
break;
case 3-‫ ערך‬: ‫;הוראה‬
‫;הוראה‬
break;
case 4-‫ ערך‬: 4-‫;ביצוע‬
break;
default : 5-‫;ביצוע‬
five ‫ יהיה זהה‬5 -‫ ו‬,4 ,3 ‫הפלט עבור‬
break;
}
‫ברירת החלטה‬
‫ המשתנה הנבדק‬
‫הוא מטיפוס‬
:‫סדור‬
‫מספר שלם או תו‬
‫ההוראות‬
-‫מתבצעות עד ה‬
break
‫ניתן לבחון רק‬
‫ערכים בדידים‬
‫קשרים לוגיים‬
&&
‫וגם‬
||
‫או‬
!
‫לא‬
if ( a > 3 && (b = = 5 || c != 0) ) …
‫הילה קדמן‬
blog.csit.org.il
C#
5
‫יסודות מדעי המחשב‬
:‫משתנה בוליאני‬
:‫השמה למשתנה בוליאני‬
bool b = (num1 > num2);
:‫ביטויים שקולים‬
bool b;
if (num1 > num2)
b = true ;
else
b = false ;
bool found = … ; // true ‫ או‬false ;
if (found) …
if (found == true) …
‫ביטויים שקולים‬
if ( ! found ) …
if (found == false) …
‫ביטויים שקולים‬
:‫לולאות‬
for (‫תחילי = אינדקס‬-‫סיום =< אינדקס ; ערך‬-‫אינדקס ; ערך‬-‫)קידום‬
{
‫;הוראה‬
‫;הוראה‬
}
--------------int a, sum = 0;
for ( i = 1 ; i <= 5 ; i++)
{
Console.Write ("a number  ");
a = int.Parse(Console.ReadLine());
sum = sum + a;
}
for (‫תחילי = אינדקס‬-‫סיום =< אינדקס ; ערך‬-‫אינדקס ; ערך‬-‫)הקטנת‬
{
‫;הוראה‬
‫;הוראה‬
}
--------------double x, sum = 0;
for ( i = 5 ; i >= 1 ; i --)
{
Console.Write ("a real number  ");
x = int.Parse(Console.ReadLine());
sum = sum + x;
}
Console.WriteLine ("sum is: " + sum);
‫הילה קדמן‬
for ‫לולאת‬
)‫(לולאה עולה‬
for ‫לולאת‬
)‫(לולאה יורדת‬
blog.csit.org.il
‫יסודות מדעי המחשב‬
‫‪C#‬‬
‫‪6‬‬
‫)ביטוי‪-‬לוגי( ‪while‬‬
‫{‬
‫;הוראה‬
‫;הוראה‬
‫}‬
‫‪--------------‬‬‫;‪int sum = 0‬‬
‫;)" ‪ ‬מספר ראשון"( ‪Console.Write‬‬
‫;))(‪int a = int.Parse(Console.ReadLine‬‬
‫)‪while (a != 999‬‬
‫{‬
‫;‪sum = sum + a‬‬
‫;)" ‪ ‬עוד מספר"( ‪Console.Write‬‬
‫;))(‪a = int.Parse(Console.ReadLine‬‬
‫}‬
‫;)"סכום המספרים‪Console.WriteLine (sum + " :‬‬
‫לולאת ‪while‬‬
‫במחברת הבחינה מותר לכתוב‬
‫מחרוזות בעברית‪,‬‬
‫אלא אם כן נאמר אחרת‬
‫פונקציות מתמטיות‪:‬‬
‫טיפוס הערך‬
‫ערך מוחלט‬
‫|‪|x‬‬
‫שורש ריבועי‬
‫‪x‬‬
‫חזקה‬
‫‪xy‬‬
‫עיגול לשלם הקרוב‬
‫)‪(4  3.67‬‬
‫מוחזר‬
‫מתקבל‬
‫שלם‬
‫שלם‬
‫ממשי‬
‫ממשי‬
‫ממשי‬
‫ממשי‬
‫שלם‬
‫דוגמא‬
‫תחביר‬
‫)‪Math.Abs(x‬‬
‫;)‪int b = Math.Abs(a‬‬
‫;)‪double y = Math.Abs(x‬‬
‫)‪Math.Sqrt (x‬‬
‫… )‪if (Math.Sqrt (x) > y‬‬
‫ממשי‬
‫שלם‬
‫)‪Math.Pow (x, y‬‬
‫;)‪double p = Math.Pow (x, b‬‬
‫ממשי‬
‫ממשי‬
‫‪Console.WriteLine‬‬
‫)‪(int) Math.Round (x‬‬
‫;) )‪( (int)Math.Round(7.853‬‬
‫החלק השלם‬
‫)‪(3  3.67‬‬
‫שלם‬
‫ממשי‬
‫‪(int) x‬‬
‫; … ) ‪if (x == (int)x‬‬
‫הערך הקטן מבין‬
‫השניים‬
‫שלם‬
‫שלם‬
‫)‪Math.Min(x, y‬‬
‫;)‪int small = Math.Min (12, a‬‬
‫ממשי‬
‫ממשי‬
‫שלם‬
‫שלם‬
‫ממשי‬
‫ממשי‬
‫הערך הגדול מבין‬
‫השניים‬
‫מספר אקראי שלם בין ‪x‬‬
‫ו‪)x <y( y -‬‬
‫שלם‬
‫ארוך‬
‫)‪Math.Max(x, y‬‬
‫;)‪int big = Math.Max (12, a‬‬
‫תחום המספרים ‪int range = y - x + 1; //‬‬
‫;‪int num = (int)(Math.Random() * range) + x‬‬
‫דוגמה‪ :‬מספר שלם אקראי בין ‪( 50 - 20‬כולל)‪:‬‬
‫התחום‪31  50 - 20 + 1 :‬‬
‫;‪int num = (int)(Math.Random() * 31) + 20‬‬
‫‪blog.csit.org.il‬‬
‫הילה קדמן‬
C#
7
‫יסודות מדעי המחשב‬
Random ‫ שימוש באובייקט‬- ‫מספר אקראי‬
Random rnd = new Random();
x = rnd.Next (n);
x = rnd.Next (from, to);
:‫יצירת עצם‬
:‫בתוך גוף בתכנית‬
n ‫ עד‬0 ‫מספר שלם בתחום‬
0x<n
)‫(לא כולל‬
)‫ (לא כולל‬to ‫ עד‬fron ‫מספר שלם בתחום‬
from  x < to
‫פעולות‬
static void ProcName (‫(פרמטרים‬
}
‫נהוג ששם פעולה מתחיל באות גדולה‬
‫פעולה שאינה מחזירה ערך‬
{
static void Aaa (int a, int b, double x)
{
int i;
)void ‫(מוחזר ערך‬
:
}
static ‫ מוחזר‬-‫ טיפוס‬FuncName (‫)פרמטרים‬
{
‫פעולה המחזירה ערך‬
:
return ‫;ערך להחזרה‬
}
static double Sum (int a, int b, double x)
{
double total ;
total = a + b + x;
return total;
}
‫הילה קדמן‬
blog.csit.org.il
‫יסודות מדעי המחשב‬
‫מערך חד‪-‬ממדי‬
‫‪C#‬‬
‫‪8‬‬
‫;]‪[10‬טיפוס‪-‬נתונים ‪ [] arr = new‬טיפוס‪-‬נתונים‬
‫הגדרה‬
‫; ]‪int [] a = new int [7‬‬
‫;]‪double [] x = new double [N‬‬
‫;]‪char [] arrChar = new char [25‬‬
‫פנייה לתא‬
‫; ]‪x[2] = 2 * a[0‬‬
‫‪6‬‬
‫‪5‬‬
‫‪4‬‬
‫‪3‬‬
‫‪2‬‬
‫‪1‬‬
‫‪0‬‬
‫‪a‬‬
‫סריקת מערך‬
‫)‪for (int i = 0 ; i < a.Length ; i ++‬‬
‫;‪a[i] = i‬‬
‫גודל המערך הוא ‪.Length‬שם‪-‬המערך‬
‫מספר התא האחרון במערך הוא ‪Length - 1‬‬
‫מערך דו‪-‬ממדי (מטריצה)‬
‫;]‪[5,7‬טיפוס‪-‬נתונים ‪ [,] arr = new‬טיפוס‪-‬נתונים‬
‫; ]‪int [,] mat = new int [6,7‬‬
‫;]‪double [,] x = new double [N,M‬‬
‫פניה לתא‬
‫סכום התא ה"ראשון" והתא ה"אחרון" במערך בגודל ‪ 6‬שורות ו‪ 7 -‬עמודות‪:‬‬
‫;]‪mat[3,4] = mat [0,0] + mat [5,6‬‬
‫סריקת המערך‬
‫מספר השורות במטריצה ‪‬‬
‫מספר העמודות במטריצה ‪‬‬
‫)‪mat.GetLength (0‬‬
‫)‪mat.GetLength (1‬‬
‫)‪for (int i = 0 ; i < mat.GetLength (0) ; i++‬‬
‫)‪for (int j = 0 ; j < mat.GetLength (1) ; j++‬‬
‫‪mat [i,j] = ….‬‬
‫‪blog.csit.org.il‬‬
‫הילה קדמן‬
C#
9
‫יסודות מדעי המחשב‬
‫מחרוזות‬
String str ;
str = "bla-bla-bla" ;
str = new string ("bla-bla-bla") ;
‫ היא אובייקט‬C# -‫מחרוזת ב‬
string str = Console.ReadLine();
‫קלט‬
‫פעולות שאינן משנות את המחרוזת‬
‫אורך המחרוזת‬
num = str.Length;
‫שרשור‬
str = st1 + str2 + "aaa" ;
str1 == str2
str1 != str2
// ? ‫מחרוזות שוות‬
// ? ‫מחרוזות שונות‬
‫השוואה‬
bool equal = str1.Equals(str2) ;
int n = str1.CompareTo (str2) ;
str1 > str2  n > 0
str1 < str2  n < 0
str1 = = str2  n = 0
ch = str [i] ;
0  i < str.length()
‫ במחרוזת‬i ‫תו‬
int place = str.IndexOf (ch) ;
// ‫חיפוש הראשון‬
‫חיפוש תו‬
int place = str.IndexOf (subStr);
// ‫חיפוש הראשון‬
‫מחרוזת‬-‫חיפוש תת‬
-1 ‫ אם לא נמצא יוחזר‬.‫ מחזיר תמיד את הראשון מתחילת המחרוזת‬indexOf :‫הערה‬
int place = str.IndexOf (ch, fromPlace);
// ‫חיפוש ממקום‬
:‫חיפוש המופע הבא‬
// ‫חיפוש מהסוף‬
:‫חיפוש מהסוף‬
int place = str.IndexOf (subStr, fromPlace);
int place = str.LastIndexOf (ch);
int place = str.LastIndexOf (subStr);
int place = str.LastIndexOf (ch, from); // ‫חיפוש מהסוף ממקום‬
int place = str.LastIndexOf (subStr, from);
‫הילה קדמן‬
blog.csit.org.il