极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11296|回复: 6

求解释!!功能怎么实现??

[复制链接]
发表于 2013-9-28 13:20:15 | 显示全部楼层 |阅读模式
void loop()
{  
   while(1)
   {
       digital_1();//显示数字1
       while(analogRead(0)>1000);//如果读到模拟0口的值1000则说明有按键按下
       delay(100);//延时200ms
       digital_2();//显示数字2
       while(analogRead(0)>1000);//如果读到模拟0口的值1000则说明有按键按下
       delay(100);//延时200ms
        
   }
}
回复

使用道具 举报

发表于 2013-9-28 13:41:48 | 显示全部楼层
while语句的语义是:计算表达式的值,当值为真(非0)时, 执行循环体语句。其执行过程可用下图表示。

【例6.2】用while语句计算从1加到100的值。用传统流程图和N-S结构流程图表示算法,见图:

main()
{
   int i,sum=0;
   i=1;
   while(i<=100)
        {
sum=sum+i;
          i++;
         }
   printf("%d\n",sum);
}


【例6.3】统计从键盘输入一行字符的个数。
#include <stdio.h>
main(){
    int n=0;
    printf("input a string:\n");
    while(getchar()!='\n') n++;
    printf("%d",n);
}

    本例程序中的循环条件为getchar()!='\n',其意义是, 只要从键盘输入的字符不是回车就继续循环。循环体n++完成对输入字符个数计数。从而程序实现了对输入一行字符的字符个数计数。

使用while语句应注意以下几点:

while语句中的表达式一般是关系表达或逻辑表达式,只要表达式的值为真(非0)即可继续循环。
【例6.4】
main(){
    int a=0,n;
    printf("\n input n:    ");
    scanf("%d",&n);
    while (n--)
      printf("%d  ",a++*2);
}

本例程序将执行n次循环,每执行一次,n值减1。循环体输出表达式a++*2的值。该表达式等效于(a*2;a++)。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-28 18:32:25 | 显示全部楼层
谢谢,有一点不明白
digital_1();//显示数字1
        while(analogRead(0)>1000);//如果读到模拟0口的值1000则说明有按键按下
        delay(100);//延时200ms

while();后面没有表达式了,接下来怎么执行
回复 支持 反对

使用道具 举报

发表于 2013-9-29 00:29:22 | 显示全部楼层
linxuan_1990 发表于 2013-9-28 18:32
谢谢,有一点不明白
digital_1();//显示数字1
        while(analogRead(0)>1000);//如果读到模拟0口的值 ...

一直在while(1){}内循环
回复 支持 反对

使用道具 举报

发表于 2013-9-29 05:39:02 | 显示全部楼层
本帖最后由 laofuz1024 于 2013-9-29 05:40 编辑
linxuan_1990 发表于 2013-9-28 18:32
谢谢,有一点不明白
digital_1();//显示数字1
        while(analogRead(0)>1000);//如果读到模拟0口的值 ...


是指  while(analogRead(0)>1000) 的后面是 ; 号,没有表达式吗?

后面是分号,没有表达式,就会回头去判断 analogRead(0)>1000
如果这句结果是真,那就会什么也不干,因为没有表达式,什么也不干,马上又跳回判断 analogRead(0)>1000。也就是说,如果这条式子成立,那就会不停地判断这式子,发现式子成立,什么也不干又回判断

就相当于   我问你是姓陈吗?你回答是,那我什么也不干又继续问你是姓陈吗,如此循环..........
如果你回答不是了,那我就走开去干别的事情

如果这条式子不成立,就会去执行 下面的 delay(100); 这些语句...
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-29 11:13:41 | 显示全部楼层
laofuz1024 发表于 2013-9-29 05:39
是指  while(analogRead(0)>1000) 的后面是 ; 号,没有表达式吗?

后面是分号,没有表达式,就会回头 ...

谢谢大哥,明白了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-29 11:15:47 | 显示全部楼层
a5123058 发表于 2013-9-29 00:29
一直在while(1){}内循环

谢谢,你回答的,不是我要问的内容。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-8 12:49 , Processed in 0.056528 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表