❶ 機器語言 匯編語言 偽代碼 c語言分別是指什麼
計算機語言是人們描述計算過程即程序的規范書寫語言。程序是計算機處理對象和計算規則的描述。語言的基礎是一組記號和規則,根據規則由記號構成記號串的總體就是語言。
人類發明了計算機,需要與計算機「交流」,即寫入和讀出,這樣必須使用一種語言讓人類與機器能夠交流,就誕生了機器語言。
機器語言是機器指令的集合。機器指令展開來講就是一台機器可以正確執行的命令。每種微處理器,可以識別的每一條指令稱為機器指令。每一種處理器都有自己可以識別的一整套指令,稱為指令集。由於硬體設計和內部結構的不同,就需要用不同的電平脈沖來控制,使它工作。所以每一種微處理器都有自己的機器指令集,也就是機器語言。機器語言是計算機可以識別並運行的二進制代碼。
匯編語言是將二進制的機器碼通過助記符的方式讓人可以更方便的編寫並檢查的低級語言。匯編語言接近機器語言,可以看做是機器語言的另一種形式,計算機在運行時也需要將其變為機器語言的二進制才可運行。匯編語言是機器語言的助記符。
偽代碼是一種演算法描述語言。它不是一種現實存在的編程語言。使用為代碼的目的是為了使被描述的演算法可以容易地以任何一種編程語言實現。它可能綜合使用多種編程語言中語法、保留字,甚至會用到自然語言。 因此,偽代碼必須結構清晰,代碼簡單,可讀性好,並且類似自然語言。計算機科學在教學中通常使用偽代碼,以使得所有的程序員都能理解。
C語言之所以命名為C,是因為 C語言源自Ken Thompson發明的B語言,而 B語言則源自BCPL語言。1972年,美國貝爾實驗室的 D.M.Ritchie 在B語言的基礎上最終設計出了一種新的語言,他取了BCPL的第二個字母作為這種語言的名字,這就是C語言。機器語言和匯編語言都不具有移植性,而C語言程序則可以使用在任意架構的處理器上,只要那種架構的處理器具有對應的C語言編譯器和庫,然後將C源代碼編譯、連接成目標二進制文件之後即可運行。
❷ 數據結構C語言版的偽代碼怎麼轉換
偽碼的意思就是假的代碼。
意思就是要你自己去寫噻,比如數據結構上的鏈表,是不是它要不寫一些只有名稱的CreateList_L_Last(LinkList
L)之類的嘛。
意思就是要自己去寫如何給鏈表賦值。
參考:
typedef
struct
LNode
{
int
data;
struct
LNode
*next;
}LNode,*LinkList;
//尾插法添加數據
void
CreateList_L_Last(LinkList
&L)
{
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
LinkList
s=(LinkList)malloc(sizeof(LNode));
s=L;
printf("建立單鏈表,輸入元素個數:");
int
n;
scanf("%d",&n);
printf("輸入元素個數:");
for(int
i=0;i<n;i++)
{
LinkList
p=(LinkList)malloc(sizeof(LNode));
scanf("%d",&p->data);
s->next=p;
s=p;
s->next=NULL;
}
}
❸ 用C語言描述的偽代碼怎麼看,怎麼寫
偽代碼主要是為了方便各種語言來實現,像你這里的用C實現就是:
structNode{
intnumber;
structNode*Next;
};
ElementType :元素類型
Element:元素名
Position :位置,定義Next指針
QQ已私信給你~
❹ C語言中的「code」是什麼意思啊
code是keil C51裡面的關鍵字,一般用於定義常量數組,意思是告訴編譯說把這個數組放在ROM存儲。
code的作用是告訴單片機,定義的數據要放在ROM(程序存儲區)裡面,寫入後就不能再更改。因為C語言中沒辦法詳細描述存入的是ROM還是RAM(寄存器),所以在軟體中添加了這一個語句起到代替匯編指令的作用,對應的還有data是存入RAM的意思。
程序可以簡單的分為code(程序)區,和data (數據)區,code區在運行的時候是不可以更改的,data區放全局變數和臨時變數,是要不斷的改變的,cpu從code區讀取指令,對data區的數據進行運算處理。
(4)c語言偽碼書法擴展閱讀:
c51中的存儲類型:
code :程序存儲區(64KB)
data :可直接定址的內部數據存儲區(128B)
idata:不可直接定址的內部數據存儲區(256B)
bdata:可位定址內部數據存儲區(16B)
xdata:外部數據存儲區(64KB)
pdata:分頁的外部數據存儲區
❺ c語言程序設計的演算法用偽代碼描述過程是怎樣的
偽代碼(Pseudocode)是一種演算法描述語言。使用偽代碼的目的是為了使被描述的演算法可以容易地以任何一種編程語言(Pascal,C,Java,etc)實現。因此,偽代碼必須結構清晰、代碼簡單、可讀性好,並且類似自然語言。 介於自然語言與編程語言之間。
它以編程語言的書寫形式指明演算法的職能。相比於程序語言(例如Java, C++,C, Dephi 等等)它更類似自然語言。它是半形式化、不標準的語言。我們可以將整個演算法運行過程的結構用接近自然語言的形式(這里,你可以使用任何一種你熟悉的文字,中文,英文 等等,關鍵是你把你程序的意思表達出來)描述出來. 使用偽代碼, 可以幫助我們更好的表述演算法, 不用拘泥於具體的實現.
人們在用不同的編程語言實現同一個演算法時意識到,他們的實現(注意:這里是實現,不是功能)很不同。尤其是對於那些熟練於不同編程語言的程序員要理解一個(用其他編程語言編寫的程序的)功能時可能很難,因為程序語言的形式限制了程序員對程序關鍵部分的理解。這樣偽代碼就應運而生了。
當考慮演算法功能(而不是其語言實現)時,偽代碼常常得到應用。計算機科學在教學中通常使用虛擬碼,以使得所有的程序員都能理解。
例如,類Pascal語言的偽代碼的語法規則是: 在偽代碼中,每一條指令佔一行(else if,例外)。指令後不跟任何符號(Pascal和C中語句要以分號結尾)。書寫上的「縮進」表示程序中的分支程序結構。這種縮進風格也適用於if- then-else語句。用縮進取代傳統Pascal中的begin和end語句來表示程序的塊結構可以大大提高代碼的清晰性;同一模塊的語句有相同的縮進量,次一級模塊的語句相對與其父級模塊的語句縮進。
偽代碼只是像流程圖一樣用在程序設計的初期,幫助寫出程序流程。簡單的程序一般都不用寫流程、寫思路,但是復雜的代碼,最好還是把流程寫下來,總體上去考慮整個功能如何實現。寫完以後不僅可以用來作為以後測試,維護的基礎,還可用來與他人交流。但是,如果把全部的東西寫下來必定可能會讓費很多時間,那麼這個時候可以採用偽代碼方式。比如:
❻ c語言偽碼書寫的規范是什麼
偽碼書寫可以參考C代碼規范。
1.
1.1符號命名規則
1.1.1符號名包括模塊名、常量名、標號名、子程序名等。這些名字應該能反映它所代表的實際東西,具有一定的意義,使其能夠見名知義,有助於對程序功能的理解。命名採用匈牙利命名法。規則如下:
(1)所有宏定義、枚舉常數和const變數,用大寫字母命名。在復合詞里用下劃線隔開每個詞。
(2)復合詞中每個單詞的第一個字母大寫。除了規則5.1.1.1以外,避免使用下劃線。
(3)類、類型定義和枚舉型名的第一個字母大寫。
(4)函數名是復合詞的,第一個詞採用全部小寫,隨後每個單詞採用第一個字母大寫,其它字母小寫方式;如果是單個詞的,採用全部小寫方式。
(5)循環變數可採用i,
j,
k等,不受上述規則限制。
(6)
類的成員變數應採用m_開頭。
(7)
全局變數詞頭為g_
。
(8)
臨時變數詞頭為tmp_
。
(9)
對結構體內的變數命名,
遵循變數的具體含義命名原則
(10)用小寫字母的前綴表示變數的類型,前綴的下一個字母用大寫。
表
1
詞頭
類型
詞頭
類型
ch
char
l
long
i
integer
u
unsigned
b
boolean
p
pointer
f
float
lp
long
pointer
d
double
s
string
st
structure
sz
ASCII
string
by
byte
n
short
int
H
handle
x,y
分別為x,y坐標
dw
DWORD
fn
function
表
2
詞頭
變數名
詞頭
變數名
task
task
sig
signal
sb
binary
semaphores
wd
watchdog
sm
mutual
exclusion
tm
timer
sc
counting
semaphores
msg
message
pipe
pipe
例:
#define
ARRAY_SIZE
24
/*規則5.1.1.1*/
int
g_iFlag;
class
MyClass
/*規則5.1.1.3*/
{
};
void
someFunc(
)
/*規則5.1.1.2和5.1.1.4*/
{
int
nArray[ARRAY_SIZE];
unsigned
char
uchByte;
char
szName[
];
char
*pszName
=
szName;
}
(11)有些詞頭(如p和u)可以和其它詞頭組合。
例:WDOG_ID
wdId;
WDOG_ID
g_wdId;
/*全局watchdog
Id,故以g_開頭*/
1.1.2名字的長度一般不要過長或過短。過長的名字會增加工作量,使程序邏輯流程變得模糊;過短的名字無法表達符號的實際意義。約定長度范圍:3-31;
1.2數據和函數說明
1.2.1數據說明次序應當規范化,使數據屬性容易查找,也有利於測試、排錯和維護。說明的先後次序應固定,應按邏輯功能排序,邏輯功能塊內建議採用下列順序:整型說明、實型說明、字元說明、邏輯量說明。
1.2.2如果設計了一個復雜的數據結構,應當通過注釋對其變數的含義、用途進行說明。
1.2.3在函數的聲明中使用異常聲明。
如:void
f()
throw(toobig,
toosmall,
divzero);
在聲明一個函數時,將它所拋出的異常列出,便於函數的使用者了解可能會發生哪些異常。
1.3
程序注釋
1.3.1程序注釋是程序員與日後的程序讀者之間通信的重要手段之一,注釋分為文件注釋、函數注釋和功能注釋。
1.3.2正規程序的注釋應注意:
——注釋行的數量佔到整個源程序的1/3到1/2。
1.3.3文件注釋位於整個源程序的最開始部分,注釋後空兩行開始程序正文。它包括:
——程序標題。
——目的、功能說明。
——文件作者、最後修改日期等說明。
例:
./********************************************************************
(空一行)
標題:
Demo.c
功能:
測試VxWorks的各種系統調用.
說明:
該程序測試各種VxWorks的系統調用函數。包括任務(taks)的創建、掛起及任務間通過信號燈實現同步,通過消息隊列
進行通訊。
程序創建了兩個任務:一個高優先順序的任務和一個低優先順序的任務。兩個任務間通過一個二進制的信號燈進行同步,通過消息隊列進行通訊。
當前版本:
x.x
修改信息:
2000.06.05
John,
Initial
Version
2000.07.05
Tom,
Bug
xxxx
fixed
**************************************************************/
(空2行,開始程序正文)
1.3.4
函數注釋通常置於每函數或過程的開頭部分,它應當給出函數或過程的整體說明對於理解程序本身具有引導作用。一般包括如下條目:
——模塊標題。
——有關本模塊功能和目的的說明。
——調用格式
——介面說明:包括輸入、輸出、返回值、異常。
——演算法。如果模塊中採用了一些復雜的演算法。
例:
file://(/注釋開頭應和上一函數空兩行)
(注釋開頭與上一函數最後一行間隔兩行)
/********************************************************************
標題:assignmentComplete
功能:BSC=>MSC消息生成函數,生成assignment_complete指配完成消息(BSMAP消息)
.
格式:
int
assignmentComplete(int
iCellId,
int
iServiceChannnelNum,
char
*pszMSGData)
throw(exception1,
exception2)
輸入:
int
iCellId:
MS所在的小區識別
iCellId取值:0x00-——0xff
int
iServiceChannnelNum:MS所佔的業務信道號碼
輸出:
char
*
pszMSGData:指配完成消息數據
返回值:
0x00正常
異常:exception1異常情況1,
exception2異常情況2
********************************************************************/
(
注釋後直接開始程序正文,不空行。)
1.3.5功能性注釋嵌在源程序體中,用於描述其後的語句或程序段做什麼工作,也就是解釋下面要做什麼,或是執行了下面的語句會怎麼樣。而不要解釋下面怎麼做,因為解釋怎麼做常常與程序本身是重復的。
例:
/*把
amount
加到
total中*/
total
=
amount
+
total;
這樣的注釋僅僅是重復了下面的程序,對於理解它的工作並沒有什麼作用。而下面的注釋,有助於讀者理解。
/*將每月的銷售額amount加到年銷售額total中*/
total
=
amount
+
total;
1.4
函數編寫應盡可能短小精悍,一般不超過兩屏,以便於調試和理解。
1.5語句結構
為保證語句結構的清晰和程序的可讀性,在編寫軟體程序時應注意以下幾個方面的問題:
——在一行內只寫一條語句,並採用空格、空行和移行保證清楚的視覺效果。
——每一個嵌套的函數塊,使用一個TAB縮進(可以設定為4個空格),大括弧必須放在條件語句的下一行,單獨成一行,便於匹對:
如,有一段程序如下:
for(i=1;i<n-1;i++){
t=1;
for(j=i+1;j<n;j++){
if(a[j]<a[t]
)
t=j;
if(t!=i
){work=a[t];a[t]=a[I];a[I]=work;}}}
應寫為
for(
i=1;
i<n-1;
i++)
{
t=1;
for(j
=
i+1;
j<n;
j++)
{
if(a[i]<a[j])
t=j;
if(t!=1)
{
.5.
Q/ECC/BJ
010—2001
work=a[t];
a[t]=a[i];
a[i]=work;
}
}
}
——文件之中不得存在無規則的空行,比如說連續十個空行。
一般來講函數與函數之間的空行為2-3行;
在函數體內部,在邏輯上獨立的兩個函數塊可適當空行,一般為1-2行。
——程序編寫首先應考慮清晰性,不要刻意追求技巧性而使得程序難以理解。
——每行長度盡量避免超過屏幕寬度,應不超過80個字元。
——除非對效率有特殊要求,編寫程序要作到清晰第一,效率第二。
——盡可能使用函數庫。
——盡量用公共過程或子程序去代替重復的功能代碼段。要注意,這個代碼應具有一個獨立的功能,不要只因代碼形式一樣便將其抽出組成一個公共過程或子程序。
——使用括弧清晰地表達算術表達式和邏輯表達式的運算順序。如將
x=a*b/c*d
寫成
x=(a*b/c)*d可避免閱讀者誤解為x=(a*b)/(c*d)。
——避免不必要的轉移。
——避免採用過於復雜的條件測試。
——避免過多的循環嵌套和條件嵌套。
——建議不要使用
*=,^=,
/=等運算符。
——一個函數不要超過200行。一個文件應避免超過2000行。
——盡量避免使用go
to語句。
——避免採用多賦值語句,如x
=
y
=
z
;
——不鼓勵採用?:操作符,如z
=
(a>b)?a:b;
——不要使用空的if
else
語句。如
if(cMychar
>=
『A』)
if(cMychar
<=
『Z』)
printf(「This
is
a
letter
\n」);
else
printf(「This
is
not
a
letter
\n」);
else到底是否定哪個if容易引起誤解。可通過加{}避免誤解。
——盡量減少使用「否定」條件的條件語句。如:
把
if(
!(
(cMychar<』0』)
||
(cMychar>』9』)
)
)
改為if(
(cMychar>=』0』)
&&
(cMychar<=』9』)
)