Skip to content

Commit

Permalink
sync
Browse files Browse the repository at this point in the history
  • Loading branch information
yossigil committed Nov 19, 2019
1 parent 4a57e8f commit d81180c
Show file tree
Hide file tree
Showing 19 changed files with 2,076 additions and 412 deletions.
37 changes: 36 additions & 1 deletion 00.sty
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
\usepackage{enumitem}
\usepackage{fancyhdr}
\usepackage{float}
\usepackage{forest}
\usepackage{fontspec}
\usepackage{geometry}
\usepackage{glossaries}
Expand Down Expand Up @@ -73,6 +74,10 @@

\catcode"2318=13
\def⌘#1{\text{\LRE{\ttfamily\bfseries\textcolor{olive}{\LRE{#1}}}}}
\def\E|#1|{\LR{{#1}}}
\def\A|#1|{\E|\ttfamily#1|}
\def\T|#1|{|\ttfamily#1|}
\def|#1|{{\bfseries#1}}

\crefname{equation}{}{}
\crefname{definition}{הגדרה}{הגדרות}
Expand Down Expand Up @@ -291,5 +296,35 @@ colframe=red!75!black}




\usepackage{tikz}
\usetikzlibrary{calc}
\forestset{%
s tree/.style={
for tree={
circle,
s sep'+=-3pt,
fit=band,
},
},
cons/.style={draw,edge},
atom/.style={},
nil/.style={circle,inner sep=-6pt,fill=white,nice empty nodes,tikz={\draw [rotate=-160,scale=0.44]
\pgfsetlinewidth{6\pgflinewidth} % thickness
($(.center)!0.2!(!parent)$)
coordinate (o)
(o)++(-0.520,0) --++(1.04,0)
% (o)++(-4,1) -- ++(8,0)
(o)++(-0.380,.180) -- ++(.760,0)
% (o)++(-2,3) --++(4,0)
(o)++(-0.180,0.360) --++(0.360,0)
;}},
}


\forestset{
nice empty nodes/.style={
for tree={calign=fixed edge angles},
delay={where content={}{shape=coordinate,for siblings={anchor=north}}{}}
}
}

2 changes: 1 addition & 1 deletion JVM.tex
Original file line number Diff line number Diff line change
Expand Up @@ -778,7 +778,7 @@


הסבר את הודעת השגיאה המתקבלת. כעת בצע
\LR{javac -verbose First.java}
\E|javac -verbose First.java|
וחזור והדר את User.java.
הסבר מדוע ההודעה נעלמה.

Expand Down
21 changes: 21 additions & 0 deletions a-star-c.tikz
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
\begin{tikzpicture}[every node/.style={shape=circle,
draw, align=center,
top color=red!10, bottom color=blue!20}]
\usetikzlibrary{trees,chains}
\begin{scope}[start chain=growing right,minimum size=2em]
\node[on chain,circle,draw]{$;$} child {%
node{$*$}
child{node{$|$}
child{node{$ab$}}
child{node{$c$}}}
}
child{node{$*$} child{node{$b$}}};
\node[on chain,circle,draw,xshift=8ex]{$*$}
child {
node{$|$}
child {node{$a$}}
child {node{$|$} child{node{$ε$}} child{node{$c$}}}
}
;
\end{scope}
\end{tikzpicture}
40 changes: 11 additions & 29 deletions binding.tex
Original file line number Diff line number Diff line change
@@ -1,55 +1,51 @@
"אין זה איבר, גלגל, אף לא כפתור! וכי מה יש בו בשם?", את עשויה לתמוה.
"וזה אשר נקרא בשם זנב, האם לרגל יחשב, אם כך נקרא לו סתם פתאום?"

"אין זה איבר, גלגל, אף לא כפתור! וכי מה יש בו בשם?", את עשויה לתמוה. "וזה אשר
נקרא בשם זנב, האם לרגל יחשב, אם כך נקרא לו סתם פתאום?"

§ ישויות לעומת שמות
לכולנו ברור כי יש להבחין בין ישות ובין שמה.
יש דבר מה חמקמק בהבחנה שאני רוצה
יש דבר מה חמקמק בהבחנה שאני רוצה
⌘תחילת{ספרור}
• יש ישויות ללא שם - ישויות אנונימיות.
• יש שמות ללא ישויות - שמות שלא נקשרו לישויות.
• יתכן שלישות אחת יהיו מספר שמות.
• יתכן ששם אחד יתייחס למספר ישויות (למשל שם פונקציה ושם משתנה בשפת java, למשל overloading
• יש שמות שאינם חשובים: נקודות בתכנית שבהם יש חובה לתת שם, אבל השם עצמו חסר חשיבות. למשל
_ בפרולוג או whatever ב METAPOST.
• יש שמות שאינם חשובים: נקודות בתכנית שבהם יש חובה לתת שם, אבל השם עצמו חסר
חשיבות. למשל _ בפרולוג או whatever ב-METAPOST.
⌘סוף{ספרור}

⌘תחילת{תכנית}
\bash
cat << EOF > echo.c
#include <stdio.h>

typedef char *strings_t[];
typedef char *stringsₜ[];

void print_strings(strings_t ss) {
void printₛtrings(stringsₜ ss) {
for (; *ss; ss++)
printf("%s ", *ss);
printf("\n");
}

int main(int argc, char *argv[], char **envp) {
print_strings(argv);
print_strings(envp);
printₛtrings(argv);
printₛtrings(envp);
return 0;
}
EOF
\END
⌘setLTR
⌘lstinputlisting[language=C++,style=Numbered]{_00/echo.c}
⌘lstinputlisting[language=C++,style=Numbered]{₀0/echo.c}

⌘כיתוב{מתן שם לטיפוס בשפת ⌘סי}
⌘תגית{תכנית:טיפוס:עם:שם:סי}
⌘סוף{תכנית}




⌘תחילת{תכנית}
\begin{CPPn}
struct {
const char *name;
const char *action;
} commands[] = {
} commands[]={
};
\end{CPPn}
⌘כיתוב{הגדרת טיפוס אנונימי בשפת ⌘סי}
Expand All @@ -63,17 +59,3 @@
§ יצירת ישויות אנונימיות

§ מרחבי שמות














14 changes: 10 additions & 4 deletions character-encoding.tex
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
§ מהו קידוד?
במרבית שפות התכנות, הטיפוס ונח{תו}, כמו הטיפוס ונח{מספר שלם} הוא ונח{טיפוס אטומי}: כלומר, זהו טיפוס שהוא אקסיומה של מערכת הטיפוסים, ואשר משמש הן בפני עצמו, והן לבניית טיפוסים באמצעות בנאי הטיפוסים. כזכור, לטיפוס יש מספר תפקידים, ובהם קביעת משמעות של פעולות, קביעת חוקיות של פעולות, סיווג נתונים ועוד.
במרבית שפות התכנות, הטיפוס ונח{תו}, כמו הטיפוס ונח{מספר שלם} הוא
ונח{טיפוס אטומי}: כלומר, זהו טיפוס שהוא אקסיומה של מערכת הטיפוסים, ואשר משמש
הן בפני עצמו, והן לבניית טיפוסים באמצעות בנאי הטיפוסים. כזכור, לטיפוס יש מספר
תפקידים, ובהם קביעת משמעות של פעולות, קביעת חוקיות של פעולות, סיווג נתונים
ועוד.

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

יוזכר כי י{Type Punning} הוא הפרת הקידוד, כלומר עקיפת כללי התרגום שבין הערך לבין הייצוג שלו כסדרת ביטים. מעקף כזה יכול להתבצע באמצעות
חל{ציינון}
יוזכר כי י{Type Punning} הוא הפרת הקידוד, כלומר עקיפת כללי התרגום שבין הערך
לבין הייצוג שלו כסדרת ביטים. מעקף כזה יכול להתבצע באמצעות חל{ציינון}
✦ פירוש סדרת ביטים שלא בדרך שבה היא קודדה, לדוגמה,
חל{ציינון}
✦ פירוש ערך של מצביע בן 64 ביטים, כמספר בנקודה צפה בשיטת הקידוד של המשלים לאחד
Expand Down
Loading

0 comments on commit d81180c

Please sign in to comment.