幺妹是什么意思| 幽门螺杆菌阴性是什么意思| 幽门螺旋杆菌的症状吃什么药| 胎盘早剥是什么意思| 昭是什么意思| ira是什么品牌| 眼皮红肿是什么原因引起的| 低密度脂蛋白胆固醇偏低是什么意思| 玉对人体有什么好处| 一带一路指的是什么| 什么颜色的床单有助于睡眠| 什么嘴什么舌| ol什么意思| 直接胆红素高是什么病| 鹦鹉叫什么名字好听| 料油是什么油| 肝弥漫性病变是什么意思| 旧人是什么意思| 256排ct能检查什么病| 炖鸡肉放什么调料| 火腿是什么动物的腿| 蓟是什么意思| 九出十三归是什么意思| 抽烟为什么会头晕| 武火是什么意思| 凌霄什么意思| 水印是什么意思| 林五行属什么| 酸儿辣女什么意思| 殊荣是什么意思| 噩耗是什么意思| 高压氧是什么| 91是什么意思| 上海市市长是什么级别| 旅行的意义是什么| 女人排卵期什么时候| 并驾齐驱什么意思| 执迷不悟是什么生肖| 碳酸钙俗称什么| 防晒衣什么品牌好| 马属相和什么属相最配| 谨遵医嘱是什么意思| 感冒吃什么饭菜比较好| 很low是什么意思| 尿出红色的尿是什么原因| 宫颈鳞状上皮增生是什么意思| 抽动症是什么原因造成的| 献血前要注意什么| 龋坏是什么意思| 三羊开泰是什么生肖| 脑梗不能吃什么| 外阴炎什么症状| 给男朋友买什么礼物比较好| 推辞是什么意思| hs医学上是什么意思| 阿尔茨海默症是什么| 衣锦还乡是什么意思| 黄褐斑内调吃什么药| 溦是什么意思| 幼犬吃什么| 什么人群不适合吃阿胶糕| 坐飞机要带什么证件| 胃胀呕吐是什么原因| 78年属什么| 阴道流黄水是什么病| 马克笔什么牌子好| 小孩铅过高有什么症状| 高线是什么| 促黄体生成素是什么| 血沉高是什么意思| 吃b族维生素有什么好处| 卵泡不破是什么原因| 积食是什么症状| 农历五月二十一是什么星座| 足内翻是什么样子的| 女人大腿内侧黑是什么原因引起的| 心律不齐什么症状| 受益匪浅的意思是什么| 停经吃什么能来月经| 宝玑手表是什么档次| 后背一推就出痧是什么原因| adp是什么意思| 实至名归是什么意思| 低烧什么症状| 古曼童是什么| 夏天喝什么解暑| 世界上有什么花| 被cue是什么意思| 男生生日送什么礼物好| 什么时候量血压最准确| 湿气重的人吃什么好| 7什么意思| skp什么意思| 亚临床甲亢是什么意思| 肝脏挂什么科| 胆固醇高不能吃什么| 空调睡眠是什么意思| 铅中毒什么症状| 呼吸短促是什么原因| 诸葛亮是个什么样的人| 是故是什么意思| 戊是什么生肖| 举措前面搭配什么| 蓬头垢面是什么意思| 小孩吃什么提高免疫力| 什么园| 猝死是什么原因造成的| crp高是什么意思| 贤良淑德后半句是什么| 维生素c是补什么的| 火碱是什么东西| z值是什么意思| 半月板后角变性什么意思| 木吉他什么牌子比较好| 歧视什么意思| 夏朝前面是什么朝代| 血糖高不能吃什么食物| 轴位什么意思| 风湿性心脏病是什么原因引起的| 三合局是什么意思| 伟五行属什么| 办理港澳通行证需要什么材料| 放是什么偏旁| 一热就咳嗽是什么原因| 父亲节该送什么礼物| 梦魇是什么原因造成的| 蛇喜欢吃什么食物| 阴阳数字是什么数| 肝郁化火是什么意思| 什么是金融行业| 做梦梦见前男友是什么意思| 测试你是什么样的人| 肌无力吃什么药最好| 熹字五行属什么| 靶点是什么意思| 假牛肉干是什么做的| 什么叫元素| 梦见被蛇追是什么意思| 光什么夺目| 为什么下雨后会出现彩虹| 保育是什么意思| 盆腔积液是什么意思啊| 矿油是什么| 辜负什么意思| 风寒感冒吃什么药效果好| 宝宝流鼻血是什么原因| 什么啤酒劲最大| 荷叶又什么又什么| 黑曼巴是什么意思| 副县长是什么级别| 好女人的标准是什么| 具备是什么意思| 痤疮是什么| 打哈欠是什么原因| 迷走神经是什么| 嗓子疼吃什么药好| 低度cin病变是什么意思| 109是什么意思| 账单日是什么意思| 血压低什么症状| 有容乃大是什么意思| 小孩流口水是什么原因| 微光是什么意思| 胸片是什么| 红斑狼疮是什么症状| 勾践姓什么| 氟哌酸又叫什么名字| 梦见和死人一起吃饭是什么意思| 92年属什么| 检查心脏挂什么科| 低压太低是什么原因| 阿尔马尔是什么药| 时间短吃什么药| classic什么意思| 半夜脚抽筋是什么原因| 嫁给香港人意味着什么| zoom是什么| 为难是什么意思| 血管堵塞吃什么好| 714什么星座| 枸杞喝多了有什么坏处| ap手表是什么牌子| 什么生肖最好| 来例假吃什么水果| 属龙的守护神是什么菩萨| 深井冰是什么意思| 吃葱有什么好处和坏处| 胃胀吃什么| 女人的网名叫什么好听| 尿常规红细胞高是什么原因| 小伙子是什么意思| 梦见打井是什么意思| 故事梗概是什么意思| 宝宝便秘吃什么| 屿是什么意思| 什么米好吃又香又软| 中意你是什么意思| 离婚需要带什么证件| 来大姨妈喝红糖水有什么作用| spect是什么检查| 猴子怕什么| 245是什么意思| 机关党委是干什么的| 咳嗽想吐是什么原因| 刑妻克子是什么意思| 孕期长痘痘是什么原因| 咖色是什么颜色| 每天坚持黄瓜敷脸有什么效果| 鼻子出血挂什么科| 轻浮的女人是什么意思| 姑息治疗是什么意思| 结肠炎吃什么药最见效| 嘴角长水泡是什么原因| 心率快吃什么中成药| 甲亢是什么症状| 腰椎骨质增生是什么意思| 木耳和什么不能一起吃| 什么字笔画最多| 丝状疣是什么原因长出来的| 吃无花果干有什么好处| 唐老鸭叫什么名字| 璨字五行属什么| 农业户口和居民户口有什么区别| 孝顺的真正含义是什么| 子宫肌瘤变性是什么意思| 湿疹是什么病| 子宫切除后要注意什么| 脑梗塞吃什么食物好| 财源广进是什么生肖| 休克疗法是什么意思| 节育是什么意思| 胃疼吃什么药| 除湿气喝什么茶| 葛根泡水有什么功效| 县公安局局长什么级别| 百香果有什么功效与作用| 菩提是什么材质| a1代表什么意思| 痛风吃什么水果最好| 头发是什么组织| 456什么意思| 塞翁失马是什么意思| 五月十五是什么星座| 门牙下面的牙叫什么| 双飞是什么生肖| 反射弧长是什么意思| 此什么非彼什么的意思| 一唱一和是什么生肖| 胆汁反流用什么药| 为什么想到一个人会心痛| 彩虹是什么形状| 八哥吃什么食物| 什么是签注| 手麻是什么病的前兆| 儿童急性肠胃炎吃什么药| 宫颈癌什么症状| 为什么体检要空腹| 小孩肚子疼拉肚子吃什么药| 婴儿湿疹用什么药膏| 长相厮守是什么意思| 2月13号是什么星座| 慢是什么意思| 什么是针灸| 日有所思夜有所梦是什么意思| 百度Przejd? do zawarto?ci

京冀共建密云上游生态清洁小流域 促农民增收

Z Wikipedii, wolnej encyklopedii
Forth
Pojawienie si? 百度   如果去有小婴儿的家庭走亲访友,也可送上“苍猊犬包屁衣”。

1970

Paradygmat

proceduralny, zorientowane stosowo, refleksyjny, concatenative

Typowanie

brak

Implementacje

SwiftForth (Forth, Inc.)
Gforth (Free software)
VFX Forth (MicroProcessor Engineering)

Twórca

Charles H. Moore

Strona internetowa

Forthj?zykiem programowania wysokiego poziomu, nale??cy jednocze?nie do kategorii j?zyków tzw. bliskich sprz?towi, czasem (potocznie) u?ywa si? okre?lenia asemblerowy j?zyk programowania wysokiego poziomu.

Charakterystyka j?zyka Forth

[edytuj | edytuj kod]

Do cech charakterystycznych tego j?zyka nale??:

  • natychmiastowa interpretacja wprowadzonych s?ów,
  • natychmiastowa kompilacja definicji nowych s?ów,
  • wykonywanie operacji za po?rednictwem stosu,
  • zapis wyra?eń arytmetycznych w odwrotnej notacji polskiej.

Specyfika j?zyka sprawia, ?e jest to j?zyk dla specjalistów, g?ównie z dziedziny automatyki. Jego g?ówne zastosowania to systemy czasu rzeczywistego i sterowanie urz?dzeniami.

Twórc? j?zyka jest Amerykanin Charles H. Moore, który stworzy? pod koniec lat 60. pierwsz? jego implementacj?.

Program napisany w Forth sk?ada si? z sekwencji s?ów rozdzielonych separatorami (jeden ze znaków: spacja, znak o kodzie zero #0, powrót karetki #13). S?owa pami?tane s? w s?owniku, w którym mo?na tworzy? pods?owniki i dowolnie je rozszerza? (a? do granic mo?liwo?ci systemu komputerowego). Nowo definiowane s?owa s? natychmiast kompilowane i gotowe do u?ycia.

Specyfika tego j?zyka prowadzi do programowania od do?u do góry (od szczegó?u do ogó?u).

Interpreter i kompilator

[edytuj | edytuj kod]

W trakcie swojego dzia?ania interpreter j?zyka mo?e znajdowa? si? w jednym ze stanów:

  • definiowania,
  • wykonywania.

Je?eli Forth znajduje si? w stanie wykonywania, wprowadzane s?owa s? natychmiast interpretowane i wykonywane. W?ród s?ów j?zyka Forth znajduj? si? s?owa, tzw. kompilatory (w nomenklaturze Forth), standardowe (np. ?:”, ?CONSTANT”) lub zdefiniowane przez programist?, które powoduj? przej?cie systemu w stan definiowana. W tym stanie kolejne s?owa s? traktowane jako cz??? definicji nowego – w?a?nie definiowanego – s?owa, a? do napotkania s?owa kończ?cego definicj? (standardowo ?;”). Taka definicja podlega kompilacji, a nowo zdefiniowane s?owo umieszczone zostaje w s?owniku.

S?owa j?zyka mog? nale?e? do kategorii:

  • operatorów biernych,
  • operatorów czynnych (które wykonywane s? tak?e wtedy, gdy interpreter znajduje si? w stanie definiowania, chyba ?e programista u?yje s?owa, które spowoduje umieszczenie w polu nowej definicji adresu tego operatora zamiast jego wykonanie).

Kompilatory

[edytuj | edytuj kod]

Poj?cie kompilatora w Forth

[edytuj | edytuj kod]

Kompilatorem (w nomenklaturze Forth), nazywa si? s?owo, które powoduje przej?cie systemu Forth w stan definiowania, zinterpretowanie najbli?szego s?owa jako nazwy nowego operatora (s?owa j?zyka Forth) i w konsekwencji skompilowanie kolejnych s?ów zawartych w aktualnie przetwarzanej definicji wed?ug zadanych (zawartych w definicji kompilatora) instrukcji oraz umieszczenie nowego s?owa w s?owniku (ewentualnie w pods?owniku).

W Forth wbudowane s? standardowe kompilatory, takie mi?dzy innymi jak: ?:” – podstawowy kompilator operatorów, ?CONSTANT” – definiowanie sta?ych i inne. Programista ma tak?e mo?liwo?? definiowania w?asnych kompilatorów.

 (POTEGA 3; a -- b)
POW DUP DUP * *;
 5 POW

Zdefiniowano operator bierny POW, który jest podprogramem w rozumieniu ?tradycyjnych” j?zyków programowania – podniesienie do 3 pot?gi, który zostaje skompilowany i umieszczony w s?owniku. Po tej operacji mo?e by? u?ywany tak jak s?owa standardowe. Umieszczenie na stosie liczby 5 (w stanie wykonywania) i wykonanie operatora POW powoduje umieszczenie na stosie wyniku operacji (5*5*5). Podprogram taki nie definiuje parametrów, pobiera po prostu okre?lon? w jego definicji liczb? argumentów ze stosu. Cz?sto stosowan? konwencj? jest umieszczenie w komentarzu opisu parametru (liczby pobieranych argumentów) i zwracanych na stos warto?ci (ich liczby). W powy?szym przyk?adzie, okre?lono jeden parametr ?a” (nazwa nieistotna) i jedn? warto?? stanowi?c? rezultat ?b” (nazwa nieistotna) podprogramu.

Kompilatory standardowe

[edytuj | edytuj kod]

J?zyk Forth posiada zdefiniowane kompilatory standardowe:

  • CONSTANT nazwa (a --): definicja operatora (s?owa o w?a?ciwo?ciach sta?ej) o nazwie jak najbli?sze s?owo wej?ciowe nazwa i warto?ci a pobranej ze stosu,
  • VARIABLE nazwa (a --): definicja operatora (s?owa o w?a?ciwo?ciach zmiennej) o nazwie jak najbli?sze s?owo wej?ciowe nazwa i warto?ci a pobranej ze stosu; wykonanie operatora powoduje umieszczenie adresu danej na stosie,
    nazwa s?owa_definiuj?ce ; (--): utworzenie operatorów, które mo?na przez analogi? porówna? do podprogramu w j?zykach programowania ogólnego przeznaczenia,
  • USER: podstawowy kompilator niskopoziomowy, wiele s?ów standarodwych jest utworzonych za pomoc? tego kompilatora,
  • VOCABULARY: utworzenie s?ownika.

Definiowanie kompilatorów

[edytuj | edytuj kod]

Definicja nowego kompilatora ma posta?:

nazwa
     <BUILDS
         s?owa kompiluj?ce
     DOES>
         s?owa wykonawcze

Instrukcje strukturalne

[edytuj | edytuj kod]

Wprowadzenie

[edytuj | edytuj kod]

Forth posiada, jak wi?kszo?? j?zyków programowania wysokiego poziomu, zestaw standardowych instrukcji strukturalnych umo?liwiaj?cych programowanie z?o?onych problemów i algorytmów. Jednak jego znamienn? cech? jest rozszerzalno?? przejawiaj?ca si? m.in. mo?liwo?ci? definiowania w?asnych, nowych instrukcji strukturalnych.

Standardowe instrukcje strukturalne

[edytuj | edytuj kod]
 warunek IF
   instrukcje wykonywane gdy warunek spe?niony
 [ELSE
   instrukcje wykonywane gdy warunek nie spe?niony]
 THEN | ENDIF

przy czym warunek jest po prostu ci?giem instrukcji j?zyka Forth, a operator IF bada czy na stosie jest warto?? ró?na od zera:

  • je?eli tak to wykonywane s? instrukcje wykonywane gdy warunek spe?niony,
  • je?eli nie to wykonywane s? instrukcje wykonywane gdy warunek nie spe?niony lub instrukcje po s?owie THEN (lub ENDIF co jest równowa?ne) je?eli fraza ELSE zosta?a pomini?ta.
   SELECT KEY 10 =
     IF
         +
     ELSE
         *
     THEN;
   2 3 SELECT
 przed_DO
     DO
         instrukcje
     LOOP | +LOOP
 po_LOOP

Operator DO ustala (na podstawie warto?ci ze stosu) dwa parametry iteracji: ograniczenie – warunek zakończenia, oraz warto?? pocz?tkow?. Dla s?owa LOOP krok wynosi +1, dla +LOOP warto?? kroku pobierana jest ze stosu, przy czym mo?e to by? warto?? ujemna. Cykl wykonywany jest co najmniej jednokrotnie, gdy? sprawdzenie warunku wykonywane jest na końcu. Operator I udost?pnia warto?? zmiennej steruj?cej cyklem.

 CIAG
   10 2 DO
     I. 2
   +LOOP;
 (wyprowadzenie liczb 2 4 6 8)
  • instrukcja repetycyjna
 BEGIN
   przed_WHILE WHILE
   po_WHILE
 REPEAT

Po wykonaniu przed_WHILE operator WHILE sprawdza warto?? na stosie, je?eli jest to zero to kończy instrukcj? REPEAT, je?eli nie to wykonywane jest po_WHILE a operator REPEAT powoduje skok do BEGIN i powtórzenie cyklu.

 WAINT_SP
   BEGIN
     KEY 32 = 0= WHILE
   REPEAT
 BEGIN
   instrukcje
 AGAIN

Definiowanie w?asnych instrukcji strukturalnych

[edytuj | edytuj kod]

J?zyk ten umo?liwia definiowanie w?asnych instrukcji strukturalnych przy pomocy operatorów skoków warunkowych i bezwarunkowych 0BRANCH i BRANCH.

Stosy w systemie j?zyka Forth

[edytuj | edytuj kod]

System Forth pos?uguje si? dwoma stosami:

  • stosem parametrów,
  • stosem powrotów.

Stos parametrów

[edytuj | edytuj kod]

Stos parametrów jest to podstawowy element systemu, równie? dla u?ytkownika, na którym wykonywane s? operacje. S?u?y przede wszystkim do przekazywania argumentów operacji i przekazywania wyników operacji (podprogramów).

Stos powrotów

[edytuj | edytuj kod]

Stos powrotów w zasadzie pe?ni rol? stosu systemowego. Lista operacji podstawowych na stosie powrotów jest do?? ograniczona. Do najwa?niejszych z nich nale??:

  • >R (a --): przeniesienie danej s?owowej a ze stosu parametrów na stos powrotów,
  • R> (-- a): umieszczenie danej s?owowej a na stosie parametrów ze stosu powrotów,
  • R (-- a): skopiowanie danej s?owowej a na stosie parametrów ze stosu powrotów,
  • RP! (--): usuni?cie wszystkich danych ze stosu powrotów,
  • RP@ (-- a): umieszczenie na stosie parametrów adresu szczytu stosu powrotów,
  • R0 (-- a): umieszczenie na stosie parametrów adresu pustego stosu powrotów (pocz?tku).

Jak wida? s? to g?ównie operacje steruj?ce, s?u??ce nast?puj?cym celom (dla których przeznaczony jest stos powrotów):

  • przechowywanie ?ladów wzajemnych wywo?ań operatorów (podprogramów),
  • przechowywanie parametrów instrukcji strukturalnych,
  • pomocniczy stos roboczy dla danych,
  • chwilowa pami?? podr?czna dla u?ytkownika (programisty),
  • inne.

System j?zyka Forth automatycznie wykorzystuje stos powrotów do przechowywania licznika interpretera IP steruj?cego wywo?ywaniem kolejnych s?ów (jako podprogramów).

S?ownik

[edytuj | edytuj kod]

S?ownik w j?zyku Forth skupia w sobie wszystkich zdefiniowane i dost?pne do u?ycia s?owa. Jest on struktur? drzewiast?, podzielon? na pods?owniki, które mog? by? podzielone na kolejne pods?owniki, przy czym g?ówny s?ownik nosi nazw? FORTH i skupia podstawowe operacje w tym zdefiniowane w kodzie maszynowym. Dodatkowo zwykle definiowane s? tak?e:

Zawsze jeden s?ownik jest s?ownikiem bie??cym, od którego rozpoczyna si? poszukiwanie definicji s?owa. Bezpo?rednio po uruchomieniu bie??cym jest s?ownik FORTH. Operacje s?ownikowe:

  • VOCABULARY nazwa IMMEDIATE: zdefiniowanie nowego s?ownika (w bie??cym s?owniku definiowania),
  • nazwa: ustalenie bie??cego s?ownika,
  • CONTEXT: zmienna przechowuj?ca odniesienie do bie??cego s?ownika,
  • nazwa DEFINITIONS: zmiana s?ownika definiowania,
  • CURRENT: zawiera odniesienie do bie??cego s?ownika definiowania.

Nale?y zauwa?y?, ?e przy takiej organizacji mo?na definiowa? wielokrotnie to samo s?owo w ró?nych s?ownikach w ró?ny sposób, a to, która definicja zostanie u?yta, zdeterminowane b?dzie kolejno?ci? przeszukiwania s?owników. Mo?na to uzna? za rodzaj przeci??ania nazw.

Zobacz te?

[edytuj | edytuj kod]

Bibliografia

[edytuj | edytuj kod]
拉谷谷女装什么档次的 从来就没有什么救世主 七月九号是什么日子 什么水果是降火的 腌羊肉串放什么调料
临终关怀的目的是什么 pe什么材质 吃什么能去湿气最好 什么桃子 长期大便不成形是什么原因造成的
水果都有什么 锁钥是什么意思 头很容易出汗什么原因 粘液丝高是什么原因 夺嫡是什么意思
老打饱嗝是什么原因 脑梗吃什么鱼最好 过敏是什么原因引起的 夏天什么面料的衣服最舒服 blub是什么意思
宫颈多发囊肿是什么意思dayuxmw.com 09年的牛是什么命hcv8jop7ns4r.cn 放屁臭吃什么药sanhestory.com 剪短发什么发型好看hcv8jop7ns9r.cn 1994年是什么年hcv8jop5ns5r.cn
医院属于什么性质的单位hcv8jop5ns0r.cn 口苦口干吃什么药最好hcv9jop3ns1r.cn hpv12种高危型阳性是什么意思hcv8jop6ns1r.cn 间歇性跛行见于什么病hcv9jop5ns6r.cn 女人白虎是什么意思hcv9jop4ns3r.cn
肺结节是什么病hcv9jop2ns4r.cn 哈密瓜什么时候成熟hcv9jop2ns6r.cn 细胞是什么cj623037.com 主页是什么意思creativexi.com 宫颈萎缩意味着什么hcv9jop2ns7r.cn
放疗后不能吃什么cl108k.com 宫颈醋酸白色上皮是什么病变hcv9jop0ns3r.cn 青蛙吃什么东西hcv9jop4ns7r.cn 贫血吃什么补血好liaochangning.com 女人肾虚吃什么药调理hcv9jop1ns8r.cn
百度