网站大量收购独家精品文档,联系QQ:2885784924

第1篇 交互式c语言.ppt

  1. 1、本文档共78页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
^:按位异或 ① 执行前两个赋值语句:a=a∧b和b=b∧a相当于b=b∧(a∧b)。b^b=0,a^0=a,最终值为a。 ② 再执行第三个赋值语句: a=a∧b。由于a的值等于(a∧b),b的值等于(b∧a∧b), 因此,相当于a=a∧b∧b∧a∧b,即a的值等于a∧a∧b∧b∧b,等于b。 ~:按位取反 一元运算符,用于求整数的二进制反码,即分别将操作数各二进制位上的1变为0,0变为1。 左移 用来将一个数的各二进制位左移若干位,移动的位数由右操作数指定(右操作数必须是非负值),其右边空出的位用0填补,高位左移溢出则舍弃该高位。 左移1位相当于该数乘以2,左移n位相当于该数乘以2n,(15<<2=60。但此结论只适用于该数左移时被溢出舍弃的高位中不包含1的情况。 右移 用来将一个数的各二进制位右移若干位,移动的位数由右操作数指定。右移n位,相当于除以2n 。 无符号数(有符号数的正数),右移时左边高位移入0。 有符号数的负数,移入0的为逻辑右移,移入 1的 为算术右移。 JC的库函数 JC的库函数 JC中的多任务 JC 的一个强大的功能是支持多任务。在用户程序运行期间,进程可以动态地建立和撤消,一个进程就是一个独立运行的任务。 任何C函数都可以作为一个独立的进程使用。可以创建多个进程运行同一段代码(如调用同一个函数),在每个进程中此代码都有对应的局部变量。 进程通过全局变量进行通讯:在一个进程中给全局变量赋值,在另外一个进程中可以读这个全局变量的值。 多个进程运行是通过分配时间片实现的。每个进程一次只执行一定数量的时间片(以毫秒为单位)。这个值在每个进程创建时确定。缺省的片数为5,因此,在一个“轮次”中,一个进程将运行5毫秒,然后交给下一个进程运行。所有的进程依次放在一个进程表中,系统从头到尾每轮一遍进程表,每个进程都运行一次(运行时间对应于各自的时间片长度)。 JC中的多任务 每个进程都有自己的栈,用于函数调用传递参数,存放局部变量,存放函数调用的返回地址。栈的大小在进程创建时确定。一个进程栈的缺省大小为256 字节。 进程的创建、撤消(P27-28 、 P53) int start_process(function-call( ),[ticks],[stack-size]) 是 创 建 进程函数, 可以用来创建新进程。star_process 取得一个进程标识,function-call(...)是进程函数。创建进程有两个可选参数:进程的时间片数TICKS和栈大小STACK-SIZE。如果只给定一个参数,它被认为是时间片数,栈的大小为缺省值。start_process 返回一个整数,它就是新进程的进程标识ID。 用 start_process 函数加上可选参数,可以很方便地创建一个非缺省时间片数和非缺省栈大小的进程,例如: start_process(check_sensor(2), 1, 50); 将创建一个 check_sensor 进程,它每次运行1毫秒,栈大小为50 个字节(此处check_sensor 使用较小的栈更有效)。 void check_sensor(int n) /*定义进程函数,检测和显示模拟口n的值*/ { while (1) { printf(Sensor %d is %d\n, n, analogport(n)); wait(0.1); } } void main() { start_process(check_sensor(2)); /*创建进程*/ } 正常情况下一个C函数结束时,它会返回一个值或者无返回值。如果一个函数是作为进程来运行的,则在它结束时的返回值(如果有)是得不到。这是允许的,因为进程间的通讯是通过将结果存于全局部量中进行的,而不是通过返回值来返回的。在上面的例子中,check_sensor 定义为一个无限循环函数,以保证其一直运行,除非机器人被复位或执行了撤消进程命令。 撤消进程 int kill_process(int pid); 用于撤消进程。撤消一个进程,是通过将进程标识 ID 传给kill_process 来实现的。 kill_process 的返回值表明撤消进程是否成功。如果返回值是0,表明进程被撤消。如果返回值是1,表示没有找到该进程。 Pid=start_process(…); kill_process(int pid); 下面的代码显示创建一个 check_sensor 进程,1秒钟后终止该进程的例子: void main() { int pid; pid= start_process(check_sensor(2)); wait(1.0); kill_process(pid); } 问题:1、多个进程如果进行通讯怎么办?

文档评论(0)

189****6140 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档