9.7. Properties

ב-C# ניתן להגדיר משתנים ופונקציות כ-private או public. השימוש שהדגמנו בו הגדרנו משתנים כ-private, ולאחר מכן הגדרנו פונקציות get ו-set על מנת לגשת אליהן, הוא נפוץ ביותר, ולכן הוחלט להוסיף ל-C# מבנה דקדוקי מיוחד, המאפשר להאיץ תהליך זה.

מבנה זה הוא מנגנון ה-properties, שמאפשר לנו צורת עבודה המזכירה עבור משתמש הקצה עבודה מול שדות ישירות, כאשר בפועל יקראו פונקציות get ו-set עם כל קריאה של המשתמש.

נשפר שוב את המחלקה CRectangle, ונשתמש בתחביר החדש. נציג גם כיצד הפונקציה Main() משתנה.

using System;

public class CRectangle
{
      private int m_height, m_width;

      public int height
      {
            get
            {
                  return m_height;
            }
            set
            {
                  if (value > 0) m_height = value;
            }
      }



      public int width
      {
            get
            {
                  return m_width;
            }
            set
            {
                  if (value > 0) m_width = value;
            }
      }

      public CRectangle()
      {
            m_height = m_width = 10;
      }   
}

public class CClassExample2
{
      public static int Main(string[] args)
      {
            CRectangle rec1, rec2;
            rec1 = new CRectangle();
            Console.WriteLine("Rectangle size: {0} x {1}",
                  rec1.height, rec1.width);
            rec1.height = 10;
            rec1.width = 20;
            rec2 = rec1;
            Console.WriteLine("Rectangle size: {0} x {1}",
                  rec2.height, rec2.width);
            rec2.height = 15;
            Console.WriteLine("Rectangle size: {0} x {1}",
                  rec1.height, rec1.width);
            return 0;
      }
}



במחלקה CRectangle הגדרנו משתנה עם הרשאת private בשם m_height, וכן property בשם height. בהגדרת ה-property הגדרנו שני בלוקים, המשמשים כשתי פונקציות - get ו-set.

בפונקציה get החזרנו את המשתנה m_height, ובפונקציה set שיננו משתנה זה, אחרי שבדקנו את תקינות הקלט.

היתרון של השימוש ב-property הוא שכלפי מי שמשתמש באובייקט, ה-property מתנהג כמו משתנה, ועבור כותב המחלקה ה-property מתנהג כמו שתי פונקציה, כך שניתן לבצע בדיקות לפני שינוי הפרמטרים.

לאחר הקומפילציה של הקוד התכונות ממומשות כפי שממושו ב-C++, מתודת setPropertyName ומתודת GetPropertyName.

בנוסף חשוב לציין שמתכנתים רבים חוששים מהבדל מסויים בין C++ ו-C# והוא חוסר היכולת לקרוא למתודה בצורה inline (בצורה כזאת שבקוד יש קריאה לפוקנציה, אבל בפועל בקומפילציה המימוש מועתק לכל המופעים של הקריאה לצורך חסכון בתנועה במחסנית), ולכן חוששים מהשימוש במתודות ותכונות עבור שדות פשוטים, חשוב לציין עבור מתכנתים חסכניים אלו שבשפת C# כל תכונה שהביצוע שלה פשוט תהפוך לכזו לאחר תרגום קוד ה-IL לשפת מכונה (על ידי מנגנון JIT).



מאת: אני

מענין

אין
מאת: בתשבע

תודה רבה!! החומר מצוין!!

מאת: אביעד

C#

הקובץ להורדה פגום
לאחר שהורדתי לא ניתן לפתוח את הקובץ
מאת: ?

מה זה void?

מי שהוא פו יודע מה זה הפקודה void?
מאת: אני אוהב את אמא של עומרי 2

אמא שלו

הכוס של אמא שלך והם זונה ג
מאת: גבינהההההההההה

ההההה

מה אנשים עושים פהיש יוטיוב כסעמעעעעעעעעעעעמק
מאת: הכוס של האמא של עומרי

יש לי כוס חלקלק

יש לי כוס חלקלק ואני חרמנית אש בואו לפסגת זאב אני טובה מאוד שווה לבוא!!!
מאת: צביקה דותן

עזרה בשפה c#

שלום אני צריך בבקשה עזרה לבת שלי בשפת תכנות c#
צביקה נייד 0522548212
מאת: nadav

דוגמת הבוקסינג לא ברורה

משתנה ערך הוא INT לדוגמא. המשתנה P1 הוא משתנה ייחוס. כך שהדוגמא פשוט מבלבלת.
מאת: רכגע

using System;
public class CHelloWorld
{
public static int Main(string[] args)
{
Console.WriteLine("Hello, World!");
return 0;
}
}
מאת: סבא של נריה

c#

R.I.P אבא של נריה
מאת: אבא של נריה

c#

שלום לכולם,
אחרי מות אשתי ובני ניסיתי גם אני להיכנס לעולם הסי שארפ.
התחלתי עם console ובגלל שזה כל כך מטומטם ועלוב עברתי לאחרונה ל winforms ואם חשבתם שעכשיו חיי יהפכו טובים ופשוטים יותר חישבו שוב!!!
נתקלתי בעולם מגעיל ושפל, קורים שם דברים בלתי הגיוניים בעליל (קרדיט לאופק).
ניסיתי בסך הכל לפתוח את החלון וזה לא הגיוני לעשות את זה!!!
אי אפשר לשנות Labels כי אין דבר כזה label למרות ששמתי label!!!!
הכל לא הגיוני, ותראו את מה שקרה למתכנתי csgo:
הם ניסו בסך הכל להזיז תן ימינה , הם הגדירו label וניסו לשנות את מיקומו עם left וברגע שהם הוסיפו את הפקודה הזדונית thread.sleep בום!!!!!!! כל המחשב התכבה ופתאום, כשהם הדליקו אותו מחדש הם ניסו לעשות start לתוכנה ולהפתעתם גילו משחק יריות חדשני, עם רובים ופצצות ומפות שונות ורימונים זדוניים וסקאר!!!!
הרי למה נראה לכם שהמערכת ראנקים בלתי הגיונית??? כי סי שארפ יצר את זה ולא הם בכל!!! בקיצור, בלתי הגיוני סי שארפ!!!
דרך אגב, גם קוד האימות באתר זה נוצר בעזרת סי שארפ!!!! ולכן אם תחוו בעיות קוסמיות בעת שליחת ההודעה אל תחששו - זה סי שארפ!!! שיש!
מאת: אמא של נריה

C#

חרא של דבר זה c#.
חרא של דבר threading זה עלוב ברמות מדהימות!
אם אתם רק חושבים על להיות מתכנתים בעתיד תעשו את השלבים הבאים:
1. גשו למטבח.
2. פתחו את מגירת הסכום שלכם.
3. הוצאו סכין חד וארוך.
4. תקעו את הסכין חזק בראשכם (שימו לב! זהו השלב החשוב ביותר, בלעדיו זה לא יעבוד!)
5. תיהנו מכישורי התכנות שלכם.
מאת: נריה

c#

נודר חרא דבר זה c#

שום דבר שם לא עובד אני עושה Int וזה מוחק דברים מקובץ txt!
זה בלתי הגיוני מה שהולך פה!
מאת: משהו

סי שארפ

חרא ל דבר זה סי שארפ
מאת: משה

תודה רבה

http://www.underwar.co.il/1-Programming/d104/
מאת: אסף

עזרה

אניהתחלתי לילמוד מחשבים בבית הספר ובתוכנה של בית הספר יש את הConsole.Parse והמורה הביא לנו שיעיורים שבהם אני צריך להשתמש בזה ובC# שיש למחשב אין את המושג Parse ואני לא יודע מה לעשות.
זה 2010
מאת: ddd

שאלות

הפקודה return מחזירה למערכת ההפעלה את הפלט 0 כהוכחה לכך שהתוכנית רצה כראוי
לאחר בניית הפיתרון (build) יש ללכת לתפריט debug ואז start without debugging
מאת: ddd

shullami

למשתמש shullami
הבעיה השנייה שלך ניתנת לפתרון בקלות. באמצעות פקודת readKey(); בסוף התוכנית אתה הופך אותה לקבועה
מאת: ddd

טל

למשתמש טל
אני לא יודע למה אתה מתכוון טופס פתיחה
גבי מערכת שעות- אם אתה רוצה להציג בצורת טבלה זה פשוט ביותר

הפקודות היחידות שצריך לשלוט בהן הן WriteLine ו BackgroundColor

אם ברצונך לקבל הסבר מפורט יותר צור קשר דרך המייל roeenegby11@gmail.com
מאת: ddd

טל

למשתמש טל
אני לא יודע למה אתה מתכוון טופס פתיחה
גבי מערכת שעות- אם אתה רוצה להציג בצורת טבלה זה פשוט ביותר

הפקודות היחידות שצריך לשלוט בהן הן WriteLine ו BackgroundColor

אם ברצונך לקבל הסבר מפורט יותר צור קשר דרך המייל roeenegby11@gmail.com
מאת: ddd

עבד לי

למשתמש שרון
קודם כל צריך לדעתי להוסיף אחרי writeline והסוגריים מרכאות: ככה
Console.WriteLine(" "); ובסוף לרשום return 0
זה יוצא ככה

Console.BackgroundColor = ConsoleColor.Red;
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine("choose a number");
int firstnumber = int.Parse(Console.ReadLine());
Console.WriteLine("choose another number");
int secondnumber = int.Parse(Console.ReadLine());
Console.WriteLine("what are you choose +,-,*,/");
char math = char.Parse(Console.ReadLine());
if (math == '+')
{
Console.BackgroundColor = ConsoleColor.Yellow;
Console.ForegroundColor = ConsoleColor.DarkMagenta;
Console.WriteLine(firstnumber + secondnumber);
}

if (math == '-')
{
Console.BackgroundColor = ConsoleColor.Green;
Console.ForegroundColor = ConsoleColor.DarkRed;
Console.WriteLine(firstnumber - secondnumber);

}

if (math == '*')
{
Console.BackgroundColor = ConsoleColor.Cyan;
Console.ForegroundColor = ConsoleColor.DarkBlue;
Console.WriteLine(firstnumber * secondnumber);
}

if (math == '/')
{
Console.BackgroundColor = ConsoleColor.Gray;
Console.ForegroundColor = ConsoleColor.DarkGreen;
Console.WriteLine(firstnumber / secondnumber);
}


Console.BackgroundColor = ConsoleColor.Magenta;
Console.ForegroundColor = ConsoleColor.DarkYellow;
Console.WriteLine("do you want to continue enter yes or no");
string shalomm = Console.ReadLine();
if (shalomm == "yes")
{
Console.BackgroundColor = ConsoleColor.Green;
Console.ForegroundColor = ConsoleColor.Magenta;

Console.WriteLine("choose A number");
int number33 = int.Parse(Console.ReadLine());
}
Console.WriteLine("choose another number");
int number88887 = int.Parse(Console.ReadLine());


Console.WriteLine("what are you choose +, -, *,/");
char mathi = char.Parse(Console.ReadLine());
if (mathi == '-')
{

Console.BackgroundColor = ConsoleColor.DarkMagenta;
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("number33 - number88887");
}
if (mathi == '*')
{

Console.BackgroundColor = ConsoleColor.Green;
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("number33 * number88887");
}
if (mathi == '/')
{

Console.BackgroundColor = ConsoleColor.DarkRed;
Console.ForegroundColor = ConsoleColor.DarkCyan;
Console.WriteLine("number33 / number88887");
}
if (mathi == '+')
{

Console.BackgroundColor = ConsoleColor.DarkYellow;
Console.ForegroundColor = ConsoleColor.Gray;
Console.WriteLine("number33 + number88887");
}
Console.ReadLine();
return 0;
מאת: ddd

שגוי?

הזנתי את הקלט הנתון לקומפיילר visual studio 2013 שלי והפלט היה לא כמו שצוין אלא:
variables: (5, 10, 12.34).
מאת: אורי שי

גירסה

לאיזו גרסת .NET ההדרכה כאן באתר רלוונטית?
תודה רבה על מדריך מקצועי מאוד
מאת: sharon

בבקשה לעזור

Console.BackgroundColor = ConsoleColor.Red;
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine("choose a number");
int firstnumber = int.Parse(Console.ReadLine());
Console.WriteLine("choose another number");
int secondnumber = int.Parse(Console.ReadLine());
Console.WriteLine("what are you choose +,-,*,/");
char math = char.Parse(Console.ReadLine());
if (math == '+')


{
Console.BackgroundColor = ConsoleColor.Yellow;
Console.ForegroundColor = ConsoleColor.DarkMagenta;
Console.WriteLine(firstnumber + secondnumber);
}

if (math == '-')


{
Console.BackgroundColor = ConsoleColor.Green;
Console.ForegroundColor = ConsoleColor.DarkRed;
Console.WriteLine(firstnumber - secondnumber);

}

if (math == '*')


{
Console.BackgroundColor = ConsoleColor.Cyan;
Console.ForegroundColor = ConsoleColor.DarkBlue;
Console.WriteLine(firstnumber * secondnumber);
}

if (math == '/')


{
Console.BackgroundColor = ConsoleColor.Gray;
Console.ForegroundColor = ConsoleColor.DarkGreen;
Console.WriteLine(firstnumber / secondnumber);
}


Console.BackgroundColor = ConsoleColor.Magenta;
Console.ForegroundColor = ConsoleColor.DarkYellow;
Console.WriteLine("do you want to continue enter yes or no");
string shalomm = Console.ReadLine();
if (shalomm == "yes")
{
Console.BackgroundColor = ConsoleColor.Green;
Console.ForegroundColor = ConsoleColor.Magenta;

Console.WriteLine("choose A number");
int number33 = int.Parse(Console.ReadLine());
}
Console.WriteLine("choose another number");
int number88887 = int.Parse(Console.ReadLine());


Console.WriteLine("what are you choose +, -, *,/");
char mathi = char.Parse(Console.ReadLine());
if (mathi == '-')
{

Console.BackgroundColor = ConsoleColor.DarkMagenta;
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine( number33 - number88887);
}
if (mathi == '*')
{

Console.BackgroundColor = ConsoleColor.Green;
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine( number33 * number88887);
}
if (mathi == '/')
{

Console.BackgroundColor = ConsoleColor.DarkRed;
Console.ForegroundColor = ConsoleColor.DarkCyan;
Console.WriteLine( number33/ number88887);
}
if (mathi == '+')
{

Console.BackgroundColor = ConsoleColor.DarkYellow;
Console.ForegroundColor = ConsoleColor.Gray;
Console.WriteLine(number33 + number88887);
}
Console.ReadLine();
אין לי מושג למה זה לא עובד
מאת: אלי

הורשה פשוטה

אם במחלקת הבסיס (לדוג' Shape)הגדרתי Member כלשהו, איך אני פונה אליו במחלקה היורשת? (לדוג' square)
מאת: מתכנת ראשי

נדירה

וואלאק לא עזרת לי בכלום יא בוט מסריח האורים שלחה אחים
מאת: he

rey

yregfarg
מאת: זסז

סזס

זסז סזס זסז סזס
מאת: טל

טופס פתיחה

כיצד ניתן לשנות את טופס הפתיחה בפרויקט?
כמו כן, כיצד ניתן להציג מערכת שעות בצורה יפה?
מאת: idan

מה ההבדל מלעשות ירושה רגילה??

public abstract class Aminal
{
public abstract void MakeSound();
}

class Dog : Aminal
{
public override void MakeSound()
{
Console.WriteLine("Woof");
}
}

class Cat : Aminal
{
public override void MakeSound()
{
Console.WriteLine("Myaow");
}
}

class Cow : Aminal
{
public override void MakeSound()
{
Console.WriteLine("Muuuu");
}
}
מאת: אנונימי

הספר שמצורף כ-PDF לא תואם לכאן

הספר שמצורף כ-PDF לא תואם לכאן
הוא הספר למתקדמים ובעמוד עצמו אתה מסביר למתחילים,
האם תוכלו לתקן את זה בבקשה כי אני מעוניין להדפיס את זה.
תודה רבה, ויישר כוח.
מאת: o

console.read

מישהו יכול להסביר לי בפשטות מה ריד עושה?
תודה
מאת: ל.י

אשמח לקבל עזרה לכמה בעיות:
1. שמתי כפתור ב user control ורש,hו אותו לאירוע click , אבל ראיתי בbreak point שהוא לא מגיע לארוע גם בזמן לחיצה.
2.איך אומרים לmessageBox להיות מעל כל החלונות.
3. ב radioButton יש אפשרות שיתן לבטל את הבחירה? איך?
איך ניגשים לערך מסויים ב-datatable בעל שורה אחת ושתי עמודות ז"א 2 ערכים 4.ואנחנו רוצים לחלץ כל אחד בנפרד? ניגשנו כך string name=( process.Columns[0]).ToString()
וזה מביא לנו את שם העמודה במקום את הערך.
מאת: ל.י

הקסה דצימלי

איך משתמשים בהקסה דצימלי ב C#?
האם ניתן לחבר 2 משתנים מסוג הקסה ע"י +?
מאת: מרי

הרשאות גישה ל Internal

מצוין כי ניתן לגשת רק באותו Nmae Space בפועל ניתן לגשת רק באותו פרוייקט
מאת: sfsg

sgsgg

תודה
מאת: מישהו

לshullami

אם אתה עובד בvisual studio, תלחץ Ctrl+F5.
מאת: shullami

הרצת הקוד המתואר בפרק זה

כאשר מריצים את הקוד המתואר בפרק זה, המסך (console) נעלם מיד ולא רואים את התוצאה. נראה לי שכדאי לציין זאת ו/או להציעה פתרון כלשהו כמו למשל להוסיף את פקודת ה- Console.Readline על מנת לעצור את המסך.
מאת: shullami

פלט תוכנית - תצוגה שגויה

בדוגמא להגדרת משתנים בתוכנית והדפסתם, התוצאה מוצגת באופן שגוי שאינו מתאים לערכי המשתנים. או שזוהי בעיית תצוגה במחשב או שכדאי לתקן. אני משתמש ב- goodle chrome. נראה כאילו ערכי המשתנים הם 5, 112.34 ו-0, במקום 5, 10 ו- 12.34 .
מאת: יסמין

האם אני יכולה לבנות מערך של צערכים ??

מאת: למגיב לדנה

פיתרון לא נכון

את/ה לא בודק אם המספריפ יחודיים.
באלגוריתם שלך אתה תיפול על לדוגמא {0,2,2,2} אתה תחזיר אמת.
אלגוריתם שכן פותר אותו:
איטרציה ראשונה - רוץ על המערך, והכנס כל מספר מהקלט לתא המתאים עם הערך של המספר (דהיינו - 3 לתא מספר שלוש)
באיטרציה ה2 רצים על 1..n וממודאים שהערך בתא i הוא i.

private static Boolean tester(int[] arr)
{
foreach(int num in arr)
{
if (num < 0 || num > arr.Length)
return false;
arr[num] = num;
}
for (int num = 0; num<arr.Length; num ++)
{
if (arr[num] != num)
return false;
}
return true;

}
מאת: shira

שפת c#

איך מורידים שפת C# - מדריך לימוד למתחילים
תודה..
מאת: איש

תודה רבה!

המדריך הזה הוא אחד הטובים שראיתי בעברית, לא רק בתחום המחשבים.
מאת: לדנה

פיתרון

תרוצי על כל המערך פעם אחת ותסכמי את כל האיברים שלו.
אם n הוא זוגי, אז תבדקי אם סכום האיברים במערך שווה ל (n/2)*(n+1).
אם המערך אי זוגי, תבדקי אם סכום האיברים במערך שווה למשוואה שבשורה למעלה (זו שחישבנו עבור n זוגי כאשר את n/2 מעגלים למטה) ותוסיפי לזה את n/2 (מעוגל למעלה).
מקווה שהבנת. בהצלחה :)
מאת: דנה

שאלה

כתבו פונקציה יעילה המקבלת מערך בגודל n של מספרים שלמים בתחום שבין 0 ל- n-1.
על הפונקציה להחזיר 1 אם המערך מכיל את כל המספרים בין 0 ל- n-1 ולהחזיר 0 אחרת.
עליך לפתור את הבעיה ללא שימוש במערך עזר.
על הפונקציה לרוץ בסדר גודל של n.

מאת: שמואל בר

האופרטור ++

נראה לי שבדוגמא האחרונה d = ++b
d = b+1 ולא d = b האם אני צודק.
מאת: MH

יצירת Grupe Box תוך כדי ריצה

איך אני יוצר Grupe Box תוך כדי ריצה?
תודה..
מאת: as

תודה !

ממש תודה רבה נעזרתי המון במדריכים שלכם תמשיכו כך !!
מאת: הצילו

איך לבנות תוכנה שמדפיסה את המספר השני בגודלו

איך לבנות תוכנה שמדפיסה את המספר השני בגודלו

יש לי ש"ב למחר ואיני מצליח!!

SOMEBODY HELP ME
מאת: מעיין

פליז הלפ מי!!!!!

יש לי מבחן בעוד חודש אבל בגלל החגים אין זמן....יש לי על כל החומר שלמדתי שנה שעברה(הוראת בחירה,פונקציית MATH ,הוראת חזרה-WHILE,FOR לולאות מקוננות,)והחומר של תחילת השנה הזו (פעולות-המחזירות ערך ושאינן)
אם מישהו מכיר מורה פרטי ברחובות או יכול להשיג לי מס' טלפון אני מאוד אשמח!!!!
מאת: עזרה דחוף

יש לי מבחן בעוד כשבוע בC#

ברמה של המבחן לדוג' המצ"ב:


פרק א' שאלת חובה בת שני חלקים. בחלק הראשון אתם תיצרו מחלקה ובחלק השני תשתמשו במחלקה זו בתוך המתודה Main

שאלה 1 - חלק א' כתבו קוד המגדיר מחלקה בשם Product המיועדת להיות בשימוש עבור סופרמרקט ובאופן ספציפי עבור לחם. המחלקה כוללת את האלמנטים הבאים:

שדות - כל השדות יהיו ציבוריים (public) אלא אם כן נאמר אחרת:

o סוג המוצר (מספר שלם): 1 לחם אחיד רגיל, 2 – עבור לחם קל פרוס ו-3 עבור לחם דגנים (יש להשתמש ב-enum בכדי להגדיר את סוג הלחם).
o מחיר המוצר (מספר לא שלם) – הערך בשקלים של המוצר. חייב להיות גדול או שווה לאפס.
o משקל (מספר לא שלם) – משקל הלחם (חייב להיות חיובי, גדול מאפס).
o
o

בנאים:

o מתודת בנאי המקבלת כקלט את כל הקלטים הנדרשים (עבור כל השדות). אם עבור איזה ערך מערכי הקלט מתקבל ערך שאינו חוקי על פי הגדרת השדות לעיל, יש לזרוק חריגה (אתם רשאים לבחור באיזו סוג חריגה שתרצו).

o מתודת בנאי המקבלת כקלט רק חלק מהשדות ואת היתר קובעת כברירת מחדל. אין צורך לבצע במתודת בנאי זו בדיקות תקינות של הקלט ואפשר להניח כי הוא תקין.

o

o



מאפיינים: כל המאפיינים יהיו ציבוריים ובעת מימושם עליכם להחליט, בין היתר, האם יהיו לקריאה וכתיבה, או לקריאה בלבד:

o מאפיין המציין האם מדובר בלחם מסובסד (לחם מסובסד הוא לחם אחיד רגיל או לחם קל פרוס שמחירו קטן מ-8 ₪).
o
o


מתודות לכל מתודה עליכם להחליט האם היא סטטית או שהיא מתודת מופע רגילה. כמו כן, אלא אם כן הדבר הוגדר במפורש, עליכם להחליט אילו קלטים היא אמורה לקבל (אם בכלל). כל המתודות הנן public:

o מתודה "דורסת" (override) בשם ToString המדפיסה את שם המוצר ומחירו.

o מתודה המפחיתה את מחירו של המוצר. המתודה מקבלת כקלט מספר יחיד (לא שלם) שהוא הערך בשקלים שיש להפחית ממחיר המוצר. לדוגמה אם המחיר הנוכחי של מוצר הינו 8.5 ₪ והקלט הוא 1.5 ₪, הרי שהמחיר החדש של המוצר יהיה 7.0 ₪. אם הקלט של ערך ההפחתה שלילי (קטן מאפס) או שהוא גדול מהמחיר הנוכחי (מצב שהיה מביא לקבלת מחיר מוצר שלילי), המתודה יוצאת ללא שום הודעה או זריקת חריגה, ולא מתבצעת הפחתת מחיר.

o

o


שאלה 1: חלק ב' השתמשו במחלקה Product שקודדתם בחלק א' של השאלה כלהלן (הניחו ששורות הקוד שאתם כותבים כעת נכתבים בתוך המתודה הראשית Main()):

o צרו שלושה מופעי מוצרים, השתמשו עבור כל אחד מהשלושה בבנאי אחר וספקו נתונים חוקיים כרצונכם. למרות שאתם משתמשים בנתונים חוקיים, בנו את ההגנה הדרושה לביצוע הקריאה לבנאים.
o לאחר מכן, הפחיתו ממחיר המוצר הראשון 2.5 ₪ (אין לבצע את ההפחתה ישירות לשדה המחיר אלא דרך קריאה למתודה !).
o הדפיסו בפקודה אחת וללא שימוש בשירשור מחרוזות מידע לגבי המוצר הראשון אשר יכלול את שם המוצר, מחירו ומשקלו (העזרו ב-ToString של המחלקה).
o
o



פרק ב' עליכם לבחור ולענות על שאלה אחת מתוך שתי האפשרויות שלהלן (דהיינו את שאלה 2 או את שאלה 3).

שאלה 2

נתון מערך שכל אחד מאבריו הוא מחרוזת. על המערך לקיים את התנאים הבאים:
• כל התווים בכל מחרוזת צריכים להיות אותו תו.
• בכל תא, אורך המחרוזת גדול בלפחות 1 מאורך המחרוזת בתא שלפניו.

דוגמה למערך תקין:
וכו' FFFFFF XXXXX bbbb DDD

כתבו מתודה, המקבלת מערך מחרוזות, ומחזירה 1 אם המערך תקין, ו-0 אחרת.
על הפונקציה לעצור את ביצועה (ולהחזיר את התשובה המתאימה) אם מתגלה תא לא תקין.

הנחות שאתם יכולים להסתמך עליהן:

• גודלו של המערך אמנם אינו ידוע מראש, אך תוכלו להניח שיש בו לפחות שני תאים.
• עוד תוכלו להניח שכל המחרוזות שבמערך אינן המחרוזת הריקה (""( וגם לא null (דהיינו, הן מכילות לפחות תו אחד).
עזרה:

• אם שם הפרמטר המהווה קלט למתודה נקרא sv, אזי הפרמטר יוגדר כך: (string[] sv) foo

• שימו לב שמתודה זו מחזירה ערך (1 או 0) ועל כן בכל נקודה בקוד שיודעים שהמערך אינו תקין, מבצעים return 0 ובכך גורמים גם לסיום ריצת המתודה.

שאלה 3

לפניך קטע תוכנית המכיל שתי מתודות, sod1() ו-sod2().

public static void sod1()
{
int n = int.Parse(Console.ReadLine());
n = 10 - n % 10;
Console.WriteLine(sod2(n).ToString());
}

public static int sod2(int m)
{
int r = 0;
for(int i=m; i>=1; i--)
for (int j = 1; j<i ; j++)
r = r + i;
return r;
}

א. עקבו אחר ביצוע והראו מה יהיה הפלט של sod1() עבור הקלט 24.
ב. מצאו קלט עבורו הפלט יהיה קטן מ- 10. נמקו.

ורציתי לדעת אם ניתן ללמוד למבחן דומה בתוך כ-5 ימים למידה עצמית מא' ועד ת' , יש לציין כי המבחן עם חומר פתוח כשעתיים, והאם ניתן להגיע גם לציון גבוה(מעל ל90)
בתודה מראש
יסמין
מאת: יובי

ב#

זה המדיך הכי טוב לשפת ב# שאני מכיר!!!
תודה על הכל.
מאת: אלמוג

סיום

תגיד למה זה יוצא אחרי שנייה זה כותב ויוצא למה זה??
מאת: הדר

ChangeArray 11.3

הפונקציה הנ"ל מבצעת הגדלה החל מהאיבר השני, כי arr[i++] גורם לה להיות arr[1]
מאת: יונתן

תודה רבה

אני רק בן 13 ועזרתם לי להתחיל עם c# עכשיו אני יותר מתקדם ובעוד שלוש שנים אני יעבוד בחברה של דוד שלי
מאת: עידן

רטורן

מה הפקודה Return עושה?
מאת: ריבקה

writline

אחרי שעושים Build אני לא רואה את הפלט אלא רק הודעה Build: 1 succeeded, 0 failed, 0 skipped
מה צריך כדי לראות את הפלט?
מאת: ליאור

תשובה לשגיא

אהלן שגיא,
זה סוג של התניה, לרוב משתמשים בו בהשמה אבל גם ב return
מה שזה אומר בעצם זה ביטוי , מה יקרה אם הביטוי נכון, ומה יקרה אם הוא לא נכון
לדוגמא:
x = 7
y = 6
יוזר המספר 7 כי איקס גדול מ Y.
מקווה שהסברתי נכון
מאת: שגיא

שאלה עם משהו בפונקציה פה..

public static int Max(int x, int y)
{
return (x > y) ? x : y;
}
מה זה הRETURN הזה לא הסברתה =
מה מציין ה סימן שאלה? ומה שאחריו?
מאת: שולי

תודה!

עברתי בזכותכם ראיון עבודה.... (נפלתי בשני, אבל לא חשוב). תבורכו :)
מאת: nero

טעות כתיב בעמוד 13

שלום רב, בעמוד 13 ישנה טעות במשפט האחרון,
במקום לכתוב ש- ch2 יכיל את הערך של ch2 צריך לכתוב שהוא יכיל את הערך של ch.
מאת: לשם

תודה

תודה רבה!
עזרתם לי!!
מאת: DAVID

thanks

thanks any way i founded the answer by my self
מאת: אבי

טעות

תקנו אותי אם אני טועה אבל הפנוקציה GetType היא פונקציה היא לא מוגדרת כ virtual
מאת: זיו

על האתר...

האתר הראשון שנותן מידע אודות C#
כל הכבוד על הרעיון!
מאת: DAVID

מחלקות

התחלתי ללמוד ל-5 יח' ואני לא מצליח לקלוט ניסיתי לבנות תוכנה על חנות כלבים שתראה למאמץ איזה סוג הוא גיל מצב בריאותי וכד' אבל כאשר ניסיתי
להריץ אות התוכנה הוא אומר ככה
"The name 'min' does not exist in the current context "
למה ?
תודה מראש
מאת: shoshan

שירה - אין בעד מה

מאוד שמחים לעזור לכל הסטודנטים שרוצים בכך :)
מאת: שירה

תודה רבה!

התחלתי ללמוד אסמבלר ומדעי המחשב לפני שבוע ועזרתם לי להבין חומר של חודשיים לפחות. קיבלתי במבחן 100!!!!
תודה רבה!
מאת: חיים גוטמן

c# .net

עזרה בלימוד דוט נט
מאת: איתי

אני חדש

אני חדש בשפת הC. אשמח אם תעזרו לי למצוא עוד אתרים ומדריכים לשפה זו ואם תוכלו לתת לי שם של ספר המתעסק בזה אשמח מאוד
מאת: נתי

יש לכם טעות

"internal: פונקציה או משתנה המוגדרים internal ניתנים לגישה לכל פונקציה או מחלקה הנמצאת איתם באותו ה-namespace".

הרשאת internal גורמת למחלקה/משתנה להיות נגישים בתוך הAssembly שבו הם מוגדרים, אין כל קשר לnamespace.
אנא תקנו זאת.
מאת: יהודה

תודה רבה

מאת: אוקסנה

תודה!

תודה רבה על הספר
מאת: Oksana

Toda!

Toda raba!!!
מאת: רלי

תודה

שלום
מאת: טל

אתם מעולים, תודה רבה!!
מאת: ברק

המון תודה!

אוסף המדריכים שלכם הם אחד הפרוקייטים המבורכים ברשת!
מאת: חסן

-

שלום.,
רוצה לדעת איך מלמדים את הילדים בשפת c#
מאת: ניר

ליאל

לאילו תרגילים נדרש פתרון?

מאת: ליאל

פתרונות

יש פתרונות לתרגילים?
מאת: מישהו

זה לא למתחילים..

אלא למתכנתי C או ++C.
מאת: משה

מדריך מעולה!!

מדריך מעולה!! אהבתי
שיתוף:
| עוד