導航:首頁 > 源碼編譯 > 編譯程序演算法設計

編譯程序演算法設計

發布時間:2024-03-27 09:07:24

編譯程序是什麼意思編譯是什麼意思

編譯程序(Compiler,compiling program)也稱為編譯器,是指把用高級程序設計語言書寫的源程序,翻譯成等價的機器語言格式目標程序的翻譯程序。

解釋程序是一種語言處理程序,在詞法、語法和語義分析方面與編譯程序的工作原理基本相同,但在運行用戶程序時,它直接執行源程序或源程序的內部形式(中間代碼)。

(1)編譯程序演算法設計擴展閱讀:

結構:

編譯過程分為分析和綜合兩個部分,並進一步劃分為詞法分析、語法分析、語義分析、代碼優化、存儲分配和代碼生成等六個相繼的邏輯步驟。這六個步驟只表示編譯程序各部分之間的邏輯聯系,而不是時間關系。

編譯過程既可以按照這六個邏輯步驟順序地執行,也可以按照平行互鎖方式去執行。在確定編譯程序的具體結構時,常常分若干遍實現。對於源程序或中間語言程序,從頭到尾掃視一次並實現所規定的工作稱作一遍。每一遍可以完成一個或相連幾個邏輯步驟的工作。

可以把詞法分析作為第一遍;語法分析和語義分析作為第二遍;代碼優化和存儲分配作為第三遍;代碼生成作為第四遍。反之,為了適應較小的存儲空間或提高目標程序質量,也可以把一個邏輯步驟的工作分為幾遍去執行。

Ⅱ 編譯程序的作用

編譯程序的作用是:將高級語言源程序翻譯成目標程序。

編譯程序是一種動作,是根據編譯原理技術,由高級程序設計語言編譯器翻譯成機器語言二進制代碼行為。編譯程序是動名詞,特指生成編譯器的軟體程序。編譯程序是把用高級程序設計語言或計算機匯編語言寫的源程序,翻譯成機器語言格式目標程序的翻譯程序。

屬於採用生成性實現途徑實現的翻譯程序。編譯程序以高級程序設計語言書寫的源程序作為輸入,而以匯編語言或機器語言表示的目標程序作為輸出;編譯出的目標程序通常還要經歷運行階段,以便在運行程序的支持下運行,加工初始數據,算出所需的計算結果。

編譯程序的演算法

編譯程序的實現演算法較為復雜。這是因為它所翻譯的語句與目標語言的指令不是一一對應關系,而是一多對應關系;同時也因為它要處理遞歸調用、動態存儲分配、多種數據類型,以及語句間的緊密依賴關系。

但是,由於高級程序設計語言書寫的程序具有易讀、易移植和表達能力強等特點,編譯程序廣泛地用於翻譯規模較大、復雜性較高、且需要高效運行的高級語言書寫的源程序。

Ⅲ 請問程序設計的基本過程是怎樣的

(1)分析需求:了解清楚程序應有的功能。

(2)設計演算法:根據所需的功能,理清思路,排出完成功能的具體步驟,其中每一步都應當是簡單的、確定的。這一步也被稱為「邏輯編程」。

(3)編寫程序:根據前一步設計的演算法,編寫符合C++語言規則的程序文本。

(4)輸入與編輯程序:將程序文本輸入到計算機內,並保存為文件,文件名後綴為「.cpp」。

至此,產生了完整的程序文本,被稱為源程序或源代碼。保存源程序的文件(例如前面的c:\student\ch1_01.cpp)稱為源程序文件,簡稱源文件,文件名的後綴是「.cpp」。

(5)編譯(Compile):把C++程序編譯成機器語言程序。

編譯產生的程序稱為目標程序,目標程序被自動保存為文件,這一文件稱為目標文件,文件名的後綴是「.obj」。

VC++進行編譯的依據是源程序,如果源程序中的符號、詞語、整體結構等有差錯,超出了VC++的「理解能力」,VC++就無法完成編譯,這樣的差錯稱為語法錯誤。一旦發現語法錯誤,VC++就不生成目標文件,並在窗口下方列出錯誤;如果沒有語法錯誤,則顯示「0 error(s)」,並生成目標文件,允許繼續進行後面的步驟。

編譯沒有出現錯誤,僅僅說明程序中沒有語法錯誤。

(6)生成執行程序:從目標文件進一步連接生成Windows環境下的可執行文件,即文件名後綴為「.exe」的文件。

由於可執行文件是由若干個文件拼接而成的,其中不但有目標文件,還有另一些標準的庫文件,一些規模較大的程序還會有多個目標文件,所以這一步驟又被稱為連接(Link)。

(7)運行:在Windows環境中使用可執行文件。這是程序設計的最終目的。這一步也常被稱為「Run」。

邏輯錯誤:演算法錯,或演算法在轉變為程序時走樣了,導致程序能夠運行,卻不能實現預想的功能。這種錯誤被稱為「邏輯錯誤」。

在運行這一步,必須核對程序是否正確實現了預定的功能,如果功能不對,還必須到程序中尋找錯誤,糾正後再次經歷(5)、(6)、(7)各步,直到看不出錯誤為止。

Ⅳ 編譯原理課程設計-詞法分析器設計(C語言)

#include"stdio.h"/*定義I/O庫所用的某些宏和變數*/

#include"string.h"/*定義字元串庫函數*/

#include"conio.h"/*提供有關屏幕窗口操作函數*/

#include"ctype.h"/*分類函數*/

charprog[80]={''},

token[8];/*存放構成單詞符號的字元串*/

charch;

intsyn,/*存放單詞字元的種別碼*/

n,

sum,/*存放整數型單詞*/

m,p;/*p是緩沖區prog的指針,m是token的指針*/

char*rwtab[6]={"begin","if","then","while","do","end"};

voidscaner(){

m=0;

sum=0;

for(n=0;n<8;n++)

token[n]='';

ch=prog[p++];

while(ch=='')

ch=prog[p++];

if(isalpha(ch))/*ch為字母字元*/{

while(isalpha(ch)||isdigit(ch))/*ch為字母字元或者數字字元*/{

token[m++]=ch;

ch=prog[p++];}

token[m++]='';

ch=prog[p--];

syn=10;

for(n=0;n<6;n++)

if(strcmp(token,rwtab[n])==0)/*字元串的比較*/{

syn=n+1;

break;}}

else

if(isdigit(ch))/*ch是數字字元*/{

while(isdigit(ch))/*ch是數字字元*/{

sum=sum*10+ch-'0';

ch=prog[p++];}

ch=prog[p--];

syn=11;}

else

switch(ch){

case'<':m=0;token[m++]=ch;ch=prog[p++];

if(ch=='>'){

syn=21;

token[m++]=ch;}

elseif(ch=='='){

syn=22;

token[m++]=ch;}

else{

syn=20;

ch=prog[p--];}

break;

case'>':m=0;token[m++]=ch;ch=prog[p++];

if(ch=='='){

syn=24;

token[m++]=ch;}

else{

syn=23;

ch=prog[p--];}

break;

case':':m=0;token[m++]=ch;ch=prog[p++];

if(ch=='='){

syn=18;

token[m++]=ch;}

else{

syn=17;

ch=prog[p--];}

break;

case'+':syn=13;token[0]=ch;break;

case'-':syn=14;token[0]=ch;break;

case'*':syn=15;token[0]=ch;break;

case'/':syn=16;token[0]=ch;break;

case'=':syn=25;token[0]=ch;break;

case';':syn=26;token[0]=ch;break;

case'(':syn=27;token[0]=ch;break;

case')':syn=28;token[0]=ch;break;

case'#':syn=0;token[0]=ch;break;

default:syn=-1;}}

main()

{

printf(" Thesignificanceofthefigures: "

"1.figures1to6saidKeyword "

"2. "

"3.figures13to28saidOperators ");

p=0;

printf(" pleaseinputstring: ");

do{

ch=getchar();

prog[p++]=ch;

}while(ch!='#');

p=0;

do{

scaner();

switch(syn){

case11:printf("(%d,%d) ",syn,sum);break;

case-1:printf(" ERROR; ");break;

default:printf("(%d,%s) ",syn,token);

}

}while(syn!=0);

getch();

}

程序測試結果

對源程序beginx:=9:ifx>9thenx:=2*x+1/3;end#的源文件,經過詞法分析後輸出如下圖5-1所示:

具體的你在修改修改吧

Ⅳ 什麼是程序什麼是程序設計

1、計算機程序是一組計算機能識別和執行的指令,運行於電子計算機上,滿足人們某種需求的信息化工具。

它以某些程序設計語言編寫,運行於某種目標結構體繫上。打個比方,程序就如同以英語(程序設計語言)寫作的文章,要讓一個懂得英語的人(編譯器)同時也會閱讀這篇文章的人(結構體系)來閱讀、理解、標記這篇文章。

一般的,以英語文本為基礎的計算機程序要經過編譯、鏈接而成為人難以解讀,但可輕易被計算機所解讀的數字格式,然後放入運行。

程序是一個指令序列。

2、程序設計是給出解決特定問題程序的過程,是軟體構造活動中的重要組成部分。程序設計往往以某種程序設計語言為工具,給出這種語言下的程序。程序設計過程應當包括分析、設計、編碼、測試、排錯等不同階段。專業的程序設計人員常被稱為程序員

(5)編譯程序演算法設計擴展閱讀:

程序演算法

演算法是指對某些問題的嚴格的解釋方法,一般的,一個演算法擁有以下特點:

1、有窮性:演算法必須保證在執行有限步驟後結束。

2、可行性:演算法是確切可行的,即使在數學中,該演算法可行,但若在實際應用中,程序不可以被執行,那麼 ,該演算法也是不具有可行性的。

3、確切性:演算法的每一個步驟必須具有明確的意義。

4、輸入:一個演算法必須要有0個或多個輸入。

5、輸出:一個演算法必須要有1個或多個輸出。

Ⅵ 程序設計的基本過程是怎樣的

從分析需求開始

Ⅶ 關於演算法與程序設計

三類錯誤類型:編譯錯誤,邏輯錯誤和運行錯誤
1. 編譯錯誤
編譯錯誤是指在程序編譯過程中出現的錯誤。通常是由於不正確書寫代碼而產生的。 2. 運行錯誤�
運行時的錯誤是指應用程序在運行期間執行了非法操作所發生的錯誤。 3. 邏輯錯誤�
邏輯錯誤使程序運行時得不到預期的結果。這種程序沒有語法錯誤,也能運行,但卻得不到正確的結果。 32題應該就是txt(我試過可以打開) vbp和frm(這兩個肯定有) 常見的程序設計語言 ActionScript APL、A+和J Ada 匯編語言 AWK Basic、Fortran VBScript Brainfuck C、C++ C# Clipper COBOL dBase PASCAL、Delphi Forth FoxPro F# Fava IDL Java JavaScript J# LISP Lua LOGO Mola Nuva Perl PHP PL/I Prolog Python R Ruby Scheme Smalltalk SQL Tcl/Tk Visual Basic Visual FoxPro XML 1 變數必須是以字母、漢字開頭的字母、漢字、數字、下劃線組成的字元串,且第一個字元必須是 英文字母,最後一個字元可以是類型說明符 2 變數名的有效字元為255個 3 不能用 Visual Basic 的保留字作為變數名,但可以把保留字嵌入變數名中。同時變數名也不能是末尾帶有說明符的保留字 4 Visual Basic 不區分變數名和其他名字中字母的大小寫,但習慣上,符號常量一般用大寫字母定義所以34題應選BC

閱讀全文

與編譯程序演算法設計相關的資料

熱點內容
gis伺服器里文件如何處理 瀏覽:829
sec加密數字資產 瀏覽:930
winrar命令行壓縮 瀏覽:790
java成員變數默認 瀏覽:491
解壓神器噴泉視頻 瀏覽:91
現代的語文書是哪裡編譯 瀏覽:108
知乎教孩子學編程 瀏覽:520
vivo加密的應用怎麼解開 瀏覽:918
波形分析演算法 瀏覽:528
php論壇實訓報告 瀏覽:406
java日期字元串轉換成日期 瀏覽:137
linuxsftp連接 瀏覽:936
光伏日發電量演算法 瀏覽:127
小肚皮app怎麼才有vip 瀏覽:618
php全形轉換半形 瀏覽:929
java字元序列 瀏覽:541
杭州編譯分布式存儲區塊鏈 瀏覽:577
材料壓縮曲線 瀏覽:249
linux命令排序 瀏覽:151
手機熱點加密為啥連接不上電腦 瀏覽:981