19.3.2019

כתיבת תוכנה


י' אדר ב' - 17.3

כתיבת תוכנה

  1.  תוכנה כותבים באמצעות קוד
  2. קוד נכתב לפי כללים של שפה מסויימת. ישנן שפות רבות לדוגמא C/C++/JAVA/PYTHON  וכמובן C# וגם javascript.
3.      הקוד עובר קומפילציה – היינו תרגום לשפה הפנימית של ה- CPU ( בדרך כלל CPU מתוצרת
         אינטל, אבל ישנם רבים אחרים כגון זה הנמצא בטלפונים סלולרים וכו' ).
4.      אנו משתמשים בקטגוריה של תוכנות מיוחדות המיועדות לכתיבת תוכנה ומכונות IDE :
Integrated Development Environment          , נבחר לקורס את Visual Studio.
5.      את VS ניתן להוריד בגרסה חופשית ( Community ) מהרשת.
6.      שפת C# היא שפה מאוד מודרנית הכוללת את החידושים המעודכנים ביותר לשיטות תכנות.



מרכיבי שפת C# וגם שפות אחרות


משתנים

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

סוגי משתנים שלמדנו
 String- משתנה שמכיל טקסט
Int - משתנה שמכיל מספרים שלמים
Float – משתנה שמכיל מספרים עשרוניים (לא שלמים)
Double - משתנה שמכיל מספרים עשרוניים אבל בכמות כפולה מ Float במידה ולא מדובר במספר ארוך עדיף להשתמש ב Float ע"מ לתפוס פחות מקום בזיכרון
להמרת טקסט למספר במשתנה מסוג Float Double\ נשתמש בConvert.ToSingle  (במקום Convert.ToInt32)




פונקציה

·        את הקוד מארגנים "בחבילות". החבילה הבסיסית ביותר נקראת פונקציה.
·        את התוכנית אנחנו כותבים בתוך הפונקציה המובנת של המערכת שנקראת Main – התוכנית מתחילה לרוץ מתחילת הפונקציה הזאת! כל מה שמעל לא חלק מתוכנית ההרצה אלא הגדרות של התוכנית




יצירת פונקציה
ניתן גם ליצור פונקציה משלנו ולהשתמש בה  את הפונקציה נכתוב מחוץ לפונקציה הראשית
היתרונות של שימוש בפונקציה
·               חוסך זמן – במקום לכתוב את הקוד שוב ושוב כותבים פעם אחת ומבצעים קריאה לפונקציה בכל פעם
·               הקוד יותר קריא
·               תיקונים \ שינויים – במידה ורוצים לבצע שינוי בתוכנית לא צריך לחפש את כל המקומות שכתבנו אלא במקום אחד וזה משפיע על כל התוכנית





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


דוגמה לפונקציה פשוטה:
במקום לכתוב פעמיים בקשה מהמשתמש להזין מספר ופעמיים לבצע המרה – כתבנו פונקציה שמבצעת את 2 הפקודות האלו ואנחנו קוראים לה פעמיים בכל פעם היא תבצע את הפעולה ותחזיר את הערך לתוך המשתנה
           static void Main(string[] args)
        {
            int x, z;

            x = GetNamber();
            z = GetNamber();
            Console.WriteLine(x + z);
        }

        static int GetNamber()
        {
            int t;
            //  יצירת משתנה פנימי לצורך פעילות הפונקציה 
            Console.WriteLine("enter namber");
            t = Convert.ToInt32(Console.ReadLine());
           
            return t;
            // החזרת הערך שבמשתנה למי שפנה לפונקציה

        }



מבני בקרת זרימה
·        אנו משתמשים במבני בקרת זרימה כדי להשפיע על הנתיב שייבחר לביצוע פקודות.
·         מבנה בשם if … else מקבל החלטה לפנות לנתיב א' או ב'.
·        מבנה בשם while יוצר מחזוריות בריצת קוד עד למילוי תנאי, מספר הפעמים שבו תופעל הלולאה אינו מוגדר מראש. גרסה של while נכתבת באמצעות do..while.
·        מבנה בשם for יוצר מחזוריות בריצת קוד עד למילוי תנאי, התנאי מורכב ממשתנה מבוקר העובר שינוי בכל מחזור, מספר הפעמים בהם תופעל הלולאה מוגדר מראש
באמצעות תנאי הכולל את המשתנה המבוקר.




דוגמה לתנאי IF
מקבל 2 מספרים מהמשתמש ובודק – אם X גדול מ Y תבצע את הפעולה הבאה אחרת תבצע האת הפעולה השניה
int x, y;

            Console.WriteLine("enter first namber");
            x = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("enter first namber");
            y = Convert.ToInt32(Console.ReadLine());


            if (x > y)
                Console.WriteLine("first is bigeer");
            else
            Console.WriteLine("secend is bigger"); 









דוגמה ללולאת for  משולבת עם פונקציה

  static void Main(string[] args)
        {

            //  הגדרת משתנים
            int counter = 0;
            string statment;
           
            Console.WriteLine("enter statment");
            statment = Console.ReadLine();

            // קליטה מהמשתמש את מספר הפעמים המבוקש לחזרה
            Console.WriteLine("how many times display ? ");
            counter = Convert.ToInt32(Console.ReadLine());


          
          // קריאה לפונקציה + המשתנים שמעבירים לפונקציה
            showstetment(statment, counter);


        }

        static void showstetment (string s , int c )
        {


            for (int i = 0; i < c; i = i ++)
            {
                Console.WriteLine(s);
         }
            
הלולאה מבצעת 3 פעולות 
·        יצירת משתנה פנימי עם הערך 0
·        בדיקה - במידה והמשתנה קטן מהמונה (הנתון שהכניס המשתמש) תבצע את הפעולה שבתוך הלולאה
·        להעלות את המשתנה ב1
התוצאה היא שהפקודה תרוץ מספר פעמים שהזין המשתמש ולאחר מכן התנאי לא מתקיים והלולאה מסתיימת

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




דוגמה ללולאת while משולבת עם for
הלולאה הראשונה תרוץ שוב ושוב עד שהמשתמש יכניס מספר בין 1 ל 9
ולאחמ"כ הלולאה השנייה עשרה פעמים תכפול את המספר שנבחר בערך שבi  (בכל הרצה i עולה ב1)

   {
            // הגדרת המשתנה לערך שמחוץ לטווח המבוקש  
            int x = 100;
            // מתבצעת בדיקה – כל זמן שהמשתנה גדול מ9 הפעולה תחזור על עצמה  
           while (x > 9 )
            {
                Console.WriteLine("enter namber");
                x = Convert.ToInt32(Console.ReadLine());

            }

            for (int i = 1 ; i < 11 ;  i = i +1)
            {
                Console.WriteLine(x * i);
               
            }





לולאת do
בדומה לקטע קוד הקודם רק שהפעם  התנאי נמצא בסוף הבלוק – קודם מתבצעת הפעולה פעם אחת וא"כ הבדיקה
ההבדל בין do  ל while שבwhile  מתבצעת בדיקה ובמידה והתשובה שלילית לא מתבצע כלום לעומת זאת בdo  הפעולה מתבצעת לפחות פעם אחד ואח"כ יש בדיקה

do
            {
                Console.WriteLine("enter namber");
                x = Convert.ToInt32(Console.ReadLine());
            } while (x > 9);







 Placeholder – מצביע מיקום {}
 במקום להכניס את המשתנה לתוך המשפט ניתן להשתמש במצביע מיקום
לדוג' בקוד הבא במקום לפצל את המשפט לקטעים נוכל לכתוב מחרוזת אחת עם מצביע מיקום למשתנה שנמצא אחרי המחרוזת 
אפשרות א'
            if (x > y)
              

    Console.WriteLine(x + " first is bigeer" + " Of the second number" + y );

אפשרות ב'
Console.WriteLine(" first number {0} is bigeer  Of the second number {1}", x , y);



ניתן  גם לשלב לולאה בתוך לולאה - גם מ2 סוגים
דוג' להדפסת לוח הכפל באמצעות לולאה בתוך לולאה - הלולאה הראשונה תרוץ עשר פעמים כשבכל פעם הלולאה הפנימית תרוץ 10 פעמים  


        for (int i=1 ; i <11; i++)
            {
                for (int c = 1; c < 11 ; c++ )
                {
                    Console.Write  ("{0} \t", i*c);
                  
                }
                    Console.WriteLine("");

אין תגובות:

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

MVC

Web api Front end (צד משתמש) שולח http request     כל אתר מכל מכשיר יכול להתחבר ולקבל נתונים (אין אפליקציה) ולא משנה באיזו שפה ה...