יום שבת, 9 במרץ 2013

לולאות


לולאות(Loops)
לולאות מאפשרות לנו במהלך בעיות אלגוריתמיות לבצע סדרה של הוראות מספר פעמים ברצף.
הלולאה(LOOP) תחזור על סדרת ההוראות עפ"י קיום תנאי או ביצוע חוזר לפי תנאי.
כאמור יש שני סוגי לולאות: לולאת מונה (for) ולולאת תנאי (while).
לולאת המונה(for) תראה כך:
for(משתנה התחלתי;תנאי;קידום)
{                                                                       התחלת בלוק לכתיבת הוראות
הוראות לביצוע חוזר
}                                                                                         סיום בלוק לכתיבת הוראות
לדוגמה לולאת מונה מ1 עד 10 כולל, שמטרתה להדפיס את המספרים מ1 עד 10:
for(int i=1;i<=10;i++)
{
Console.WriteLine(i);
}             
לולאת תנאי(while) תראה כך:
while(תנאי)                                      התנאי שצריך להתקיים
{                                                           התחלת בלוק לכתיבת הוראות
הוראות לביצוע חוזר
}                                                           סיום בלוק לכתיבת הוראות
דוגמה ללולאת תנאי שמטרתה להדפיס אתך המספרים מ1 עד 10:
int i=1;
while(i<=10)
{
Console.WriteLine(i);
i++;
}
הערות חשובות:
-במידה והלולאה נרשמת ללא סוגרים מסולסלים(כבלוק הוראות) אזי רק ההוראה הראשונה מתבצעת.
-כל משתנה המקבל הצהרה בלולאה חייו והכרתו תסתיים עם סיום הבלוק, כלומר:
for(int i=1;i<=10;i++)
{
Int stam=10;
Console.WriteLine(stam-i);
}
Console.WriteLine(Stam+i);   //הוראה זו לא חוקית!!!
המשתנה stam וi יסיימו את חייהם בזיכרון , ולכן ההוראה שלאחר הלולאה לא חוקית.

-מה בעצם ההבדל בין for לwhile? למעשה אין ממש הבדל, שתיהן לולאות. אך לפעמים נוח יותר לרשום לולאת for יותר מאשר while ולהפך, כאשר for יותר נוח כשיודעים מראש את מספר הפעמים שההוראות יתבצעו, וwhile יותר נוח כאשר רק יודעים את התנאי העצירה.
פעולות
שיטה/פעולה היא רצף הוראות שנועדה לבצע תת משימה שניתנת לזימון חוזר, ובכך לפתור בעיה הניצבת בפנינו מספר פעמים בלי לכתוב אותה שוב ושוב.

קיימים כמה סוגי פעולות, פועלות המחזירות ערך ופעולות שלא מחזירות ערך.
פעולות המחזירות ערך יחזירו טיפוס מסוים (כגון int,char,string וכו'..), ופעולות שלא מחזירות ערך ויהיו void.

הגדרת הפעולה תיהיה כך:
static ערך_מוחזר שם_הפעולה(פרמטרים)
{                                                                                                                       תחילת בלוק לביצוע הוראות      
הוראות לביצוע והצהרות
return ערך_מוחזר_מהפעולה;
}                                                                                                                       סיום בלוק לביצוע הוראות
לדוגמה:
static int Add(int a,int b)
{
int answer=a+b;
Console.WriteLine(answer);
a++;
return answer;
}

הפעולה   Add תדפיס את תוצאת החיבור בין המשתנים a וb ותחזיר את תוצאה זו.
זימון הפעולה יראה כך:
public static void Main()
{
int num1,num2;
num1=5;
num2=10;
int r=Add(num1,num2);
}
כעת המשתנה r מכיל את החיבור של המשתנים num1 וnum2.
הערות חשובות:
-פעולה זו מחברת בין מספרים שלמים, לכן נחזיר טיפוס int (טיפוס של מספר שלם).
-ניתן לפעולה שם שמסביר מה הפעולה עושה בשביל נוחות והבנת הקוד (לפעולה זו קראנו Add, משמע הוספה).

-רצינו לחבר בין שני משתנים מטיפוס שלם ולכן כתבנו 2 פרמטרים המופרדים ביניהם בפסיק.
-static יכתב תמיד כאשר אנו קוראים לפעולה מפעולה סטטית אחרת (כגון Main).

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

-כאשר נעביר משתנה שהוא לא בעל יחוס (משתנה בעל יחוס לדוגמה הוא מערך) הערך של המשתנה לא ישתנה לאחר ביצוע הפעולה. ניתן לראות דוגמה בפעולה  Add, שכאשר אנחנו משנים את ערכו של המשתנה a (כאשר ביצענו את ההוראה a++ ) איננו למעשה משנים את ערכו של המשתנה num1.





אין תגובות:

הוסף רשומת תגובה