編程演算法教程
圖的遍歷是指按某條搜索路徑訪問圖中每個結點,使得每個結點均被訪問一次,而且僅被訪問一次。圖的遍歷有深度遍歷演算法和廣度遍歷演算法,最近阿傑做了關於圖的遍歷的演算法,下面是圖的遍歷深度優先的演算法(C語言程序):
#include<stdio.h>
#include<malloc.h>
#define MaxVertexNum 5
#define m 5
#define TRUE 1
#define NULL 0
typedef struct node
{
int adjvex;
struct node *next;
}JD;
typedef struct EdgeNode
{
int vexdata;
JD *firstarc;
}TD;
typedef struct
{
TD ag[m];
int n;
}ALGRAPH;
void DFS(ALGRAPH *G,int i)
{
JD *p;
int visited[80];
printf("visit vertex:%d->",G->ag[i].vexdata);
visited[i]=1;
p=G->ag[i].firstarc;
while(p)
{
if (!visited[p->adjvex])
DFS(G,p->adjvex);
p=p->next;
}
}
void creat(ALGRAPH *G)
{
int i,m1,j;
JD *p,*p1;
printf("please input the number of graph\n");
scanf("%d",&G->n);
for(i=0;i<G->n;i++)
{
printf("please input the info of node %d",i);
scanf("%d",&G->ag[i].vexdata);
printf("please input the number of arcs which adj to %d",i);
scanf("%d",&m1);
printf("please input the adjvex position of the first arc\n");
p=(JD *)malloc(sizeof(JD));
scanf("%d",&p->adjvex);
p->next=NULL;
G->ag[i].firstarc=p;
p1=p;
for(j=2 ;j<=m1;j++)
{
printf("please input the position of the next arc vexdata\n");
p=(JD *)malloc(sizeof(JD));
scanf("%d",&p->adjvex);
p->next=NULL;
p1->next=p;
p1=p;
}
}
}
int visited[MaxVertexNum];
void DFSTraverse(ALGRAPH *G)
{
int i;
for(i=0;i<G->n;i++)
visited[i]=0;
for(i=0;i<G->n;i++)
if(!visited[i])
DFS(G,i);
}
int main()
{
ALGRAPH *G;
printf("下面以臨接表存儲一個圖;\n");
creat(G);
printf("下面以深度優先遍歷該圖 \n");
DFSTraverse(G);
getchar();
}
2. PLC編程的演算法
PLC編程演算法一 開關量的計算
1、開關量也稱邏輯量,指僅有兩個取值,0或1、ON或OFF。它是最常用的控制,對它進行控制是PLC的優勢,也是PLC最基本的應用。
開關量控制的目的是,根據開關量的當前輸入組合與歷史的輸入順序,使PLC產生相應的開關量輸出,以使系統能按一定的順序工作。所以,有時也稱其為順序控制。而順序控制又分為手動、半自動或自動。而採用的控制原則有分散、集中與混合控制三種。這是用OMRON的開關量編寫的一個「單按鈕啟停」程序。
2、 模擬量是指一些連續變化的物理量,如電壓、電流、壓力、速度、流量等。
PLC是由繼電控制引入微處理技術後發展而來的,可方便及可靠地用於開關量控制。由於模擬量可轉換成數字量,數字量只是多位的開關量,故經轉換後的模擬量,PLC也完全可以可靠的進行處理控制。由於連續的生產過程常有模擬量,所以模擬量控制有時也稱過程式控制制。模擬量多是非電量,而PLC只能處理數字量、電量。所有要實現它們之間的轉換要有感測器,把模擬量轉換成數電量。如果這一電量不是標準的,還要經過變送器,把非標準的電量變成標準的電信號,如4—20mA、1—5V、0—10V等等。同時還要有模擬量輸入單元(A/D),把這些標準的電信號變換成數字信號;模擬量輸出單元(D/A),以把PLC處理後的數字量變換成模擬量——標準的電信號。所以標准電信號、數字量之間的轉換就要用到各種運算。這就需要搞清楚模擬量單元的解析度以及標準的電信號。
例如:PLC模擬單元的解析度是1/32767,對應的標准電量是0—10V,所要檢測的是溫度值0—100℃。那麼0—32767對應0—100℃的溫度值。然後計算出1℃所對應的數字量是327.67。如果想把溫度值精確到0.1℃,把327.67/10即可。
模擬量控制包括:反饋控制、前饋控制、比例控制、模糊控制等。這些都是PLC內部數字量的計算過程。
3、 脈沖量是其取值總是不斷的在0(低電平)和1(高電平)之間交替變化的數字量。每秒鍾脈沖交替變化的次數稱為頻率。
PLC脈沖量的控制目的主要是位置控制、運動控制、軌跡控制等。例如:脈沖數在角度控制中的應用。步進電機驅動器的細分是每圈10000,要求步進電機旋轉90度。那麼所要動作的脈沖數值=10000/(360/90)=2500。
PLC編程演算法二 模擬量的計算
1、 -10—10V。-10V—10V的電壓時,在6000解析度時被轉換為F448—0BB8Hex(-3000—3000);12000解析度時被轉換為E890—1770Hex(-6000—6000)。
2、 0—10V。0—10V的電壓時,在6000解析度時被轉換為0—1770Hex(0—6000);12000解析度時被轉換為0—2EE0Hex(0—12000)。
以上僅做簡單的介紹,不同的PLC有不同的解析度,並且您所測量物理量實現的量程不一樣。計算結果可能有一定的差異。
註:模擬輸入的配線的要求
1、使用屏蔽雙絞線,但不連接屏蔽層。
2、當一個輸入不使用的時候,將V IN 和COM端子短接。
3、模擬信號線與電源線隔離 (AC 電源線,高壓線等)。
4、當電源線上有干擾時,在輸入部分和電源單元之間安裝一個濾波器。
5、確認正確的接線後,首先給CPU單元上電,然後再給負載上電。
6、斷電時先切斷負載的電源,然後再切斷CPU的電源。
PLC編程演算法三 脈沖量的計算
脈沖量的控制多用於步進電機、伺服電機的角度控制、距離控制、位置控制等。以下是以步進電機為例來說明各控制方式。
1、步進電機的角度控制。首先要明確步進電機的細分數,然後確定步進電機轉一圈所需要的總脈沖數。計算「角度百分比=設定角度/360°(即一圈)」「角度動作脈沖數=一圈總脈沖數*角度百分比。」
公式為:
角度動作脈沖數=一圈總脈沖數*(設定角度/360°)。
2、步進電機的距離控制。首先明確步進電機轉一圈所需要的總脈沖數。然後確定步進電機滾輪直徑,計算滾輪周長。計算每一脈沖運行距離。最後計算設定距離所要運行的脈沖數。
公式為:
設定距離脈沖數=設定距離/[(滾輪直徑*3.14)/一圈總脈沖數]
3、步進電機的位置控制就是角度控制與距離控制的綜合。
以上只是天天自動化簡單的分析步進電機的控制方式,可能與實際有出入,僅供各位同仁參考。伺服電機的動作與步進電機的一樣,但要考慮伺服電機的內部電子齒輪比與伺服電機的減速比。有些事情說起來比較簡單,但實際應用就有難度了。請大家在實際的工作中領悟其中的道理
3. python編程入門教程
python入門教程(非常詳細)python入門教程如下:
准備材料:windows電腦、python
1、這里簡單告用python軟體編寫的一個關於貨物售價折扣方面的一個計算程序,首先打開python軟體。
2、進入python後,會出現如圖所示界面,按照圖中箭頭指示,先選擇File選項,然後在下拉菜單中選擇Newfile選項。
3、選擇完畢後,會出現一個新的界面,如圖箭頭和紅色框指示。
4、進入這個新的界面,在裡面輸入自己想編輯的程序,如圖所示是編寫的一個關於貨物售價折扣方面的一個簡單的計算程序。
5、程序輸入完畢後,按照圖中箭頭和紅色框指示,先選擇Run選項,然後在下拉菜單中選擇RunMole(註:除此方法外還可以點擊鍵盤F5)。
6、此時會在原界面出現如圖所示的字樣,這是因為編寫程序編輯好的,此時可以輸入一個數字,然後回車,又會讓輸入一個折扣,輸入完即可得出最後售價結果。
7、如圖所示,這里輸入的原價是10,折扣是0.2,故此系統根據編寫的程序計算除了打折後的價格為2。
Python該怎麼入門?對於python的入門
首先會學習python基礎語法,面向對象編程與程序設計模式的理解、python數據分析基礎、python網路編程、python並發與高效編程等等。
通過前期python學習來了解和掌握常量變數的使用,運算符的使用、流程式控制制的使用等,最後掌握python編程語言的基礎內容。
並會對常見數據結構和相應演算法進行學習,注重表格的處理,樹結構的處理知識。
第二階段主要學習內容是web頁面開發、web頁面特效開發、數據持久化開發、linux運維開發、linux測試開發、伺服器集群架構等等。
對js的掌握並在網路前端中使用,而且需要詳細將js學習並掌握,為將來從事全棧工作打下基礎,也會學習linux操作系統的基礎知識和掌握linux操作系統常用命令,並會學習linux自動化運維技巧等。
第三階段主要學習網路爬蟲,數據分析加人工智慧:
這一個階段需要學習的內容也是比較多的,例如:爬蟲與數據、多線程爬蟲、go語言、NoSQL資料庫、Scrapy-Redis框架。
需要掌握爬蟲的工作原理和設計思想,掌握反爬蟲機制,並且通過學習NoSQL資料庫和Scrapy-Redis框架,並且可以使用分布式爬蟲框架實現大量數據的獲取。
數據分析和人工智慧階段需要學習的數據分析、人工智慧深度學習、量化交易模型、數據分析-特徵工程和結果可視化和人工智慧機器學習等等。
需要理解隨機變數的數字特徵的概念和性質,並會利用性質計算隨機變數的數字特徵,了解可視化過程,圖形繪制。並且需要掌握Matplotlib模塊、常用的機器學習演算法等等。
最後就是對於python的入門學習,我們在學習理論、學習python語法基礎的同時我們應該多動手、多聯系。但是呢,對於我們零基礎的小夥伴呢,一般不建議自學。
你肯定要問為什麼?我就知道!原因大概有三點:
首先我們自學雖然成本低、學習時間靈活等,但是你想過沒,你要自學到就業的程度大概需要多長時間,辭職在家學習,或者買個網課,每天聽課、練,你可能需要1年左右,就這你還不一定能夠學會、換不一定能夠全面掌握企業需要的技術;然後報班學習的學員都已經學完工作半年了。
其次就是學習知識的系統性、前沿性。IT行業的學習一定要系統,不能說我們這里一點那裡學一點,完了全是一片一片的知識點,聽起來你都有涉及但是真正做項目反而使用不起來,很耽誤時間。其次就是前沿性,學習時一定要選擇最新的課程大綱、最新的課程。IT行業的技術更新很快。
最後就是就業服務和保障,我們選擇報班學習一般都有就業服務,當然我們在學習完也會進行模擬面試和簡歷指導的等工作。其次就是服務,一般培訓機構都有合作企業來招聘,大大增加了我們的就業機會。
總而言之你是零基礎選擇培訓絕對是最快速的轉行入門途徑!
編程語言python新手怎麼學
python零基礎怎麼學?如果是純新手,建議找個老師教,在掌握了基本的要點以後,可以在網上找些常式研究學習。不論是找老師教,還是自學,建議掌握以下一些知識點:
1、編程環境的安裝和使用
2、輸入輸出語句、變數、表達式的理解和使用
3、選擇結構、循環結構的理解和使用
4、列表的使用
5、文件的操作
6、函數調用的方法
7、庫的安裝和使用
編程,其實就是利用特定的語言控制計算機,或者說和計算機進行交流。
一、對於python零基礎作為初學者,要掌握以下基礎知識就算入門了。
1、編程環境的安裝與使用。比如Python的學習一般推薦軟體自帶的IDLE,簡單好用。
2、掌握輸入、輸入語句的使用。輸入語句可以讓計算機知道你通過鍵盤輸入了什麼,輸出語句可以讓你知道計算機執行的結果。以輸出語句為例:
其中「」裡面的內容是原樣輸出,多個輸出項之間用,隔開。
3、掌握運算(包含計算、邏輯)表達式使用。這個主要是用+、-、*、/、()、、、=、=等符號連接起來的表示計算或者比較的式子,讓計算機能做計算機或者判斷。
一個是計算表達式,一個是所謂的邏輯表達式。
4、特別要掌握賦值表達式的使用,這個主要是等於號的理解。在計算機編程語言里,等於號一般不表示相等,而是表示賦值。也就是將等號右邊的內容記入左邊的名字里。
5、理解並熟練使用變數,變數的字面意思就是會變化的量。其實質的作用記憶信息。通過給要記憶的內容取個名字,然後通過這個名字就可以找到記憶的內容。有點類似於數學中的字母表示數。
6、選擇結構,這是讓計算機具有一定的選擇、判斷能力的基礎。比如我們常見的登錄,VIP就要用到選擇結構。因為我們把各種情況都列舉在程序里了,程序才會有各種變化。
沒選擇,沒變化!變化的根本在於條件。
7、循環結構,這是讓計算機具有重復的能力。前提是事件要具有一定的規律性,比如1,3,5,7,9……
如果沒有規律,也可能通過列表等方法構造規律。
其實的range()代表范圍,三個參數分別表示開始,結束,間隔。不能超過結束,間隔可正可負。
8、文件的讀取和寫入,這個主要是針對大量的數據處理而言的。
一般來說,掌握這些基本知識就算入門了。
二、高階的使用
1、在實際編程過程中,經常會碰到一些沒有規律的數據,比如:
請找出13,35,21,49,19,42,123,98中所有的偶數。
這裡面就涉及到一個問題,這些數多且沒有規律,如何處理?這時候就可以祭出列表這一神器了。列表,可以理解成一個貨架,每個格子上都有編號,我們只需要報出架子的編號,就可以得到架子上的內容。同理,我們只要說出要放到的架子的編號,不管我們的內容是什麼,放過去就行了。
從這個描述我們發現列表分二部分,一部分是有規律的編號,一部分是沒有規律的內容。通過這樣的組合,我們就可以用列表把沒有規律的內容變得有規律了。
2、隨著我們的問題難度的不斷加深,第三方庫的安裝和使用也是必須要掌握的技能。Python功能強大,使用簡單主要原因是因為大量的庫的存在。
以機器學習演算法中大部分都要調用的Numpy庫來演示安裝方法。
pipinstallNumpy即可安裝成功。
掌握上面的一些知識,Python就算入門了,也歡迎大家留言交流不足之處,碰到具體的問題也歡迎交流。