C界面设计教程
C中的GUI编程和用户界面设计

C中的GUI编程和用户界面设计在C语言中,GUI(Graphical User Interface,图形用户界面)编程是一项相对复杂的任务,需要开发人员熟悉相关的库和技术。
本文将探讨C语言中的GUI编程和用户界面设计。
一、GUI编程概述GUI编程是为了打造用户友好、视觉吸引力强的应用程序而开发的一种技术。
在C语言中,由于其底层性质以及对硬件的直接控制能力,GUI编程相对而言较为挑战性。
1.1 GUI编程的挑战相较于其他高级编程语言如Java、Python等,C语言的GUI编程需要开发人员手动绘制窗口、按钮、文本框等控件,并实现各种事件处理和交互逻辑。
这极大增加了开发的复杂性和工作量。
1.2 常用的GUI库为了尽可能简化GUI编程的复杂性,开发人员经常借助第三方GUI 库。
在C语言中,一些常用的GUI库如下:- GTK+: 跨平台的开源GUI库,提供了丰富的控件和功能。
可以用于开发Linux和Windows等操作系统下的应用程序。
- WinAPI: 适用于Windows平台的原生GUI库,提供了丰富的系统控件和功能。
使用WinAPI可以直接与操作系统交互。
- SDL: 用于开发游戏和媒体应用程序的跨平台多媒体库。
虽然主要用于图形和音频处理,但也可以创建简单的GUI界面。
二、用户界面设计原则用户界面设计是GUI编程中至关重要的一环,良好的用户界面能够提升用户体验和应用程序的易用性。
以下是一些常用的用户界面设计原则:2.1 简洁明了用户界面应该简洁明了,避免过多的复杂控件和冗余信息。
保持界面简洁可以帮助用户更快地理解和使用应用程序。
2.2 一致性应用程序的各个界面应该保持一致性,包括控件的布局、颜色和字体等。
这有助于用户在不同界面之间的转换时保持稳定的使用体验。
2.3 导航和反馈提供清晰的界面导航和反馈机制,让用户随时了解当前操作的状态。
比如,在处理耗时任务时,可以显示进度条或者状态提示,以减少用户的不确定感。
C语言中的图形界面设计技巧

C语言中的图形界面设计技巧图形界面设计是软件开发中非常重要的一部分,它直接影响用户体验和软件整体的视觉效果。
在C语言中,虽然不如现代高级编程语言那样直接支持图形界面设计,但通过一些技巧和工具,也能实现简单的图形界面。
一、使用图形库在C语言中,要实现图形界面设计,一种常见的方式是使用图形库。
图形库可以提供一些函数和接口,帮助开发者绘制图形界面。
比较常用的图形库包括Simple DirectMedia Layer(SDL)、GTK+等。
二、理解坐标系统在图形界面设计中,坐标系统是非常重要的。
开发者需要理解屏幕上每个像素的坐标位置,以便正确绘制图形。
通常,坐标系统以左上角为原点,向右为X轴正方向,向下为Y轴正方向。
三、绘制基本图形C语言中,通过图形库提供的函数,可以绘制基本的图形,比如直线、矩形、圆形等。
开发者可以根据需求选择合适的函数来绘制图形,从而完成界面设计。
四、处理用户交互图形界面设计不仅仅是静态展示,还需要处理用户的交互操作。
通过监听鼠标事件、键盘事件等,可以实现用户与界面的交互,提高用户体验。
五、美化界面为了让界面看起来更加美观和易用,开发者可以通过调整颜色、字体、布局等方式来美化界面。
合理选择配色方案、字体样式和布局方式,可以让界面更加吸引人。
六、优化性能在图形界面设计中,性能也是一个重要考量因素。
开发者需要注意减少不必要的计算和绘制操作,避免界面卡顿和闪烁现象,提升用户体验。
总而言之,虽然C语言并非专门用来开发图形界面的语言,但通过使用图形库和一些技巧,也可以实现简单的图形界面设计。
熟练掌握图形库的使用、理解坐标系统、绘制基本图形、处理用户交互、美化界面和优化性能,可以帮助开发者设计出更加出色的图形界面。
掌握这些技巧,将会让开发者在C语言图形界面设计方面有更多的发挥空间和创造力。
c课程设计界面设计

c 课程设计界面设计一、教学目标本课程的目标是让学生掌握C语言的界面设计方法。
知识目标包括:理解C语言的基本语法和数据结构;掌握C语言的界面设计原理和技巧。
技能目标包括:能够使用C语言进行简单的界面设计;能够根据需求进行界面设计的修改和优化。
情感态度价值观目标包括:培养学生的创新意识,提高学生的问题解决能力;培养学生对计算机科学的兴趣和热情。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、界面设计原理和技巧。
具体内容包括:C语言的基本语法和数据类型,如变量、常量、运算符等;C语言的控制结构,如条件语句、循环语句等;C语言的函数和数组,如函数的定义和调用、数组的操作等;C语言的界面设计原理和技巧,如界面布局、颜色设置、事件处理等。
三、教学方法本课程的教学方法包括讲授法、案例分析法、实验法。
在教学过程中,将结合具体的知识点和技能目标,通过讲授法向学生传授C语言的基本语法、数据结构、界面设计原理和技巧;通过案例分析法,让学生通过分析实际案例,加深对C语言界面设计方法的理解和应用;通过实验法,让学生亲自动手实践,提高界面设计的能力。
四、教学资源本课程的教学资源包括教材、多媒体资料、实验设备。
教材选用《C语言程序设计》作为主教材,辅助以相关的参考书和网络资源;多媒体资料包括教学PPT、视频教程等,用于辅助讲解和复习;实验设备包括计算机、网络等,用于学生上机实践和实验。
五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分。
平时表现主要评估学生的课堂参与度、提问回答和小组讨论等,占总评的30%;作业主要包括课后练习和项目任务,占总评的40%;考试包括期中考试和期末考试,占总评的30%。
评估方式客观、公正,能够全面反映学生的学习成果。
六、教学安排本课程的教学安排如下:共16周,每周2课时。
教学进度安排合理、紧凑,确保在有限的时间内完成教学任务。
教学地点选在教室,方便学生集中注意力和互动交流。
C语言实现可视化人机界面的有效方法

C语言实现可视化人机界面的有效方法C语言是一种通用的编程语言,被广泛应用于嵌入式系统、操作系统和应用程序的开发中。
尽管C语言本身并不直接支持图形用户界面(GUI)的开发,但通过结合一些第三方库和技术,我们可以实现C语言的可视化人机界面。
在C语言中实现可视化人机界面的有效方法包括以下几种:1.使用图形库:使用图形库可以使界面更加友好,并允许用户通过鼠标和键盘进行交互。
常用的图形库包括SDL、GTK+和Qt等。
这些图形库提供了丰富的绘图、事件处理和界面元素库,方便开发者创建具有各种功能和样式的界面。
2.使用控制台窗口:控制台窗口是C语言程序的默认界面,可以通过在控制台上输出文本、表格和图形来实现可视化界面。
控制台窗口的优势是简单易用,无需额外的库和依赖,适用于简单的界面需求。
3. 使用基于Web的界面:在C语言中,可以通过内嵌Web服务器的方式实现基于Web的可视化人机界面。
通过这种方式,可以使用HTML、CSS和JavaScript等Web技术创建动态交互的界面。
例如,可以使用C语言编写一个带有内嵌Web服务器的程序,然后通过浏览器与用户进行交互。
4.使用ASCII字符界面:ASCII字符界面是使用ASCII字符和控制字符进行界面渲染的一种简单但有效的方式。
通过C语言的输出函数,可以直接在控制台上绘制字符界面,包括文本、边框、按钮等。
虽然ASCII界面的交互性和表现力有限,但它适用于一些简单的控制台应用程序。
5. 使用跨平台的界面库:C语言的一个优势是跨平台性,开发者可以使用一些跨平台的界面库来实现可视化界面。
这样一来,可以在不同的操作系统上运行相同的C语言程序,并保持一致的界面体验。
跨平台的界面库包括FLTK、wxWidgets等。
在实现可视化人机界面时,除了选择适合的技术和库之外,还有一些其他的注意事项:1.设计良好的用户界面:用户界面应该易于使用、直观和符合用户的习惯。
在设计界面时,需要考虑用户的需求和使用习惯,合理布局界面元素,提供明确的操作指引和反馈。
C语言程序设计教程第2章程序流程

流程图
算法
确定
程序结构
变量类型
程序语句
(7)调试
调试
C语言程序设计
第二章 程序设计和程序结构
良好的程序编写风格会大大缩 短调试过程,附录4介绍了C语言程 序的一般书写风格,附录11介绍了 一些常见的错误。
C语言程序设计
第二章 程序设计和程序结构
2.1.2 算法
在实际的编程过程中要注意:
1、避免拿起题目就开始写程序的 2、应该先设计出合适的算法
第二章 程序设计和程序结构
本章概述
2.3程序结构 2.1程序设计与算法 2.4流程图及程序例子 2.2流程图
C语言程序设计
第二章 程序设计和程序结构
本章概述
• 本章主要介绍了C语言的程序结构、 流程图的绘制和程序设计的过程。 • 学习目标: • 1、理解程序的开发、设计过程 • 2、掌握C语言程序结构
C语言程序设计
第二章 程序设计和程序结构
其中最后一行的“Press any key to
continue”是VC6.0自动添加在每个
程序运行结果后面的一句提示信息,它
表示当程序执行结束时,操作者可以按
任意键返回到编辑界面。在后面的程序 运行结果中,将不再给出这一信息。
C语言程序设计
第二章 程序设计和程序结构
scanf("%d",&num1);
printf("Input the 2nd integer number: "); scanf("%d",&num2); sum=num1+num2; printf("sum=%d\n",sum); }
C语言程序设计
C语言GUI编程深入理解在C语言中实现形用户界面的方法

C语言GUI编程深入理解在C语言中实现形用户界面的方法C语言是一种通用的高级编程语言,常用于系统软件开发和嵌入式设备编程。
尽管C语言本身没有原生支持图形用户界面(GUI)的特性,但是我们可以利用一些库和技术来实现在C语言中的GUI编程。
本文将深入探讨在C语言中实现GUI的方法,帮助读者更加全面地理解C语言GUI编程的工作原理。
一、选择合适的库要在C语言中实现GUI,首先需要选择适合的GUI库。
目前比较流行且广泛使用的GUI库有GTK+、Qt和WinAPI等。
这些库提供了丰富的图形和用户交互组件,以及相应的API和事件处理机制。
根据项目需求和平台兼容性等因素,选择一个适合的GUI库非常重要。
二、理解图形绘制基础在GUI编程中,了解图形绘制基础是必要的。
通常,图形界面由一系列的图像和控件组成,我们需要掌握基本的绘制方法,如绘制线段、矩形和圆形等。
熟悉绘图函数和图形库提供的API,能够很好地实现自定义的界面效果。
三、事件驱动编程GUI程序是事件驱动的,用户的操作和交互会触发各种事件。
了解事件驱动编程是GUI编程的关键之一。
我们需要学会注册事件处理函数,并在用户的交互操作中相应地调用对应的处理函数。
这涉及到消息机制、事件循环和事件分发等概念。
四、布局管理在GUI界面中,合理的布局对于用户体验至关重要。
合理的布局可以使界面显得整洁美观,并提供更好的交互体验。
对于复杂的布局,我们可以采用一些布局管理器,如网格布局、流式布局或盒式布局等。
五、响应式设计响应式设计是现代GUI界面设计的趋势,它能够根据不同的设备和窗口大小自动调整布局和元素的显示效果。
为了实现响应式设计,我们需要根据窗口的大小变化事件重新计算和调整布局,使界面始终保持良好的可用性。
六、维护代码和资源GUI编程不仅仅是界面的设计和实现,还需要维护代码和资源。
我们应该采用模块化的编程方式,将代码分割为多个独立的模块,并合理组织资源文件。
这样可以更好地管理代码,提高可维护性和可扩展性。
C语言图形界面的编程

C语⾔图形界⾯的编程1.编写图形程序时⽤致电的⼀些图形库函数抣在graphics.lib中,扏⾏这些函数时,所需的有关信息(如宏定义等)则包含在graphics.h头⽂件中。
2.我们⽇常在电视屏幕上显⽰的画⾯,其实均由⼀些圆点组成(其亮度,顔⾊不同),这些点称为像素(或像点),它们是组成图形的最⼩单位。
3。
插在PC机插槽中的图形卡(即适配器),其作⽤就是将要显⽰的字符和图形以数字形式存储在上的显⽰存储器(VRAM)中,再将其变成视频模拟信号送往相应适配的显⽰器机配有的显⽰器种类不同,因⽽适配器种类不同4,VGA:视频图形阵列适器:VGA是⽬前流⾏的PC机显⽰标准,它⽀持CGA,EGA的所有显⽰⽅式,但⾃已还有640*480像素的16⾊显⽰⽅式, 640*350像素的中分辨率显⽰⽅式和640*200像素的低分辨显⽰⽅式,它们均有16种显⽰顏⾊可供选择。
5.CVGA:是国内研制的带有显⽰汉字功能的VGA图形适配器,带有汉字字库,该适配器提供了和CGA,EGA,VGA全兼容的⼯作⽅式,还担供了在⽂本⼯作⽅式下的⾼分辨率图形显⽰功能。
6.显⽰器有两种⼯作⽅式,即⽂本显⽰和图形显⽰。
它们的区别是显⽰存储器中的存储的信息不同。
字符⽅式时, VRAM存放要显⽰字符的ASCII 码,⽤它作为,取出字符发⽣器ROM中存放的相应字符的图像(⼜称字模),变成视频信号在显⽰器上进⾏显⽰;⽽当选择图形⽅式时,则要显⽰的图形的图像直接存在VRAM中中,VRAM中某单元存放的数就表⽰了相应屏莫上某⾏和某列上的像素及顔⾊7.对EGA显⽰器,调⾊板即16个调⾊板寄存器是⼀个顔⾊索引表,它存有16种顔⾊,VRAM中的每个像素值(是4位)实际代表⼀个顔⾊索引号该值即上述函有选举权的参数index可知道选中哪个调⾊板寄存器,⽽每个调⾊板寄存器为6位,故可⽤6位⼆进制数表⽰⼀个顔⾊,因⽽可有64种顔⾊供选择。
该顔⾊值即是上述参数octual_color,8.对于VGA显⽰器,也只有⼀个调⾊板,对应16个调⾊板寄存器。
mfc界面设计教程

mfc界面设计教程MFC(Microsoft Foundation Classes)是一套用于开发Windows平台上图形用户界面(GUI)的C++类库。
MFC界面设计是开发Windows应用程序中不可或缺的一部分。
本文将向您介绍一些MFC界面设计的基本原则和技巧,帮助您创建出具有吸引力和用户友好的应用程序界面。
首先,设计一个清晰的用户界面是至关重要的。
您需要确保您的应用程序界面布局简洁明了,易于导航。
使用适当的菜单和工具栏来组织您的功能,使用户能够方便地找到和使用这些功能。
避免界面过于拥挤或混乱,这会给用户带来困惑和不满。
其次,选择合适的颜色和字体可以提升您应用程序界面的外观。
一般来说,最好选择与您应用程序主题相关的颜色,并确保文字清晰可读。
避免使用太多花哨的字体或颜色,这可能会让用户感到眼花缭乱。
另外,为您的界面添加一些可视化元素也是一个不错的选择。
例如,您可以使用图标来表示不同的功能或操作,这有助于用户更快地识别和理解这些内容。
您还可以考虑使用一些动画效果或过渡效果来吸引用户的注意力,但要确保这些效果不会分散用户的注意力或降低应用程序的性能。
此外,考虑到用户的反馈是很重要的。
您可以通过使用弹出窗口、对话框或状态栏来向用户显示相关的提示信息,告知他们当前的操作状态或发生的错误。
提供适当的错误处理机制也非常重要,以便用户能够轻松地解决问题或进行必要的更正。
最后,测试是一个不可忽视的环节。
在设计和开发过程中,您应该经常测试您的界面,以确保它在不同屏幕分辨率和操作系统上都能够正常显示和工作。
同时,您还应该进行用户体验测试,以了解用户对您设计的界面的感受和反馈,并根据需要进行相应的修改和改进。
总结起来,MFC界面设计需要注意清晰布局、合适的颜色和字体、可视化元素、合理的反馈机制以及充分的测试。
通过遵循这些原则和技巧,您可以创建出用户友好和吸引人的应用程序界面。
希望本文对您的MFC界面设计有所帮助!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Windows程序员的工作就是对所开发的应用程序所要
发出或者接收的消息进行排序和管理。事件驱动程序
方法提供了许多便利,对于那些需要大范围用户干预
的应用程序来说,更是很有用处。
2019/9/11
13
C#程序设计实用教程
9.1.3 计算器事件
在“窗体设计器”中看到的是窗体及其中的控件,而 要为控件添加事件处理程序就必须先切换到代码编辑 器状态。
(2)标签:1个。 用于标示计算结果所在的文本框。
(3)文本框:1个。 用于显示计算结果。
2019/9/11
10
C#程序设计实用教程
9.1.2 计算器控件
具体添加控件步骤如下:
首先向窗体中添加按钮(Button)。 具体操作为:
在工具箱中单击Button,然后移动鼠标指针到窗体中的预定 位置,按下左键拖动鼠标,划出一个方框,释放鼠标左键后, 一个按钮就被添加到刚才方框的位置了。调整好大小和位置 后单击选中该按钮,在“属性”窗口中可以看到该控件名为 Button1,将该按钮的Text属性设置为“1”。
9.1.3 计算器事件
case '/': if (arg2 == 0) { throw new ApplicationException(); } else { r = arg1 / arg2; break; }
break; default:
throw new ApplicationException(); }
控件是添加到窗体对象上的对象,每个控件都有自己的 属性、方法和事件以完成特定的功能。
Windows应用程序设计还体现了另外一种思维,即对事 件的处理。
2019/9/11
2
C#程序设计实用教程
本章将介绍建立Windows应用程序、使用 Windows Forms常用控件、菜单和多文档界面设计 等。
Windows窗体可视化设计器。 识别代码编辑器。 集成的编译和调试。 项目管理工具。
2019/9/11
5
C#程序设计实用教程
9.1 Windows应用程序的结构
典型的Windows应用程序通常包括窗体(Forms)、控 件(Controls)和相应的事件(Events)。
下面通过C#设计实现一个简单的计算器,要求能够实现 基本的加、减、乘、除功能,并以这个“计算器”为例, 来了解和掌握Windows应用程序的一般开发过程。
改变控件的属性可以改变的外观和特性。
2019/9/11
9
C#程序设计实用教程
9.1.2 计算器控件
本例中需要用到如下所列的控件: (1)按钮:16个。
10个数字按钮分别用于表示0~9; 4个运算符按钮表示“+”、“-”、“*”、“\”; 1个“计算”按钮用于实施计算操作; 1个“清空”按钮用于清除上次计算结果。
string s2 = t.Substring(space + 3);//s2用于保存第二个运算数
Single arg1 = Convert.ToSingle(s1);//将运算数从string转换为 Single
Single arg2 = Convert.ToSingle(s2);
2019/9/11
2019/9/11
21
C#程序设计实用教程
9.1.3 计算器事件
//将计算结果显示在文本框中 textBox1.Text = r.ToString(); }
现在,所有的工作都完成了。在“调试”菜单中选 择“启动”命令或者“开始执行(不调试)”命令 运行该应用程序,计算器可以工作了。
2019/9/11
2019/9/11
6
C#程序设计实用教程
9.1.1 计算器窗体
Windows窗体就是创立Windows应用程序的框架。
在中创建Windows应用程序的第一步就是建立 这个框架。操作步骤如下:
(1)运行,在【起始页】上单击【新建项目】按
钮,打开“新建项目”对话框,如图9-1所示。在“项 目类型”列表框中指定项目的类型为“Viusal C#”, 在“模板”列表框中选择“Windows应用程序”模板, 在“名称”文本框中输入Calculator,在“位置”下拉 列表中选定保存项目的位置。
同时向大家展示用Windows窗体来编写程序的特点 以及技巧。
2019/9/11
3
C#程序设计结构
• 集成开发环境是基于.NET Framework构建 的,该框架提供了一个有条理的、面向对象的、可扩 展的类集,它使用户得以开发丰富的Windows应用 程序。
切换到代码编辑器有以下几种方法:
(1)双击窗体或者某控件。 (2)在解决方案资源管理器中右键单击Form1.cs,从快捷
菜单中选择“查看代码”命令。如果选择“视图设计器”则 可以回到“窗体设计器”中。
(3)当第一次切换到代码编辑器之后,在窗体标题 “ Form1.cs[ 设 计 ] ” 的 左 边 会自 动 出 现一 个 新 的标 题 : Form1.cs,单击该标题就可以切换到代码编辑器。反之, 如果单击“Form1.cs[设计]”则会切换到“窗体设计器”。
22
C#程序设计实用教程
9.2 Windows窗体
通过“计算器”这个例子,已初步了解了Windows应 用程序的结构。
下面具体介绍Windows应用程序的设计和开发。
一个应用程序除了需要实现应有的功能外,还必须具 有良好的用户界面。在C#中,Windows应用程序的 界面是以窗体(Form)为基础的,窗体是Windows应 用程序的基本单位,用来向用户展示信息和接受用户 的输入。
• 通过Windows“窗体设计器”进行设计窗体,用户 就可以创建Windows应用程序和客户机/服务器应用 程序。用户可对窗体设定某些特性并在其上添加控件, 然后编写代码以增加控件和窗体的功能。
2019/9/11
4
C#程序设计实用教程
9.1 Windows应用程序的结构
提供了很多工具可以使应用程序的开发快捷、 可靠。这些工具包括:
窗体可以是标准窗口、多文档界面(MDI)窗口、对 话框的显示界面。
2019/9/11
23
C#程序设计实用教程
继续在窗体中添加其余15个按钮,并分别设置好它们的属性。
2019/9/11
11
C#程序设计实用教程
9.1.2 计算器控件
• 按照同样的方法在窗体中添加一个标签(Label),设 置其Text属性为“结果”,再添加一个文本框 (TextBox),并设置其Text属性为空。
• 最后,一个简单的计算器的界面就完成了,如图9-3所 示。
private void btn1_Click(object sender, EventArgs e) {
Button btn = (Button)sender; textBox1.Text += btn.Text; }
2019/9/11
15
C#程序设计实用教程
9.1.3 计算器事件
继续给其他数字按钮添加同样的代码。
2019/9/11
7
C#程序设计实用教程
9.1.1 计算器窗体
(2)单击“确定”按钮后就进入的主界面,如图9-2所示。
•从图9-2可以看出,当选择“Windows应用程序”作为应 用程序的模板后,系统会自动为用户生成一个空白窗体, 一般名为Form1。 •该窗体就是应用程序运行时显示给用户的操作界面,下 一步就是向窗体中添加各种控件。
2019/9/11
14
C#程序设计实用教程
9.1.3 计算器事件
下面分析一下计算器中各个控件到底应该添加什么样 的代码。
对于计算器来说,当单击某个数字键后,结果显示区 内应显示该键上的数字。
因此,可以双击按钮“1”,切换到代码编辑器,此 时光标就停留在该按钮所对应的代码处,输入下列代 码:
19
C#程序设计实用教程
9.1.3 计算器事件
switch (op) {
case '+': r = arg1 + arg2; break;
case '-': r = arg1 - arg2; break;
case '*': r = arg1 * arg2; break;
2019/9/11
20
C#程序设计实用教程
}
private void btnMul_Click(object sender, EventArgs e) {
Button btn = (Button)sender; textBox1.Text = textBox1.Text + " " + btn.Text + " ";//空 格用于分隔数字各运算符
第9章 Windows应用程序设计基础
C#是一种可视化的程序设计语言。 Windows窗体和控件是开发C#应用程序的基础,窗体
和控件在C#程序设计中扮演着重要的角色。在C#中, 每个Windows窗体和控件都是对象,都是类的实例。 窗体是可视化程序设计的基础界面,是其他对象的载体 和容器。
{
Single r;
//用于保存计算结果
string t = textBox1.Text; //t用于保存文本框中的算术表达式
int space = t.IndexOf(' ');//用于搜索空格位置
string s1 = t.Substring(0, space);//s1用于保存第一个运算数
char op = Convert.ToChar(t.Substring(space + 1, 1));//op用于 保存运算符