❶ 机器语言 汇编语言 伪代码 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’)
)