
if (username == "abcd" && password == "1234"). תנאי כזה יותר קריא מאשר if מקונן בתוך if.a % 2 == 0 && b % 2 == 0.grade < 0 || grade > 100. ציון לא יכול להיות גם שלילי וגם גדול מ-100, ולכן מספיק שאחד התנאים נכון.!(a == b) כותבים a != b. שימוש ב-! מתאים בעיקר כשבודקים ערך בוליאני בודד, כמו קיום של קובץ.הטקסט המלא של הדקות הראשונות בהרצאה «תנאי If - Else - חלק 1» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
מה שראינו עד עכשיו בקורס אלו פקודות בסיסיות וכל מיני כלים בסיסיים שקיימים בשפת התכנות C-Sharp וברוב שפות תכנות.
מה שראינו זה בעצם את האפשרות ליצור משתנים, את האפשרות לקלוט מידע מהמשתמש, את האפשרות להציג פלט למשתמש, אפשרות לבצע קאסטינג, אופרטורים, כל מיני דברים מאוד מאוד בסיסיים.
כעת אנחנו הולכים להגיע לנושא הראשון שהוא בעצם קשור לעולם האלגוריתמיקה. אלגוריתמיקה זה בעצם הפעולה שבה אנחנו בונים קוד שבנוי מסדרת פקודות שבסופו של דבר גורם לתוצאה סופית מוגדרת.
לא תמיד כל הקוד הזה אנחנו רוצים שיתבצע פקודה אחר פקודה שורה אחרי שורה. יכול להיות שאנחנו רוצים שחלק מהפקודות יתבצעו במקרים מסוימים ובמקרים אחרים אנחנו רוצים שחלק אחר של הפקודות יתבצעו.
כאן בעצם אנחנו מתחילים להגיע למשהו שנקרא בקרת זרימה flow control וזה אומר שאנחנו רוצים לשלוט על מה בדיוק התוכנית עושה. זה לא שהיא תמיד עושה הכל.
דוגמה שיכולה להיות, יש לנו מגוון של מניות בבורסה, ואנחנו רוצים שהתוכנה תחשב ותגיד לנו איזה מנייה לקנות נכון לעכשיו, בהתאם לתנועות בשוק, בהתאם לגובה של המניות.
אנחנו לא רוצים שכל הזמן היא תיתן לנו את אותה תשובה של מנייה, אנחנו רוצים שהיא תיתן לנו את המנייה הנכונה ביותר לקנות. זה היה מגניב אם הייתה לנו תוכנה כזאת.
מקרה אחר יכול להיות מצב שאנחנו רוצים לקלוט מהמשתמש מידע של נניח אימייל וסיסמה. יש לנו פה לדוגמה את האתר של ג'ימייל שבו אנחנו רואים שהוא אומר לנו בואו תכניסו את הדואל שלכם תכניסו סיסמה תלחצו על לחצה ניכנס ואני אבדוק האם הנתונים שלכם נכונים.
אנחנו לא רוצים שתמיד הוא יגיד לנו בסדר סבבה בואו תיכנסו ורק אם הסיסמה שלנו נכונה והאימייל נכון כלומר תואמים למה של הפרטים שהיו כאשר נרשמנו, רק אף אנחנו רוצים שהוא יביא אותנו לדעת האימייל שלנו.
יש לנו כאן את ה-V הזה של הישאר רשום. אנחנו רוצים שבעצם הדפדפן יזכור אותנו רק כאשר אנחנו לחצנו על ה-V הישאר רשום. אז בעצם אנחנו רואים שאנחנו לפעמים רוצים לבצע פעולות שהן תלויות בקלט של המשתמש, פעולות שתלויות בזמן הנוכחי, פעולות שתלויות במצבים מסוימים וכך אנחנו יכולים לשלוט על בקרת הזרימה של התוכנית.
אז הדבר הראשון שאנחנו הולכים לראות זה הסרטון הזה שהוא בעצם מדבר על משהו שנקרא If או Conditions. מצבים פה אנחנו רוצים לבדוק האם תנאי מתקיים ואם התנאי הזה מתקיים כלומר ערכו שווה ל true אז אנחנו רוצים לבצע סדרת פקודות אם הוא לא מתקיים אנחנו יכולים לבצע סדרת פקודות אחרות.
ובואו נראה בעצם דוגמה שיכולה להמחיש את זה. נניח שיש לנו פה איזשהו משתנה נ"מ. נכניס לתוכו את המספר 100. אנחנו רוצים לבצע פעולה מסוימת אם המספר גדול או שווה ל-50 ופעולה אחרת אם הוא קטן מ-50.
ויש לנו את הפקודה שנקראת if. if בעצם באנגלית זה אם. אנחנו בפקודה הזאת רושמים סוגריים ובתוך הסוגריים העגולות אנחנו בודקים האם תנאי מסוים מתקיים.
לדוגמה האם המספר יותר גדול או שווה לאיזשהו ערך לדוגמה 50. אם כן אנחנו פותחים משהו שנקרא בתכנות בלוק פתיחת סוגריים וסלסלים סגירת סוגריים וסלסלים ואנחנו כותבים בתוך את הפקודות שאנחנו רוצים לדוגמה num is bigger or equal to 50 בואו נריץ את זה ונראה שכאשר הוא בודק הוא מחזיר תשובה שהיא true ואנחנו רואים שהמספר אכן יותר גדול או שווה
ל-50 אנחנו יכולים להוסיף כאן אלס ובאלס אנחנו הולכים לטוב דברים שהתבצעו במידה והתנאי לא מתקיים. כאשר התנאי לא מתקיים, כלומר שווה לפולס, התוכנית תקפוץ מיד ותבצע את האלס, אלס באנגלית אחרת.
num is smaller בין 50. ובעצם יהיה משפט נכון לכתוב אותו. אז כעת אם אנחנו נריץ את זה אנחנו רואים num is bigger or equal to 50, ובואו נניח שאנחנו מכניסים 10, אנחנו רואים שההדפסה היא num is smaller than 50. במידה ולא היה לנו את ה-else זה לא משהו שאנחנו חייבים לכתוב אנחנו מריצים את זה פשוט ה-if לא מתבצע והתוכנית ממשיכה הלאה
בואו ניישם את זה בדוגמה אמיתית נניח שאנחנו רוצים לכתוב תוכנית שקולטת מהמשתמש שני מספרים ומציגה את המכפלה שלהם ואנחנו רוצים לומר למשתמש please enter two numbers אנחנו רוצים לקלוט את המספר הראשון אנחנו רוצים לקלוט את המספר השני ואנחנו רוצים להציג את המכפלה.
המספר הראשון כפול המספר השני שווה למספר השלישי. כאן יש לנו את a, יש לנו את b, ופה פשוט נגדיר את a כפול b. בואו נריץ. Please enter two numbers.
נכניס את 11 ו-22 ונראה ש-11 כפול 22 שווה 242. אבל בואו עכשיו נוסיף עוד משהו לתוכנית. בואו נניח שאנחנו רוצים שניתן יהיה להריץ את התוכנית הזו, כלומר את קובץ ה-execution, רק במידה והמשתמש מכניס לפני זה סיסמה ושם משתמש נכונים.
אוקיי, איך אנחנו בעצם יכולים לעשות את זה? אז קודם כל אנחנו חייבים לקלוט מהמשתמש את הסיסמה ואת שם המשתמש. בואו נבקש מהמשתמש enter your username. אנחנו רוצים לקחת את שם המשתמש, שדרך אגב זה כמובן סטרינג username=parsol.gridline נגיד למשתמש enter your password, הסיסמה היא גם כן מוכרזת, נפתח משתנה פסוורד ונקלוט את הסיסמה.
עכשיו אנחנו רוצים בעצם לבצע הלב של התוכנית, כלומר הקליטה של שני המספרים וההדפסה של המכפלה שלהם, רק אם שם המשתמש והסיסמה נכונים לפי מה שאנחנו מתכנתים כרגע רוצים.
זה אומר שאנחנו לא תמיד רוצים לבצע את הקוד הזה, אנחנו רוצים לבצע איזושהי בדיקה לפני זה. כאן כמובן הולכת להיות לנו בדיקה. אם Username, אני מזכיר לכם את אופרטור השוואה שהוא שווה שווה ולא שווה אחד שזה אופרטור השמה.
בואו נניח שהוא שווה ל-A, B, C, D. אנחנו נכנסים ומבצעים את קטע הקוד שבתוך הבלוק, אבל זה לא הדבר היחידי שאנחנו רוצים לבדוק. אנחנו רוצים גם לבדוק האם הסיסמה שווה לאיזושהי סיסמה ידועה שלנו.
אז אנחנו יכולים בתוך הבלוק לרשום בעצם כל מה שאנחנו רוצים, כולל עוד תנאים עם פסוורד שווה, בואו נניח ל1234. עכשיו בואו נראה את בקרת הזרימה של התוכנית כרגע.
תקודות האלה שאנחנו רואים כאן מתבצעות תמיד כי הן לא נמצאות בשום if או שום אלף. כאן אנחנו בעצם מגיעים לאיזושהי בדיקה. שפת התכנות הולכת בעצם לבדוק את ה-user name האם הוא שווה ל-abcd.
כל האופרטורים ההשוואתיים שאנחנו דיברנו עליהם בעולם של האופרטורים ואני אני מזכיר מה הם ה-comparison operators. האופרטורים השוואתיים הם גדול מ- קטן מ- גדול שווה- קטן שווה- שווה ל- או שונה מ-.
כל האופרטורים ההשוואתיים האלה מקבלים שני אופרנדים. אנחנו יכולים לראות שאופרטור שווה שווה, שזה בעצם אופרטור השוואתי, מקבל אופרטור אחד מצד שמאל, יותר נכון אופרנד אחד מצד שמאל, ואופרנד אחד מצד ימין, שני אופרנדים, ומחזירים כולם ערך בולעני.
ערך בולעני הכוונה true או false. כל ערך בולעני בעולם יכול להיות שווה או ל true או ל false. הוא לא יכול להיות שווה למשהו אחר, הוא לא יכול להיות שווה ל-אולי.
או שהוא נכון או שהוא לא נכון. והתוכנית בודקת כרגע האם היוזרניים שנקלט מהמשתמש תוך כדי ריצת התוכנית, האם ברגע שהתוכנית הגיעה לפקודה הזאת היוזרניים אכן שווה ל-adcd.
אם כן האופרטור שווה שווה מחזיר לנו true רק אם מוחזר true בתוך הסוגריים של האיף התוכנית תמשיך ותיכנס לתוך הבלוק של האיף ותתחיל לבצע אותו ואז היא תגיע לעוד בדיקה האם הערך שיש בתוך המשתנה פסוורד שווה ל-1234 אם כן אז התוכנית תמשיך ותיכנס לתוך הסוגריים המסולסלות של האיף זה אומר שהקוד הזה ארבעת השירות האלה
התבצעו רק אם גם היוזרניים שווה ל-ABCD וגם הפסמה שווה ל-1234. אבל מה קורה אם הם לא שווים? אז אם היוזרניים לא שווה ל-ABCD אנחנו יכולים לגשת לכאן ולומר למשתמש לדוגמה ERO או איליגל יוזרניים או יוזרניים או פסוורד אינקורקט או ליתר דיוק אינקורקט יוזרניים או פסוורד.
נהוג לא לומר למשתמש מה לא בסדר עם היוזרניים והפסוורד, האם זה היוזרניים לא בסדר או האם זה הפסוורד לא בסדר מבחינת סקיוריטי, שאם הוא מנסה לפרוץ לפחות שהוא לא ידע מה לא היה בסדר ומה כן היה בסדר.
אז אינקורקט יוזרניים ופסוורד זה משהו שאמרנו במידה והיוזרניים לא בסדר. במידה והפסוורד לא בסדר אנחנו רוצים להגיד לו את אותו הדבר, אינקורקט יוזרניים או פסוורד.
בואו נסתכל על בקרת הזרימה, כלומר על הזרימה של התוכנית. כאן אנחנו תמיד קולטים user name, פה אנחנו תמיד קולטים password. אם הuser name שווה ל-abcd אנחנו נכנסים, אם הוא לא שווה ל-abcd אנחנו מציגים לו את הודעת השגיאה incorrect == password והתוכנית מסתיימת.
במידה והuser name חוקי שווה ל-abcd התוכנית נכנסת ובדוקת את הסיסמה. במידה והסיסמה לא שווה ל-1234 התוכנית קופצת, מבצעת את ה-else, מציגה לו את הודעת השגיאה וכמובן לא מציגה עוד פעם את האינקורד יוזרנם או פסלורד, מפני שהאלף התחתון הזה שייך לאי"ף העליון הזה.
התוכנית תמיד כשהשיר היא נתקלת באי"ף אלף מבצעת או את האי"ף או את האלף, אף פעם לא את שניהם, ואת האי"ף העליון הזה היא כבר ביצעה, מפני שאמרנו יוזרנם חוקי, אז היא נכנסת לתוכו, היא לא תבצע עוד פעם את האי"ף הזה.
אז יש לנו פה כניסה לראשון, השני לא בסדר, אנחנו קופצים לאלף הזה, מדפיסים את incorrect user name ופסוורד הזה ונגמרת התוכנית. במידה שגם הסיסמה חוקית, זאת אומרת 1234, רק אז אנחנו נכנסים ומבצעים את הפעולות האלה, ולאחר מכן התוכנית ממשיכה כמובן לכאן ומסתיימת.
בואו נבדוק האם התוכנית הזאת עובדת כמו שצריך. אז יש לנו enter your username, נכניס abcd, enter your password, נכניס 1234, הגענו ללב ולתוכנית, please enter your numbers, 1, 1 ו-2, 2, תוכנית עובדת כמו שצריך.
נריץ עוד פעם, נכניס ABCD בתור יוזרנאים, וסיסמה 12345, כמובן הסיסמה שקויה, ואנחנו מקבלים incorrect username or passwords.
נכניס enter your username ABCDE, וכמובן אנחנו נקפוץ החוצה ונקבל incorrect usernames or passwords, וכמובן פליטת הסיסמה enter your password, 1234 אפילו שהסיסמה היא חוקית היוזרנים לא חוקי אנחנו הולכים להראות incorrect username or password משתמש לא יודע מה לא היה בסדר צריך כמובן
להכניס פרטים נכונים אז בעצם השתמשנו כאן עם if ו-else בכדי לבצע סדרה של בדיקות ולפי הבדיקות האלה לבצע את הבקרה של הזרימה של התוכנית אנחנו לא רוצים תמיד לבצע את הקוד הזה אנחנו לא רוצים תמיד לבצע את הקוד הזה אנחנו רוצים לבצע אותם כתלות באינפוט של המשתמש כתלות בכל מיני מצבים כתלות בשעה ובתאריך זה יכול להיות בכל מיני מקרים
אבל בכל אחד מהם אנחנו רוצים לבצע סדרת בדיקות ולבצע את הקוד שלנו כתלות במצבים שונים אז כאן יש לנו את האיף ואת האלף שבאים לעזור לנו עכשיו האם היינו יכולים לבצע גם את האיף הראשון וגם את האיף השני ביחד אז לצורך כך אנחנו הולכים להיחשף לסדרה נוספת של אופרטורים לאופרטורים האלה נקראים אופרטורים לוגיים
Logic Operators האופרטורים הלוגיים הם אמפרסנט אמפרסנט שזה נקרא אנד ורטיקל פייפ ורטיקל פייפ נקרא אור וסימן קריאה נקרא נו בעזרת האופרטורים האלה שהם קבוצה של שלושה אופרטורים שנחשבים אופרטורים לוגיים אנחנו יכולים עכשיו לבצע משהו קצת שונה מבחינת הבדיקות עצמן בואו נראה דוגמא נשים בהערה
את כל מה שעשינו מקודם ונסתכל על האופרטורים הלוגיים אוקיי בואו נניח שיש לנו פה int a שווה 100 int b שווה 200 אנחנו רוצים עכשיו להדפיס call רק אם הנה המספרים זוגיים בואו נכפיס קול both numbers are even אנחנו אפילו יכולים לקבל את המספרים האלה מהמשתמש להכניס אותם hardcoded או איך שבאנו בואו אפילו נקבל אותם מהמשתמש
יש לנו פה convert to n32 פרנסל רידליין נאמר למשתמש enter two even numbers ואנחנו רוצים עכשיו לבדוק את שני המספרים האלה לא רק מספר אחד אם אנחנו נריץ את זה כעת המשתמש יכול להכניס 10 ו-20 ויהיה מודפס "COOL BORDS NUMBERS ARE EVEN".
אם אנחנו משתמש מכניס 11 ו-13 כמובן גם מוצג לנו "COOL BORDS NUMBERS ARE EVEN" מפני שלא ביצענו פה שום בקרה על הזרימה של התוכנית. אז אנחנו רוצים כמובן לבצע כאן איזשהו איף. אם A הוא זוגי, איך אנחנו יכולים לבדוק דרך אגב ש-A הוא זוגי?
כשלמדנו אופרטורים אנחנו ראינו שיש אופרטור שנקרא מודולו. אנחנו ראינו שאם A מודולו 2 נותן לנו 0, זה אומר שחלוקה של 2 ב-a או יותר נכון a לחלק ל-2 לא נותן לנו שארית, אם הוא לא נותן לנו שארית זה אומר ש-a זוגית.
אז פה בעצם אנחנו בודקים האם a מודולו 2 שווה 0, האם a הוא זוגי. ואז אנחנו יכולים לבדוק את b האם b מודולו 2 הוא גם 0.
אם כן אם התוכנית גם נכנסה לתוך העיף הראשון וגם נכנסה לתוך העיף השני זה אומר בהכרח ששניהם זוגים. זה כמובן יעבוד, ורק אם נכניס שני מספרים זוגיים נקבל את המחוזת cool both numbers are equal.
אם אנחנו מריצים ומכניסים אחד זוגי והשני לא, אז אנחנו לא מקבלים שום דבר. ואנחנו רוצים לראות איפה אנחנו יכולים לאחד בעזרת אופרטורים לוגיים את שני החלקים האלה.
ויש לנו אפשרות להשתמש באופרטור end במקרה הזה.