C Shell – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
Yonidebot (שיחה | תרומות)
מ בוט החלפות: דוגמה; מסוים; קובצי;
←‏תחביר ובקרות זרימה: הסרת פירוט יתר
שורה 12:
==תחביר ובקרות זרימה==
ל- C Shell יש מבנה מעטפת פקודה אופייני ליוניקס: כל שורת פקודה (או שורה בקובץ הסקריפט) מתורגמת כפקודה נפרדת לביצוע, וקו נטוי שמאלי ( \ ) מסמן שסט הפקודות ממשיך בשורה חדשה. ה[[תחביר]] של השפה הוגדר בצורה דומה לשפת C על מנת לקיים עקביות עם סביבת העבודה של המעטפת, יוניקס, שנכתבה רובה ככולה בשפת C, ומטעמי נוחות.
 
השפה תומכת בלולאות while ו-for each, פקודות תנאי, ומבני בקרה switch.
=== משתנים ===
בשפה ניתן להצהיר על משתנים על ידי כתיבת הפקודה:
שורה 32 ⟵ 34:
בניגוד בולט לשפת C, מספור האיברים ברשימה מתחיל מהמספר 1 ולא 0.<br />
הביטוי list#$ מחזיר את מספר האיברים ברשימה list.
 
=== מבנה תנאי ===
בC shell ישנן שתי דרכים לכתוב תנאי (if)
*בצורה פשוטה, כאשר ישנה רק פקודה אחת בתנאי, ניתן לכתוב בשורה אחת:
<div style="direction: ltr;">
::'''if''' ( ''expression'' ) ''command''
</div>
*בצורה מורכבת, כאשר ישנן יותר מפקודה אחת, או שיש שימוש בelse, התנאי ייכתב:
<div style="direction: ltr;">
 
::'''if ( '''''expression1''''' ) then'''
:::''commands''
::'''else if ( '''''expression2''''' ) then'''
:::''commands''
::...
::'''else'''
:::''commands''
::'''endif'''
</div>
 
=== מבנה Switch ===
במבנה Switch מושווה ערך כלשהו מול רשימה של ערכים, ומתבצע סט הפקודות שאחרי הערך התואם, אם ישנו.
אם לא נמצא ערך מתאים יבוצע סט הפקודות שלאחר ערך ברירת המחדל (default) אם קיים כזה.
במבנה זה מתקיים "fallthrough": לאחר מציאת ההתאמה, יבוצעו גם כל הערכים שאחריו, אלא אם תופיע הפקודה breaksw.
בC shell ניתן להשוות מחרוזת אל מול תבנית (pattern) וכך להשיג גמישות משמעותית.
המבנה הכללי:
<div style="direction: ltr;">
::'''switch ( '''''string''''' )'''
:::'''case '''''pattern1''''':'''
::::''commands''
::::'''breaksw'''
:::'''case '''''pattern2''''':'''
::::''commands''
::::'''breaksw'''
:::...
:::'''default:'''
::::''commands''
::::'''breaksw'''
::'''endsw'''
</div>
 
=== לולאת While ===
בלולאה זו מחושב ביטוי תנאי, והלולאה מתצעת כל עוד ערכו אמת.
מבנה הלולאה:
<div style="direction: ltr;">
::'''while''' ( ''expression'' )
:::''commands''
::'''end'''
</div>
 
=== לולאת For Each ===
לולאה זו מקבלת כפרמטר רשימה ומזהה (identifier), ומבצעת סט של פקודות כאשר בכל איטרציה המזהה מתייחס לערך הבא ברשימה, לפי הסדר.
לולאה מסוג זה איננה קיימת (בצורה זו) בשפת C.
לדוגמה, רצף הפקודות:
 
<div style="direction: ltr;">
::'''foreach''' i ( ''list'' )
:::echo $i
::'''end'''
</div>
 
ידפיס אל הפלט הסטנדרטי (בדרך כלל המסך) את ערכי הרשימה, כל ערך בשורה נפרדת.
 
== ביטויים אריתמטיים ==