forked from CS234319/safot
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsteps-ex.tex
67 lines (65 loc) · 6.42 KB
/
steps-ex.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
§ תרגילים
⌘תחילת{אבגוד}
• נסה לצמצם את \עע תכנית שלום:סי עד כמה שניתן, מבלי לשנות את משמעותה.
העזר בחיפוש באינטרנט אחרי תכניות "שלום, עולם!" אחרות בשפת \סי.
• בדוק מהי התכנית הקצרה ביותר בשפת \סי שהמהדר שלך מקבל? האם ה⌘מהדר מקבל
תכנית ריקה?
• בדוק מהי התכנית הקצרה ביותר בשפת פסקל שה⌘מהדר שלך מקבל? האם ה⌘מהדר מקבל
תכנית ריקה?
• חפש את המונח sigil בויקיפדיה. מה היה המונח שהשתמשנו בו בפרק זה עבור מושג זה?
• כמה שמות ⌘מזהים שונים ניתן היה להגדיר בשפת בייסיק המתוארת בפרק זה?
• מדוע הוגבל אורכו של ⌘מזהה בשפות תכנות ישנות?
• מהו החסרון בהיתר שימוש בתוי יוניקוד כלליים במזהים?
• הסבר מדוע לא סביר שבשפת תכנות בה אין אבחנה בין אותיות גדולות לקטנות יהיה שימוש בתוי יוניקוד.
• מדוע ההיתר בקובול להשתמש במקף ב⌘מזהים לא התפשט לשפות אחרות? מדוע בכל זאת היה ניתן לעשות זאת בקובול?
• הגדרת שפות תכנות שונות עושה לעיתים שימוש במונח ⌘מונח{מילת מפתח} במקום
המונח ⌘מונח{מילה שמורה}; לעיתים נעשה שימוש במונח ⌘מונח{מילת מפתח} ללא אבחנה
הן למילים שמורות והן למזהים מוגדרים מראש. חפש רשימת מילות המפתח באחד מהמימושים של שפת פסקל.
אילו מהן הן \מונח{מזהים מוגדרים מראש} ואלו מהן הן מילים שמורות?
• הנה רשימת ה\מונח[מילה שמורה]{מילים השמורות} של שפת \סי:
\begin{quote}
\setLTR
\listingsfont\bfseries
auto break case char const continue default do double else entry enum
extern float for goto if int long register return short signed sizeof
static struct switch typedef union unsigned void volatile while
\end{quote}
מיין מילים אלו לפי הקטיגוריות הבאות: (א) מילים המיועדות לציון ⌘טיפוסים אטומיים (ב) מילים המיועדות ל⌘פקודות ביצועיות (ג) מילים המיועדת לתיאור משתנים ופונקציות. המילים \מש{sizeof} ו-\מש{enum} לא תיפולנה באף אחת מהקטיגוריות. הסבר את משמעותן.
• הנה רשימת ה\מונח[מילה שמורה]{מילים השמורות} של שפת \גאוה:
\begin{quote}
\setLTR
\listingsfont\bfseries
abstract assert boolean break byte case catch char class const continue
default do double else enum extends final finally float for goto if
implements import instanceof int interface long native new package private
protected public return short static strictfp super switch synchronized
this throw throws transient try void volatile while
\end{quote}
מיין מילים אלו לפי הקטיגוריות הבאות: (א) מילים המיועדות לציון טיפוסים אטומיים (ב) מילים המיועדות לפקודות ביצועיות (ג) מילים המיועדת לתיאור משתנים ופונקציות (ד) מילים המיועדות לתמיכה בתכנו מונחה עצמים. המילים \מש{assert}, \מש{import}, \מש{package} ו-\מש{instanceof} לא תיפולנה באף אחת מהקטיגוריות. הסבר את משמעותן.
• הסבר מדוע מעטפת פקודות כגון bash או \שי{COMMAND.COM} היא שפת תכנות.
• הסבר מדוע מעטפת פקודות לא יכולה להיות אוטרקית.
• הסבר מדוע ניתן לכתוב ⌘מילולונים ב-bash או ב-⌘שי{COMMAND.COM} מבלי להשתמש ב⌘גדר.
• הסבר מדוע שפת JavaScript היא בהכרח אוטרקית.
• הסבר את הקושי בתכנון שפת תכנות ⌘מונח{יבילה} והוליסטית.
• שפת PHP היא יחודית בכך שהשפה מקוננת בתוך סדרית HTML. הסבר כיצד נתחמות תכניות PHP, ומדוע אין צורך ב⌘מילוט במילולוני PHP בתוך תכנית HTML.
• מהם כל הטיפוסים האטומיים המוגדרים מראש בשפת פסקל?
• כיצד יש לסווג את הדקדוק של אתחול מערכים בשפת ⌘סי? ספראטיסטי? טרמיניסטי? ואולי משהו אחר?
• כיד יש לסווג את הדקדוק של רשימת הארגומנטים לפונקציה בשפת ⌘סי? ספראטיסטי? טרמיניסטי? ואולי משהו אחר?
• הוכח ששרשור של שני ⌘ביטויים אריתמטיים אינו ביטוי אריתמטי חוקי. איך קשורה טענה זו לדקדוק ליברלי?
• מדוע אין צורך ב⌘מילוט ב⌘מילולונים מספריים?
• מדוע אין צורך ב⌘מילוט במילולוני שורה?
• הסבר מדוע המונח ⌘מילולון אינו מדוייק כאשר יש שימוש ב⌘מילוט.
• איזה צורך יש ב⌘מילוט ב⌘מילולונים של תו בודד?
• כתוב ביטוי רגולרי, המוצא תו גרש המופיע בתוך ⌘מילולון בשפת פסקל.
• כתוב ביטוי רגולרי המוצא ⌘מילולון ריק בשפת פסקל.
• בכדי להחליף גרש בודד בגרשיים כפולים בתכנית "שלום, עולם!" בפסקל שלי,
כתבתי:
\תחילת{קוד}
\let\ttfamily=\listingsfont\setLTR
\verb+% sed s/\'/\"/g < hello.p > hello\".p; pc hello\".p; ./a.out+
\סוף{קוד}
מהו סימן ה⌘גדר בו השתמשתי בפקודת sed? מדוע היה עלי למלט את הגרש הבודד ואת הגרשיים הכפולים בפקודת ההחלפה?
• כיצד בונים סדרית המכילה תוים לא גרפיים בשפת פסקל?
• כתוב תכנית לא ריקה המדפיסה את עצמה בשפת \סי.
• קיימות מספר שפות תכנות בהן כל קטע תכנית לא חוקי נחשב כהערה. אתר שפות אלו, והסבר מדוע בחרו מתכנני השפות בדקדוק הערות זה.
⌘סוף{אבגוד}