ABA


"C# בעיה מעצבנת שקשורה למשתנים"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #15828 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 15828
shy327  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 11.8.12
1480 הודעות, 20 פידבק
   20:49   18.04.10   
אל הפורום  
  C# בעיה מעצבנת שקשורה למשתנים  
 
   כתבתי תוכנית שמחשבת שני מספרים הכל טוב ויפה
ואז החלטתי לחשב מע"מ אז אחרי שרשמתי הכל הוא נותן לי שגיאה



Error 1 Use of unassigned local variable 'M'

בנתי שזה קשור לאחד המשתנים אבל מה בידיוק הבעיה ?


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  אולי תקרא טוב טוב ותנסה אפילו עם מילון? Sn00py  18.04.10 21:59 1
  הגדרת משתנה ולא איתחלת אותו : Nexus 18.04.10 23:47 2
     תראה את הקוד shy327  19.04.10 11:45 3
         הבעייה פה כמו שאני רואה אותה : Nexus 19.04.10 12:52 4
         חפרתי קצת לא נורא תקרא אבל מה שכתבתי : Nexus 19.04.10 12:53 5
             אז במקום לכתוב float 1; shy327  19.04.10 13:08 6
                 בדיוק : Nexus 19.04.10 13:14 7

       
Sn00py 
חבר מתאריך 1.8.02
2954 הודעות
   21:59   18.04.10   
אל הפורום  
  1. אולי תקרא טוב טוב ותנסה אפילו עם מילון?  
בתגובה להודעה מספר 0
 
   השגיאה(בניגוד להרבה אחרות) מאוד מאוד ברורה
אתה מנסה להשתמש במשתנה שלא אתחלת אותו.
זה יכול לנבוע ממצב כזה:

int i;

while (i < 10) {
...
}

\x6C\x65\x65\x74\x68\x61\x78\x30
\x72\x3A\x2D\x29
tresp4sser


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Nexus

   23:47   18.04.10   
אל הפורום  
  2. הגדרת משתנה ולא איתחלת אותו :  
בתגובה להודעה מספר 0
 
   לדוגמה ;int m

אבל אתה חייב לאתחל אותו ;m=0

בדרך כלל אני לפחות ב #C מגדיר משתנים ברמת ה CLASS ומאתחל אותם ברמת ה constructor .
ואם זה בתוך פונקציה מקומית אני מגדיר משתנים בהתחלה ומייד אחרי זה מאתחל אותם לדוגמה :

private void test()
}
int i;
int m;
i=0;
m=1;
כאן אני כותב את מה שרציתי שזה יעשה בפונקציה .
{



                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
shy327  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 11.8.12
1480 הודעות, 20 פידבק
   11:45   19.04.10   
אל הפורום  
  3. תראה את הקוד  
בתגובה להודעה מספר 2
 
  

using System;

class shai
{
static void Main(string args)

{

float sum;
float PTM;

float 1;


Console.WriteLine("plez enter the 1st number: ");
float num1 = float.Parse(Console.ReadLine());
Console.WriteLine("plez enter the 2nd number: ");
float num2 = float.Parse(Console.ReadLine());



sum = num1 + num2;
Console.WriteLine("The sum is: {0:f2}",(float) sum);

PTM = sum + (1/100)*sum;
Console.WriteLine("The sum after maam is: {0:f2}", (float)PTM);


}
}

עכשיו נגיד ב float 1; אני צריך להכניס לו את הערך ככה :

using System;

class shai
{
static void Main(string args)

{

float sum;
float PTM;

float 1;

float1 = 15.5;

Console.WriteLine("plez enter the 1st number: ");
float num1 = float.Parse(Console.ReadLine());
Console.WriteLine("plez enter the 2nd number: ");
float num2 = float.Parse(Console.ReadLine());



sum = num1 + num2;
Console.WriteLine("The sum is: {0:f2}",(float) sum);

PTM = sum + (1/100)*sum;
Console.WriteLine("The sum after maam is: {0:f2}", (float)PTM);


}
}

כי גם שאני מגדיר אותו זה לא עובד


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Nexus

   12:52   19.04.10   
אל הפורום  
  4. הבעייה פה כמו שאני רואה אותה :  
בתגובה להודעה מספר 3
 
   אתה כתבת ;float 1
וזה לא נכון .

אתה רוצה להגדיר משתנה מסוג float

לדוגמה :

;float n
כאשר המשתנה הוא n מסוג float

אחר כך אתה מאתחל את המשתנה :

n=15.5
ואז אתה משתמש ב n בפונקציה במקומות שאתה רוצה .
זה כמו INT

;int a
;a=0

http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=EN-US&k=k(FLOAT_CSHARPKEYWORD)&rd=true

תסתכל בקישור הזה יש דוגמאות .
בין היתר אתה יכול לעשות ;float y=15.5
אבל אני אוהב נוהג ולדעתי זה יותר נכון קודם להגדיר משתנה מסוג כלשהו ורק אחרי זה לאתחל אותו .

נגיד אני יודע מראש שבפונקציה שלי יהיו 5 משתנים שונים אז אני קודם מגדיר אותם :

;int a
;float c
;string daniel
;bool yes_no

ואז מאתחל אותם ואחר כך משתמש בהם בפונקציה .


מה שאתה עשית הגדרת כביכול משתנה 1 מסוג float אין כזה דבר .
תרשום לעצמך :

המשתנה תמיד מצד ימין הסוג מצד שמאל :

משתנה n סוג float

משתנה n סוג int

ואתה תמיד מגדיר משתנים כאותיות לא מספרים ועדיף לא אותיות בודדות בדרך כלל אלא מילים עם משמעות כדי שתבין אחר כך מה רצית לעשות לדוגמה :

;float calculate_numbers
; float calculate_vat

עשית את זה בהתחלה אני רואה :

;float sum
;float ptm
וזה נכון .

אבל ;float 1 אין כזה דבר .


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Nexus

   12:53   19.04.10   
אל הפורום  
  5. חפרתי קצת לא נורא תקרא אבל מה שכתבתי :  
בתגובה להודעה מספר 3
 
   ותיכנס גם לקישור שהבאתי לך תראה תדוגמה שם .


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
shy327  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 11.8.12
1480 הודעות, 20 פידבק
   13:08   19.04.10   
אל הפורום  
  6. אז במקום לכתוב float 1;  
בתגובה להודעה מספר 5
 
   אני אכתוב float m=15 ;

?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Nexus

   13:14   19.04.10   
אל הפורום  
  7. בדיוק :  
בתגובה להודעה מספר 6
 
   M זה המשתנה מסוג FLOAT
ואם היית כותב ;int m=15 אז המשתנה M הוא מסוג INT .

ושוב אני אוהב להפריד את זה :

;int m
;m=15

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

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

ויש חשיבות גם ברמת הקלאס איפה מגדירים את המשתנים ואיפה מאתחלים אותם .
תסתכל באשכול החדש שפתחתי שם למעלה על ה FORM1 שלי .


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net