完整編程系統
1. 2022年以及未來幾年編程語言將走向何方
在任何時候,我都希望擺脫對文本語言的依賴。這部分是由於 1950 年代後期和 1960 年代的語言研究,其中研究了啟中形式語法技術,但基於文本。
程序員現在只考慮文本。一些語言取得了突破,例如 Smalltalk 和 Hypercard。Smalltalk 承擔了文本的很多復雜性,並將程序的整體結構置於文件系統、瀏覽器和編輯器的環境中。
我們還開始了電子表格中的函數式編程系統,其中每個單元格代表一個基於立即值的函數或其他單元格中的函數。
因此,電子表格可以被視為一個完整的編程系統。
然而,電子表格只是一種方式,對於一般編程(自己編寫電子表格程序),我們需要更通用的方式,比如 Smalltalk。
文本是線性和二維的,但程序是圍繞更復雜的維度構建的。基於文本的編程的難虧鍵點在於將多維映射到二維。
許多程序員考慮使用文本編輯器進行編程(vi 和 emacs 是糟糕的例子),但我們應該使用程序編輯器,以便在沒有基於文本的滾動的情況下輕松訪問系統中的「遠程」定義。大多數 IDE 對此感到失望,因此我們也需要超越 IDE。
我們應該將超文本的鼻祖 Ted Nelson 的思想應用到編程中。
文本只能用於程序中執行某些操作的部分(功能),而不應用於整個系統的結構或框架。
一句話提醒。當我說我們應該從 1960 年代基於文本的思維中解放出來時,我們應該只拋棄文本,我們應該將結構化思維保留在語法背後,尤其是指稱和公理語義中基於語義的語言定義。這些先進技術的應用使編程變得足夠簡單,可供我們其他人使用。
這樣做的一個重要影響是語言和風格之戰可以成為過去。編程基於程序的語義(以前的中間分析樹),可以以不同語言和風格的幾種視圖呈現給任何程序員的口味。
但首先,我們需要擺脫許多程序員的心理偏見,他們認為他們採用的語言在某種程度上是神奇的。這在很大程度上是幾十年來糟糕的教學和認為編程必須是一種特殊方式的人的結銷旁巧果。我們需要改變整個行業的態度。
計算和編程是關於探索的。我們應該恢復這種探索的感覺和興奮,拋棄過去奄奄一息的基於文本的語言。
2. 食堂就餐餐費管理系統C語言編程
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include<malloc.h>
typedef struct node1
{
char name[10];
int xuehao;
char nianling[10];
char xingbie[10];
char xueyuan[10];
int chanfei;
node1 *next;
}lnode1,*linklist1;
typedef struct node2
{
char mingcheng[10];
int jiage;
node2 *next;
}lnode2,*linklist2;
void luru(linklist1 h,linklist2 k)
{
int i,j;
i=1;j=1;
lnode1 *a;
lnode2 *b;
while(i!=0)
{
a=(linklist1)malloc(sizeof(lnode1));
printf("請輸入學號:");
scanf("%d",&a->xuehao);
fflush(stdin);
printf("請輸入姓名:");
gets(a->name);
fflush(stdin);
printf("請輸入年齡:");
gets(a->nianling);
fflush(stdin);
printf("請輸入性別:");
gets(a->xingbie);
fflush(stdin);
printf("請輸入學院:");
gets(a->xueyuan);
printf("請輸入已消費的餐費:");
scanf("%d",&a->chanfei);
a->next=h->next;
h->next=a;
printf("是否繼續 1 繼續 0 停止\n");
scanf("%d",&i);
}
while(j!=0)
{
b=(linklist2)malloc(sizeof(lnode2));
printf("請輸入餐名:");
fflush(stdin);
gets(b->mingcheng);
fflush(stdin);
printf("請輸入餐價:");
scanf("%d",&b->jiage);
b->next=k->next;
k->next=b;
printf("是否繼續 1 繼續 0 停止\n");
scanf("%d",&j);
}
}
void put(linklist1 h)
{
linklist1 a;
a=h->next;
while(a!=NULL)
{
printf("%d",a->xuehao);
a=a->next;
}
}
void jiuchan(linklist1 h,linklist2 k)
{ char a[10];int b,d=1,c=1;
printf("你要買什麼:");
scanf("%s",a);
lnode1 *p ;
lnode2 *q;
p=h->next;
q=k->next;
while(q!=NULL&&d==1)
{printf("hao1");
if(strcmp(a,q->mingcheng)!=0)
q=q->next;
else
{
printf("請輸入你的學號:");
scanf("%d",&b);
while(p!=NULL&&c==1)
{
if (p->xuehao!=b)
p=p->next;
else
{
printf("共花費%d元\n",q->jiage);
p->chanfei=p->chanfei+q->jiage;
c=0;
}
}printf("若沒有結果,則你的學號有誤\n");
d=0;
}
}
printf("你輸入的飯菜我們沒有呀\n");
}
void chaxun(linklist1 h)
{
int i,d=1;
printf("請輸入你要查尋得學號:\n");
scanf("%d",&i);
lnode1 *p;
p=h->next;
while(p!=NULL&&d==1)
{printf("hao1");
if (p->xuehao!=i)
{
p=p->next;
}
else
{
printf("hao1");
printf("本月以消費 %d\n",p->chanfei);
d=0;
}
}
printf("若沒有結果,則你的學號有誤\n");
}
void main()
{
int i;
linklist1 h;linklist2 k;
h=(linklist1)malloc(sizeof(lnode1));h->next=NULL;
k=(linklist2)malloc(sizeof(lnode2));k->next=NULL;
for(i=0;i<100;i++)
{
printf("歡迎來到本食堂就餐:\n");
printf("請輸入你的命令:\n");
printf("************1************錄入信息\n");
printf("************2************付費\n");
printf("************3************查詢\n");
scanf("%d",&i);
switch(i)
{
case 1:printf("請輸入學生和食譜信息:\n");
luru( h, k);
put(h);
printf("hao");
break;
case 2:printf("進入就餐系統\n");
jiuchan(h,k);break;
case 3:printf("歡迎進入餐費查詢系統:\n");
chaxun(h);break;
}
}
}
沒問題 我就不注釋了 花了30分鍾啊
3. 急求數控車床編程的完整編程
數控車床編程教程,圖文實例詳解,這套資料就夠
需要下載該文檔的朋友,請私信小編,回復「008」即可下載。
第一節數控車床編程基礎
一、數控車編程特點
(1) 可以採用絕對值編程(用X、Z表示)、增量值編程(用U、W表示)或者二者混合編程。
(2) 直徑方向(X方向) 系統默認為直徑編程,也可以採用半徑編程,但必須更改系統設定。
(3) X向的脈沖當量應取Z向的一半。
(4)採用固定循環,簡化編程。
(5) 編程時,常認為車刀刀尖是一個點,而實際上為圓弧,因此,當編制加工程序時,需要考慮對刀具進行半徑補償。
二、數控車的坐標系統
加工坐標系應與機床坐標系的坐標方向一致,X軸對應徑向,Z軸對應軸向,C軸(主軸)的運動方向則以從機床尾架向主軸看,逆時針為+C向,順時針為-C向,如圖2.1.1所示:
加工坐標系的原點選在便於測量或對刀的基準位置,一般在工件的右端面或左端面上。
圖2.1.1數控車床坐標系
三、直徑編程方式
在車削加工的數控程序中,X軸的坐標值取為零件圖樣上的直徑值,如圖2.1.2所示:圖中A點的坐標值為(30,80),B點的坐標值為(40,60)。採用直徑尺寸編程與零件圖樣中的尺寸標注一致,這樣可避免尺寸換算過程中可能造成的錯誤,給編程帶來很大方便。
圖2.1.2 直徑編程
四、進刀和退刀方式
對於車削加工,進刀時採用快速走刀接近工件切削起點附近的某個點,再改用切削進給,以減少空走刀的時間,提高加工效率。切削起點的確定與工件毛坯餘量大小有關,應以刀具快速走到該點時刀尖不與工件發生碰撞為原則。如圖2.1.3所示。
圖2 .1.3切削起始點的確定
五、絕對編程與增量編程
X、Z表示絕對編程,U、W表示增量編程,允許同一程序段中二者混合使用。
圖2 .1.4 絕對值編程與增量編程
如圖2.1.4所示,直線A→B ,可用:
絕對: G01 X100.0 Z50.0;
相對: G01 U60.0 W-100.0;
混用: G01 X100.0 W-100.0;
或 G01 U60.0 Z50.0;
第2節數控車床的基本編程方法
數控車削加工包括內外圓柱面的車削加工、端面車削加工、鑽孔加工、螺紋加工、復雜外形輪廓回轉面的車削加工等,在分析了數控車床工藝裝備和數控車床編程特點的基礎上,下面將結合配置FANUC-0i數控系統的數控車床重點討論數控車床基本編程方法。
一、坐標系設定
編程格式G50 X~ Z~
式中X、Z的值是起刀點相對於加工原點的位置。G50使用方法與G92類似。
在數控車床編程時,所有X坐標值均使用直徑值,如圖2.1.5所示。
例:按圖2.1.5設置加工坐標的程序段如下:
G50 X 121.8 Z 33.9
圖2.1.5 G50設定加工坐標系
工件坐標系的選擇指令G54~G59
圖2.1.6 G54設定加工坐標系
例如,用G54指令設定如圖所示的工件坐標系。
首先設置G54原點偏置寄存器:
G54 X0 Z85.0;
然後再在程序中調用:
N010 G54;
說明:
1、G54~G59是系統預置的六個坐標系,可根據需要選用。
2、G54~G59建立的工件坐標原點是相對於機床原點而言的,在程序運行前已設定好,在程序運行中是無法重置的。
3、G54~G59預置建立的工件坐標原點在機床坐標系中的坐標值可用 MDI 方式輸入,系統自動記憶。
4、使用該組指令前,必須先回參考點。
5、G54~G59為模態指令,可相互注銷。
二、基本指令G00、G01、G02、G03、G04、G28
1.快速點位移動G00
格式:G00X(U)_Z(W)_;
其中,X(U)_、Z(W)_為目標點坐標值。
2.直線插補G01
格式:G01 X(U)_Z(W)_ F_;
其中,X(U)、Z(W)為目標點坐標,F為進給速度。
機床執行G01指令時,如果之前的程序段中無F指令,在該程序段中必須含有F指令。G01和F都是模態指令。
3.圓弧插補G02、G03
順時針圓弧插補用G02指令,逆時針圓弧插補用G03指令。
1) 用圓弧半徑R和終點坐標進行圓弧插補
格式:G18 G02(G03)X(U)_Z(W)_ R _ F_;
其中:X(U)和Z(W)為圓弧的終點坐標值,
絕對值編程方式下用X和Z,增量值編程方式下用U和W。規定圓弧對應的圓心角小於等於180°時,用「+R」表示;反之,用「-R」表示。
F為加工圓弧時的進給量。
2) 用分矢量和終點坐標進行圓弧插補
格式:G18 G02(G03)X(U)_Z(W)_I _K _F_;
其中:
X(U)和Z(W)為圓弧的終點坐標值,絕對值編程方式下用X和Z,增量值編程方式下用U和W。
I、K分別為圓弧的方向矢量在X軸和Z軸上的投影(I為半徑值)。當分矢量的方向與坐標軸的方向不一致時取負號。如圖2.1.7所示,圖中所示I和K均為負值。
圖2.1.7 圓弧指令編程
4.暫停指令G04
格式:G04 X(P)_;
其中,X(P)為暫停時間。
X後用小數表示,單位為秒;
P後用整數表示,單位為毫秒。
如 :
G04 X2.0表示暫停2秒;
G04 P1000表示暫停1000毫秒。
5.返回參考點指令G28
G28指令可以使刀具從任何位置以快速點定位方式經過中間點返回參考點。
格式:G28 X _Z _;
其中,X、Z是中間點的坐標值。
三、有關單位設定
1、尺寸單位選擇:
格式:G 20 英制輸入制式 英寸輸入
G 21 公制輸入制式 毫米輸入 (默認)
2、進給速度單位的設定
每轉進給量 編程格式 G95 F~
F後面的數字表示的是主軸每轉進給量,單位為mm/r。
例:G95 F0.2 表示進給量為0.2 mm/r。
每分鍾進給量 編程格式G94 F~
F後面的數字表示的是每分鍾進給量,單位為 mm/min。
例:G94 F100 表示進給量為100mm/min。
需要下載該文檔的朋友,請私信小編,回復「008」即可下載。
4. 學習編程都要用到哪些軟體啊
學習編程的時候選擇適當的軟體是非常重要的,那麼學習編程時用什麼軟體好呢?下面小編給大家分享一下。
操作方法
01
Notepad
對於編程的初學者來說,用Notepad這樣的記事本編輯器即可實現初期的大部分功能
02
Sumlime Text
當進入到編程學習的中級階段的時候,就可以用一些靈活可擴展的編輯軟體了,Sublime Text就是這樣的軟體
03
Eclipse
接下來進入編程的熟練階段以後就可以運用集成開發環境了,Eclipse是一款比較不錯的集成開發軟體