c语言循环并行处理,C语言设计并行处理
要编写一个好的游戏,必需使用到并行机制。并行机制要涉及到一个重要的语句,那就是While语句。你可能不禁会问:那不就是循环吗?对,并行机制就是要利用循环,即游戏循环(Game Loop)。实际上,所有程序并行的本质就是循环,连Windows也不例外。Windows号称多任务操作系统,
实际上,在一个时间内CPU只能执行一条指令。所谓多任务,不过是并行的假象而已。在一个循环中分别执行各程序的一条语句,由于执行完该循环速度极快,于
是看起来好象是多个任务同时工作一样。还有……,哎,不用费口舌了。相信你对并行有了一个初步应像,这就可以了,让我们继续。
不是有一种for循环吗,为什么不用它呢?对,for循环也可以。只要可以构成死循环的语句都可以。死循环呀,听起来有点可怕。其实解决死循环简单的很,用break语句,再不行用goto语句,一切死循环都轻松搞定。现在就让我们来练一下兵:
main()
{ int key;
while(1)
{if(kbhit())
{key=getch();
if(key==0){getch();continue;}
if(key==27)break;
if(key==13)printf("\n");/*支持回车*/
if(key==8&&wherex()>0)
{gotoxy(wherex()-1,wherey());/*支持退格*/
putch(' ');
}
printf("%c",key);/*输出字符*/
}
}
}
上面就是一个典型的文本编辑器界面,现在让我们来修改一下该程序,在屏幕右上角做一个计时器和一个计算击键次数的计数器,该计时器与计数器与文本编辑互不干扰,达到并行的效果。
main()
{ int key,x,y,n=0;
clrscr();
while(1)
{if(kbhit())
{key=getch();
if(key==0){getch();continue;}
if(key==27)break;
if(key==13)printf("\n");/*支持回车*/
if(key==8&&wherex()>0)
{gotoxy(wherex()-1,wherey());/*支持退格*/
putch(' ');
gotoxy(wherex()-1,wherey());
continue;
}
printf("%c",key);/*输出字符*/
n++;/*计数*/
}
x=wherex();y=wherey();
gotoxy(55,1);
printf(" %d sec,keydown times %d ",clock()/18,n);/*记时,显示*/
gotoxy(x,y);
}
}
现在我们实现了简单的并行机制。然而,该循环有个缺点:太耗CPU,如果不按下任何键,CPU也会不停地刷新计数与记时器。于是我们引入了周期的概念,使一个周期只执行一次语句,这样即节省CPU,使用要求执行速度不同的并行语句也容易控制。程序入下:
/*并行结构*/
#define delay_time 4; /*定义的周期长度*/
main()
{ long now_time=0,old_time,time_count=0;
char done=0; /*使用done标志使每一个周期只执行一次指令*/
clrscr();
old_time=clock();
while(!kbhit())
{now_time=clock();
if(now_time-old_time{if(!done)
{puts("计算!"); /*该语句可替换为自己需要并行的语句块*/
done=1;
}
}
else
{old_time=now_time;done=0;}
}
}
如果上面的puts语句换成两个沿对角线移动小球的语句,不就可以实现两个小球同时运动了吗?在程序中动态地调整delay_time的值,还可以确定小球移动的快慢。这只是一个提示,只要遵循该结构,还可以实现好多有趣的效果可以自己去研究。
c语言循环并行处理,C语言设计并行处理相关推荐
- c语言循环教案,C语言教学(七-上)for循环
原标题:C语言教学(七-上)for循环 今天带大家了解C语言for循环的用法,我们知道计算机对每行代码的处理只有一次,如果我们需要重复进行某一步骤的时候,那不是需要重复敲这一段代码吗,要是需要重复一千 ...
- c语言三种循环结构特点,c语言循环结构(c语言循环结构特点)
1.while循环 while语句的一般形式为:while(表达式)语句.其中表达式是循环条件,语句为循环体.while语句中的表达式一般是关系表达或逻辑表达式,只要表达式的. for语句循环1 fo ...
- C语言用for循环求最大公约数,C语言循环结构
-C语言求最大公约数
这是一个C语言 while 循环示例:求正整数 m 和 n 的最大公约数. 问题分析 输入:两个正整数. 输出:一个正整数(最大公约数). 最大公约数(gcd)是指几个数共有的因数之中最大的一个数,比 ...
- c语言循环结构排序,C语言循环结构
-C语言冒泡排序算法(附带源码)
排序(sorting)就是调整列表的顺序,是计算机编程中经常要做的一件事情.经过排序以后的数据,可以极大地提高查找的效率. 冒泡排序(bubble sort)是用嵌套的 for 循环来实现的,其名称来 ...
- 统计字符C语言循环结构,C语言循环结构
-C语言统计字符和数字的个数
这是一个C语言 while 循环示例:输入一串以?为结束标志的字符,统计其中字母和数字的个数. 问题分析 输入:从键盘输入一个以?结尾的字符串. 输出:两个整数(分别表示字母和数字的个数). 这是一个 ...
- c语言计算数列和循环,C语言循环结构
-C语言数列求和(使用for循环)
C语言 for 循环示例:计算 1+2+3+-+100. 问题分析 本题需要反复累加 100 次,而且每次累加的数字都递增 1.这种特性完全符合 for 循环语句的使用条件. 利用 for 循环语句的 ...
- 用c语言循环语句,C语言中循环语句有哪些具体怎么用
C提供三种基本的循环语句:for语句.while语句和do-while语句. 一.for循环 for循环是开界的. 它的一般形式为: for(;;) 语句; 初始化总是一个赋值语句,它用来给循环控制变 ...
- c语言循环8,C语言8 循环语句 | CN-SEC 中文网
摘要 如何实现让某些语句按照一定的条件重复执行呢?比如:打印从0 - N的值? 例子: goto语句 如何实现让某些语句按照一定的条件重复执行呢? 比如:打印从0 - N的值? 例子: goto语句 ...
- c语言循环菜鸟,C语言菜鸟基础教程之for循环
先看程序: #include int main() { for(int i = 0; i < 5; i++) { printf("i = %d\n", i); } print ...
- 杨辉三角c语言程序for循环,C语言循环结构
-C语言打印杨辉三角
杨辉三角形是一个由数字排列组成的三角形数表.其一般形式如图 1 所示,每行开始和结尾处的数字都为 1,其他数字都是它所在行的上一行中靠近它的两个数之和. 图 1:杨辉三角形 请编程输出其中的前 n(n ...
最新文章
- 汉拓中国CRM评估报告简介
- 京东B2B业务架构演变阅读心得
- 计算机考研计划时间,2019计算机考研时间安排:复习时间规划
- 很漂亮个人主页自带音乐源码
- Amazon发布可持续性数据集,可用于多个领域的数据分析
- hiveserver2启动不起来_汽车一键启动除了点火,还有这些功能!车主:现在才明白...
- Centos6.6系统root用户密码恢复案例(转)
- 每天CookBook之JavaScript-032
- 【转】OCI-22053: 溢出错误的原因和解决方法
- Python绘制分形树(一)
- 暴风影音 去广告 方法
- 3 Idiots ——谢 阿米尔·汗
- 安装create-react-app教程及简单配置
- 计算机知识博大精深,如何学好计算机之忠言逆耳
- 09-01 面向对象编程
- 切换笔记本外接显示屏 屏幕显示的快捷键
- JSteg信息隐藏算法
- 语音模块LD3320模块的二次开发,并与树莓派进行串口通信
- 神经网络中warmup为什么有效?
- 创业需谨慎:减少摩擦,打造快乐体验