פרק 4: משפטי בקרה ולולאות
·
משפט
התנאי if
·
משפט
התנאי if..else
·
משפט
ה-switch
·
משפט
לולאת ה-for
·
משפט
לולאת ה- do..while
·
משפט
לולאת ה- while
·
משפט
ה- label
·
משפט
ה- break
·
משפט
ה- continue
·
משפט
ה- for..in
·
תרגילים
משפט התנאי if
משפט
התנאי if הוא משפט התנאי הפשוט ביותר. הוא מורכב מהמילה if , מביטוי לוגי בסוגריים (התנאי) אחריה
וממשפט בהמשך. אם הביטוי הלוגי true
אז המשפט שבהמשך יתבצע.
if (condition)
statement
המשפט
יכול להיות משפט פשוט (פקודה אחת) או משפט מורכב (מספר פקודות שמתוחמות בסוגריים
מסוסלות כמו ב- C\C++
וב- JAVA). אם רוצים, ניתן לרשום כמשמט שאמור להתבצע משפט תנאי if נוסף.
הביטוי
הלוגי יכול להיות כל ביטוי ב-JavaScript
שערכו true או false
(הערכים הבסיסיים). יש לשים לב לכך שכל אובייקט שערכו איננו undefined ואיננו null
, לרבות אובייקט מטיפוס Boolean
שערכו false , מקבל את הערך הפרימיטיבי true כאשר הוא ממוקם בתור הביטוי הלוגי במשפט תנאי.
התכנית
הבאה מדגימה את משפט התנאי if
ואת מה שהוסבר.
<!-- file name :
ifDemo.html -->
<!-- 2000(c) Zindell
Publishing House Ltd. -->
<! DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>ifDemo.html</TITLE>
<SCRIPT
LANGUAGE="JavaScript1.3">
var num1=24;
var num2=25;
if
(num1<num2)
document.write("<BR>num1 is smaller than num2");
var num3=4;
var num4=90;
if (num4>num3)
if (num4%3==0)
{
document.write("<BR>num4 is bigger than num3 and
divides with
");
document.write("no residual
into 3");
}
var b = new Boolean(false);
if (b)
{
document.write("<BR>Object of the Boolean type that holds
false ");
document.write("evaluates to the
primitive value true");
}
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>
משפט התנאי if..else
משפט
התנאי if..else הוא הרחבה של משפט התנאי הפשוט if. הוא מורכב מהמילה if
, מביטוי לוגי, ואחריו משפט שמתבצע אם התנאי true. אחרי המשפט מופיעה המילה else
ואחריה משפט נוסף שיתבצע אם התנאי false.
כל אחד משני המשפטים יכול להיות קבוצה של יותר ממשפט אחד ובלבד שתהיה מתוחמת
בסוגריים מסולסלות. כמו כן, כל אחד משני המשפטים יכול להיות משפט if פשוט או אפילו משפט if..else
נוסף.
if (condition)
statement1
else
statement2
התכנית
הבאה מדגימה את השימוש במשפט ה-if..else.
<!-- file name :
ifElseDemo.html -->
<!-- 2000(c) Zindell
Publishing House Ltd. -->
<! DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>ifElseDemo.html</TITLE>
<SCRIPT
LANGUAGE="JavaScript1.3">
var num1=24;
var num2=25;
if (num1>num2)
document.write("<BR>num1 is bigger than num2");
else
if (num1<num2)
document.write("<BR>num1 is smaller than num2");
else
document.write("<BR>num1 is equal to num2");
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>
משפט ה-switch
בדומה
ל-C\C++ ול-JAVA גם ב-JavaScript
ניתן לכתוב את משפט ה-swirch.
משפט ה-swith כולל בתוכו ביטוי שאת ערכו הוא מחשב, ומשווה את הערך שמתקבל למספר
קבועים שנתונים מראש. אם קיים קבוע שזהה
בערכו לערך של הביטוי אז המשפט (או המשפטים) שמופיע/ים בצמידות לאותו קבוע
מתבצע/ים.
התחביר
של משפט זה נראה כדלקמן:
switch (expression)
{
case label1:
statement;
break;
case label2:
statement;
break;
case labe13:
statement;
break;
case label4:
statement;
break;
. . .
default:
statement;
}
כלומר,
ערכו של ה-expression
מחושב, ומושווה לכל אחד מה-labels
שנתונים. אם קיים label שערכו זהה לביטוי שחושב אז המשפט/ים שמופיע/ים בצמידות אליו
מתבצעים עד לפקודה break.
אם
ערכו של הביטוי שחושב לא שווה לאף אחד מה-labels
הנתונים אז יבוצע המשפט/המשפטים שמופיעים אחרי המילה default. המילה default
אופציונלית ולא חייבים לרשום אותה. לפיכך, אם ערכו של הביטוי לא שווה לאף אחד מה-labels ובמשפט ה-switch
לא נרשמה המילה default
אז משפט ה-switch
לא יבצע שום דבר, והתכנית תמשיך לרוץ החל מהמשפט הראשון שבא אחרי משפט ה-switch.
המילה
break שמופיעה אחרי כל משפט (או משפטים) שמופיעים בצמידות ל-label מסוים גורמת להפסקת משפט ה-switch והמשך התכנית במשפט הראשון שמופיע אחרי משפט ה-switch.
התכנית
הבאה מדגימה את השימוש במשפט ה-switch.
<!-- file name :
switchDemo.html -->
<!-- 2000(c) Zindell
Publishing House Ltd. -->
<! DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>switchDemo.html</TITLE>
<SCRIPT
LANGUAGE="JavaScript1.3">
var car =
"VOLVO";
switch(car)
{
case "SKODA":
document.write("<BR>SKODA is a cheap car");
document.write("<BR>The SKODA price is 50,000 NIS");
break;
case "FIAT":
document.write("<BR>FIAT is an Italean car");
document.write("<BR>The FIAT price is 54,000 NIS");
break;
case "VOLVO":
document.write("<BR>VOLVO is a Sweden car");
document.write("<BR>The
VOLVO price is 120,400 NIS");
break;
default:
document.write("<BR>This car doesn't exist");
}
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>
לולאת ה- for
לולאה
היא פקודה אחת או יותר שמתבצעות שוב ושוב כל עוד תנאי מסוים true. רוב הלולאות ש-JavaScript
תומכת בהן מוכרות למי שמכיר את שפות התכנות C\C++ ו- JAVAוהן כוללות את הלולאות הבאות: for, while
ו- do..while.
JavaScript
תומכת גם במשפטי הבקרה break
ו- continue, וכמו כן, תומכת בלולאה ייחודית לעצמה, לולאת ה- for..in.
לולאת
ה-for ב-JavaScript
פועלת כמו ב-JAVA וכמו ב- C\C++. לולאת ה-for
כוללת בתוך הסוגריים העגולות שאחרי המילה for
שלושה חלקים:
initialExpression,
הביטוי שמאתחל את משתנה/י הלולאה (ניתן לוותר עליו).
booleanExpression,
התנאי שכל עוד הוא true
הלולאה ממשיכה לפעול
(ניתן לוותר עליו).
IncrementExpression,
הביטוי שמקדם את משתנה/י הלולאה (ניתן לוותר עליו).
התחביר
של לולאת ה-for
הוא כדלקמן:
For (initializationExpression ; booleanExpression
; incremetExpression)
statement
לולאת
ה-for מתבצעת באופן הבא:
תחילה
מחושב הביטוי initialExpression,
אשר מאתחל את המשתנים שעליהם הלולאה פועלת.
לאחר
שהביצוע של ביטוי זה מסתיים, מחושב הביטוי booleanExpression שערכו true
או false. אם ערכו false
אז הלולאה מסתיימת, והתכנית ממשיכה לפעול החל מהמשפט הראשון שמופיע אחרי לולאת ה-for. אם ערכו של הביטוי booleanExpression הוא true
אז המשפט או המשפטים שעליהם הלולאה פועלת מתבצע/ים ומייד לאחר מכן מתבצע הביטוי incrementExpression, אשר מקדם את ערכו /ערכם של משתני הלולאה.
לאחר
מכן, ערכו של הביטוי booleanExpressin
מחושב שוב.
אם
הוא false אז הלולאה מסתיימת כפי שהוסבר.
אם
הוא true אז המשפט/משפטים שעליהם הלולאה פועלת מתבצעים שוב, ולאחר מכן
התכנית עוברת לביטוי incrementExpression,
ואחריו, שוב, לביטוי booleanExpression,
וחוזר חלילה: אם ערכו false
אז הלולאה מסתיימת ...
אם
ערכו true אז הלולאה ממשיכה . . .
התכנית
הבאה מדגימה את פעולתה של לולאה זו.
<!-- file name :
forLoopDemo.html -->
<!-- 2000(c) Zindell
Publishing House Ltd. -->
<! DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>forLoopDemo.html</TITLE>
<SCRIPT
LANGUAGE="JavaScript1.3">
var num = 5;
var
result, index;
for
(result=1, index=1; index<=num; index++)
result=result*index;
document.write("The
factorial of 5 is : " + result);
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>
לולאת ה- do..while
לולאה
זו מבצעת משפט (או קבוצה של משפטים) שוב ושוב כל עוד ערכו של הביטוי הלוגי שלה true.
התחביר
של לולאה זו הוא כדלקמן:
do
{
statement
}
while(booleanExpression);
המשפט
(או המשפטים) של הלולאה, statement,
מתבצע בפעם הראשונה ללא כל תנאי. לאחר ביצועו מחושב ערכו של הביטוי הבוליאני boooleanExpression.
אם
ערכו של הביטוי הבוליאני הוא false
אז הלולאה מפסיקה להתבצע והביצוע של התכנית עובר אל המשפט הראשון שמופיע אחרי
לולאת ה-do..while.
אם
ערכו של הביטוי הבוליאני הוא true
אז המשפט (או המשפטים) של הלולאה מתבצעים שוב, ולאחר מכן שוב מחושב ערכו של הביטוי
הבוליאני booleanExpressionוחוזר חלילה.
התכנית
הבאה מדגימה את אופן פעולתה של הלולאה do..while.
<!-- file name :
doWhileLoopDemo.html -->
<!-- 2000(c) Zindell
Publishing House Ltd. -->
<! DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>doWhileLoopDemo.html</TITLE>
<SCRIPT
LANGUAGE="JavaScript1.3">
var num = 5;
var result=1;
do
{
result*=num;
num--;
}
while(num>0);
document.write("The
factorial of 5 is : " + result);
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>
לולאת ה- while
הלולאה
while מבצעת את המשפט (או המשפטים) שעליו היא פועלת שוב ושוב כל עוד
ערכו של הביטוי הלוגי שלה הוא true.
התחביר
של לולאה זו הוא כדלקמן:
While (booleanExpression)
Statement;
כאשר
לולאת ה-while מתחילה להתבצע, הפעולה הראשונה שנעשית היא חישוב ערכו של ה-booleanException.
אם
ערכו false אז המשפט (או המשפטים) של הלולאה לא מתבצע/ים והביצוע של התכנית
ממשיך מהמשפט הראשון שאחרי הלולאה.
אם
ערכו true אז המשפט (או המשפטים) של הלולאה מתבצע/ים, ומייד לאחר מכן ערכו
של ה-booleanException מחושב שוב, וחוזר חלילה.
כפי
שניתן לראות, ההבדל הבולט בין לולאת ה-while
ללולאת ה-do..while הוא שבעוד שהמשפט (או המשפטים) של לולאת ה-do..while מתבצעים לפחות פעם אחת, המשפט (או המשפטים) של לולאת ה-while עשויים שלא להתבצע בכלל.
התכנית
הבאה מדגימה את השימוש בלולאה while.
<!-- file name :
whileLoopDemo.html -->
<!-- 2000(c) Zindell
Publishing House Ltd. -->
<! DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>whileLoopDemo.html</TITLE>
<SCRIPT LANGUAGE="JavaScript1.3">
var num = 5;
var result=1;
while (num>0)
{
result*=num;
num--;
}
document.write("The
factorial of 5 is : " + result);
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>
משפט ה-label
משפט
ה-label כולל תווית (שם) ונקודותים ( : ) שמופיעים אחריה ומפרידים בינה
לבין משפט שהוא לולאה. את משפט ה-label
ניתן למקם בכל מקום שרוצים ולתת באמצעותו שם ללולאה מסוימת בתכנית.
השם
(התווית) שבוחרים – אסור שתהיה שם שמור, שם שמשמש למטרה אחרת שמוגדרת בשפה. בהמשך,
תינתן דוגמא שתציג את השימוש במשפט ה-label.
משפט ה-break
משפט
ה-break משמש להפסקת פעולתה של לולאה שסומנה באמצעות משפט ה-label.
כללי
התחביר של משפט ה-label
מאפשרים את כתיבתו בשתי דרכים:
1. כתיבת המילה break ללא כל תוספת.
2. כתיבת המילה break בצירוף שם של label
מסוים.
כאשר
משתמשים במשפט ה-break
בדרך הראשונה בתוך לולאה (או משפט switch)
הלולאה (או משפט ה-switch)
מפסיקה להתבצע והביצוע עובר למשפט הראשון אחריה.
כאשר
משתמשים במשפט ה-break
בדרך השניה, כלומר, בצירוף label
מסוים, אז הלולאה (או משפט switch)
שצוין מסתיים, והביצוע עובר למשפט שאחריו.
התכנית
הבאה מדגימה את השימוש במשפט ה-break.
<!-- file name :
breakDemo.html -->
<!-- 2000(c) Zindell
Publishing House Ltd. -->
<! DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>breakDemo.html</TITLE>
<SCRIPT
LANGUAGE="JavaScript1.3">
var j = 0;
var i = 0;
loop1:while (true)
{
i++
loop2:while (true)
{
j++;
if (i==11)
break loop1;
if (j==11)
{
j=0;
break;
}
result = i * j;
document.write(result + "
");
}
document.write("<BR>");
}
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>
משפט ה-continue
את
משפט ה-continue ניתן למקם בתוך כל אחת מהלולאות for, while
ו- do..while ואופן פעולתו דומה לאופן פעולתו ב-JAVA וב- C\C++.
אם
ממקמים את משפט ה-continue
בתוך לולאת for אז
בפעולתו הוא יגרום לסיום האיטרציה הנוכחית, ולמעבר אל הביטוי השלישי בלולאה, אל ה-
incrementExpression.
אם
ממקמים את משפט ה-continue
בתוך לולאת while
או בתוך לולאת do..while
אז בפעולתו הוא יגרום לסיום האיטרציה הנוכחית, ולמעבר אל התנאי של הלולאה (מעבר אל
ה-booleanExpression של הלולאה).
בדומה
למשפט ה-break גם בכתיבת משפט ה-continue
ניתן להוסיף ולציין label
מסוים ובכך לגרום לסיום האיטרציה הנוכחית של הלולאה שסומנה באמצעות אותו label.
התכנית
הבאה מדגימה את השימוש במשפט ה-continue.
<!-- file name :
continueDemo.html -->
<!-- 2000(c) Zindell
Publishing House Ltd. -->
<! DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>continueDemo.html</TITLE>
<SCRIPT
LANGUAGE="JavaScript1.3">
var i = 0;
loop1:while (true)
{
i++;
if (i%7!=0)
continue;
if
(i>1000)
break;
document.write(i+" ");
}
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>
משפט ה- for..in
משפט
זה הוא לולאה שבה משתנה (משתנה שהמתכנת בחר) מקבל לתוכו בכל איטרציה את השם של
משתנה אחר (על פי הסדר) מבין המשתנים שקיימים באובייקט המסוים.
כללי
התחביר בכתיבת משפט זה הם:
for (variableName in objectVariable)
statement
בציון
המשתנה שמהווה את האובייקט בתוספת סוגריים מרובעות כשבתוכן שמו של משתנה ממשתניו
של האובייקט מקבלים את הערך שיש לאותו משתנה באובייקט.
כלומר,
בכתיבת הביטוי: VariableObject[variableName] בתוך הלולאה מקבלים
את ערכו של המשתנה ששמו variableName
בתוך האובייקט variableObject.
התכנית
הבאה מדגימה את השימוש במשפט ה- for..in
.
<!-- file name :
forInDemo.html -->
<!-- 2000(c) Zindell
Publishing House Ltd. -->
<! DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>forInDemo.html</TITLE>
<SCRIPT LANGUAGE="JavaScript1.3">
newStudent = {name:
"Dany", age: 30, country: "CANADA"};
var property;
for
(property in newStudent)
{
document.write("<BR>newStudent." + property + " =
");
document.write(newStudent[property]);
}
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>
תכנית
זו יוצרת אובייקט ששמו newStudent,
וקובעת כי יהיו בו שלושה משתנים. כמו כן, היא גם קובעת את ערכיהם. לאחר מכן,
התכנית מדפיסה את שמות המשתנים שיש באובייקט newStudent ואת הערך שיש בכל אחד מהם באמצעות הלולאה for..in .
תרגילים
1. כתוב/כתבי תכנית
אשר תכלול שלושה משתנים. התכנית תחשב ותבדוק אם שלושת הערכים שבתוך שלושת המשתנים
יכולים להרכיב משולש.
2. כתוב/כתבי תכנית
אשר תחשב ותדפיס באמצעות לולאת for
את עשרת המספרים הראשונים בסדרת פיבונאצ'י.
3. כתוב/כתבי תכנית
אשר תחשב ותדפיס באמצעות לולאת while
את העצרת של 8.
4. כתוב/כתבי תכנית
אשר תחשב ותדפיס באמצעות לולאת do..while
את העצרת של 7.
5. כתוב/כתבי תכנית
אשר תחשב ותדפיס את כל המספרים הראשוניים שבין 0 ל- 1000. התכנית תעשה שימוש
בפקודות break ו- continue.
6. כתוב/כתבי תכנית
אשר תכלול את יצירתו של אובייקט אשר מכיל 4 משתנים. התכנית תדפיס את ערכיהם של 4
המשתנים של האובייקט באמצעות לולאת for..in.
2000
© All the rights reserved to Haim Michael & Zindell Publishing House Ltd.
No
parts of the contents of this paper may be reproduced or transmitted in any
form by any means
without
the written permission of the publisher !
This book can be used for personal use only !!!
Brought
to you by Zindell
(http://www.zindell.com)
לנוחיותך, להלן תוכן
העניינים של הספר: