精华内容
下载资源
问答
  • Java 随手笔记(入门篇)_ 4

    千次阅读 2012-11-19 16:40:02
    程序流程控制结构和方法 ...复合语句就是一些简单语句的组合了,例如一个方法等等。一般来说语句的执行流程是按顺序来进行的,但是当遇到一些特殊的条件,比如循环,这时候语句就会按照流程控制结构来进行了。

      程序流程控制结构和方法

         程序流程控制结构分为:顺序、选择、循环以及异常处理结构。语句是程序的基本组成单位。在java中分简单语句和符合语句,简单语句就是一行代码,例如,private int 3=3;复合语句就是一些简单语句的组合了,例如一个方法等等。一般来说语句的执行流程是按顺序来进行的,但是当遇到一些特殊的条件,比如循环,这时候语句就会按照流程控制结构来进行了。

            (1)选择结构

                 选择结构用于根据不同的条件,实现不同的操作,它提供了一种机制,使得程序根据相应的条件运行对应的语句。java言语实现选择结构有两种形式:一种是两路分支选择的if-else语句,另一种是多分枝选择的switch语句。选择语句需要用到逻辑学里面的东西,但是比较浅显,如命题的真假,是否等。逻辑命题用于逻辑表达式表示,用作两路分支或多路分支结构的逻辑条件。

        显然,我们比较关心条件的书写,那这个条件一般有:关系表达式,逻辑表达式和条件运算表达式。

         ①关系表达式:用关系运算符把两个表达式连接的式子。计算两个同类型表达式的值,然后进行比较,其结果为:真(true)或假(false)。例如:

            x%2==0;

            x+y>=0;

         ②逻辑表达式:操作数是逻辑值且用逻辑符连接的表达式的式子成为逻辑表达式,其值仍为逻辑值。例如:

            x>6&&y<3;

            x>6||y>8;

            y%4==0&&y%100!=0&&y%400==0          //y是闰年条件

          ③条件运算表达式:由三目运算符连接起来的表达式,语法格式为:(逻辑表达式)?(表达式1):(表达式2)。当逻辑表达式的值为真时,返回表达式1的值,否则,返回表达式2的值。

          (2)if-else语句
        一般的if-else语句是这样的,

         if(逻辑表达式){         或        if(逻辑表达式) 语句1;
           语句1;                         [else 语句2;]
          }else{
          语句2;
          }
           if语句是专门用来实现选择结构的语句,它根据逻辑条件中的真假来决定运行两种操作中的一种。例如:闰年的条件是:能被4整除但又不能被100整除,或正被400整除的公元年。所以,闰年的判断可以用一个逻辑表达式表示。
      下面来判断2012年是否为闰年: 
    public class IsLeapYear{
    public static void main(String args[]){
       int year=2012;
       boolean leapYear=(year%4==0&&year%100!=0||year%400==0);
       if(leapYear){
         System.out.println(year+"是闰年");
        }else{
         System.out.println(year+"不是闰年");
         }
      }
    } 
        if-else语句的嵌套:
       在if-else语句中的语句1或语句2中的语句也可以是if-else语句,这样就形成了if-else语句的嵌套。其中最常用的是else if语句嵌套的多选择结构:  
    if() 语句1
    else if(逻辑表达式) 语句2
    ........
    else if(逻辑表达式) 语句n
    else 语句n+1
       程序运行时会从上至下判断逻辑条件,一旦某个逻辑条件满足(即布尔表达式的值 为真),则运行相应的语句,然后就不再判断其他的条件,直接转到结构出口,运行if语句的后续语句。当然在这种多选择的结构中,比较容易犯混淆if与else之间的搭配关系。java语言规定:else总是与离它最近的if配对。如果需要可以用花括号{}来改变配对关系,其实我们经常这样做。
       
    展开全文
  • 就是说,在一个函数的函数体内, 不能再定义另一个函数, 即不能嵌套定义。但是函数之间允许相互调用,也允许嵌套调用。习惯上把调用者称为主调函数。 函数还可以自己调用自己,称为递归调用。main 函数是主函数,...
  • 阅读程序,根据程序功能,在指定的空白处填上适当的语句或语法成分,使程序完整。 1.下面是一个类的定义: public class ____________ { int x, y; Myclass ( int i, _______) // 构造函数 { x=i; y=j; } } 2.下面是...
  • ②在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效,这种复合语句也称为“分程序”或“程序块”。——》在分程序或程序块中亦可以定义局部变量。调用结束或离开复合语句,局部变量占用内存...

    1,局部变量

    ①定义:在一个函数内部定义的变量是内部变量,它只在本函数范围内有效,也就是说只能在本函数内才能使用它们,在此函数以外是不能使用这些变量的。
    ②在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效,这种复合语句也称为“分程序”或“程序块”。——》在分程序或程序块中亦可以定义局部变量。调用结束或离开复合语句,局部变量占用内存释放。

    2,全局变量

    程序的编译单位是源程序文件,一个源文件可以包含一个或若干个函数。在函数内定义的变量是局部变量,而在函数外定义的变量称为外部变量,外部变量是全局变量(也称全程变量)。其有效范围从定义变量的位置开始到本源文件结束。
    ②约定:对于全局变量,将其变量名首字母大写以与普通变量区分。
    ③当外部变量与局部变量同名时,外部变量被局部变量屏蔽。

    3,总结图


    展开全文
  • 存储类和作用域规则

    2010-03-22 10:10:00
    分程序是由一对花括号扩起来的一段程序,一个函数就是一个分程序,一个复合语句也是一个分程序。C语言中分程序结构允许并列或嵌套。函数可以看成是最外一层并列的分程序,只是它被命名,并可以带参数和具有返回值。1...

    C语言的存储类分为四种,它们是auto自动的,extern外部的,static静态的,register寄存器的。

    分程序是由一对花括号扩起来的一段程序,一个函数就是一个分程序,一个复合语句也是一个分程序。C语言中分程序结构允许并列或嵌套。函数可以看成是最外一层并列的分程序,只是它被命名,并可以带参数和具有返回值。

    1)      自动变量

    C语言规定,在函数(或分程序)内定义的名字只要不加存储类说明,都表示自动的。自动变量的存储空间是这样分配的:当进入一个函数(或分程序)时,系统自动地为该函数(或分程序)定义地自动变量分配存储空间。这样,这个函数(或分程序)中,这些变量是可访问地,当函数(或分程序)执行完毕后,自动变量所占地存储空间被系统自动回收,或者说被自动释放,因而这些变量就不再存在,下次调用该函数时,系统再为这些变量分配存储空间。正是因为这种变量函数(或分程序)的运行而产生,随函数(或分程序)的执行完毕而消失才把它们叫做自动变量。

    2)      外部变量

    任何函数外部定义的变量都是外部的。外部变量的作用域可以是真个程序,一般来讲,如果没有特殊说明,它的作用域是从定义处到本文件结束。在函数外说明了某些变量后,后面所有函数都可以对它们进行访问,外部变量的值在整个程序运行期间一直保存。

    3)      静态变量

    静态变量分为内部(自动)静态变量和外部静态变量,在函数中定义的是内部静态变量,在函数外定义的是外部静态变量,内部静态变量的作用域是它所处的函数(或分程序),外部的静态变量的作用域是它所在的文件。

    一个内部静态变量的存储形式是这样的:当第一次调用该变量所在的函数时,系统为它分配存储单元,当控制从函数退出时,并不释放静态变量所占的存储单元,其值也仍然保留,下次再调用时,静态变量仍拥有上次调用时留下的值。

    外部静态变量的作用域从定义处起知道所在文件的尾部,对其他文件及本文件定义之前的部分都是不可见的,即使加上extern。也就是说它有很不错的隐蔽性。使用外部静态变量可以起到几个函数共享数据,而对其他函数保密的作用。

    4)      寄存器变量

    计算机中只有寄存器中的数据才能够直接参加运算,而一般变量时放在内存中,变量参加运算时,需要先把变量的值从内存中取到寄存器中,然后计算,再把计算结果回放到内存中取。关键字register,为了减少内存访问,提高运算速度,C语言规定允许定义所谓寄存器变量,即希望寄存器来做变量的存储单元。寄存器变量只能在函数中定义,并只能是int char类型,一般只是使用最频繁的变量才定义成寄存器变量,如循环控制变量等。

    展开全文
  • 1.什么是命名空间:  命名空间:实际上就是一个由程序设计者命名的内存区域,程序设计者可以根据需要指定一些有名字的空间域,把... 在 C语言中定义了3个层次的作用域,即文件(编译单元)、函数和复合语句。C++...

    1.什么是命名空间:

      命名空间实际上就是一个由程序设计者命名的内存区域,程序设计者可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来。

     

    2.命名空间的作用:

      命名空间是ANSIC++引入的可以由用户命名的作用域,用来处理程序中常见的同名冲突。

      在 C语言中定义了3个层次的作用域,即文件(编译单元)、函数和复合语句。C++又引入了类作用域,类是出现在文件内的。在不同的作用域中可以定义相同名字的变量,互不于扰,系统能够区别它们。

     

    3.命名空间的定义和基本使用方法:

    #include <iostream>
    using namespace std;
    // 在声明一个命名空间时,花括号内不仅可以包括变量,而且还可以包括以下类型:
    //     ·变量(可以带有初始化);
    //     ·常量;
    //     ·数(可以是定义或声明);
    //     ·结构体;
    //     ·类;
    //     ·模板;
    //     ·命名空间(在一个命名空间中又定义一个命名空间,即嵌套的命名空间)。
    //     例如
    namespace NS
    { 
        const double RATE=0.08; //常量
        double pay = 200;       //变量
        double tax()            //函数
        {
            return pay * RATE;
        }
        namespace InterNS       //嵌套的命名空间
        {
            int age = 29;
        }
    }
    
    //如果想输出命名空间NS中成员的数据,可以采用下面的方法:
    void func()
    {
        cout<<NS::RATE<<endl;
        cout<<NS::pay<<endl;
        cout<<NS::tax()<<endl;
        cout<<NS::InterNS::age<<endl; //需要指定外层的和内层的命名中间名
    
    }
    
    int main()
    {
        func();
        //pay = 1000; //error C2065: “pay”: 未声明的标识符 
        while(1);
        return 0;
    }
    // 
    // 0.08
    // 200
    // 16
    // 29

     

    4.利用命名空间来解决程序名字冲突问题实例:

    #include <iostream>
    using namespace std;
    //-------------------------------------------------------------
    //header1.h
    #ifndef HEADER1_H_
    #define HEADER1_H_
    using namespace std;
    #include <string>
    #include <cmath>
    namespace ns1
    {
        class Student//命名空间中的类
        {
        public:
            Student(int n,string nam,int a)
                :num(n),
                name(nam),
                age(a)
            {
            }
            void get_data();
        private:
            int num;
            string name;
            int age;
        };
        void Student::get_data()
        {
            cout << "num: " <<num << " name: "<< name<<" age: "<<age<< endl;
        }
    
    
        double fun(double a,double b)//命名空间中的方法
        {
            return sqrt(a + b);
        }
    }
    
    #endif /* HEADER1_H_ */
    //-------------------------------------------------------------
    
    //header2.h
    #ifndef HEADER2_H_
    #define HEADER2_H_
    
    #include <cmath>
    namespace ns2
    {
        class Student//同名的类
        {
        public :
    
            Student(int n,string nam, char s)
            : num(n),
              name(nam),
              sex(s) 
            {
            };
            void get_data();
        private:
            int num;
            string name;
            char sex;
        };
    
        void Student::get_data()
        {
            cout << "num: " << num << " name: " <<name<< " sex: "<<sex << endl;
        }
    
    
        double fun(double a,double b) //同名的方法
        {
            return sqrt(a - b);
        }
    }
    
    #endif /* HEADER2_H_ */
    //-------------------------------------------------------------
    # include <iostream>
    # include "header1.h"
    # include "header2.h"
    int main()
    {
        ns1 :: Student stud1(10086,"xiaobao",18); //
        stud1.get_data();
        cout <<"n1::fun(a8,4) = "<< ns1 :: fun(8,4) << endl;
    
    
        ns2 :: Student stud2(10087,"xiaobei",'m');
        stud2.get_data();
        cout <<"n2::fun(a8,4) = "<< ns2:: fun(8,4) << endl;
    
    
        while(1);
        return 0;
    }
    
    // num: 10086 name: xiaobao age: 18
    // n1::fun(a8,4) = 3.4641
    
    // num: 10087 name: xiaobei sex: m
    // n2::fun(a8,4) = 2

     

    5.使用命名空间的方法:

      // 1、使用命名空间名::命名空间成员名[上面已讲]

    #include <iostream>
    using namespace std;
    namespace Television //声明命名空间,名为Television
    {
        void show()
        {
            cout<<"showing..."<<endl;
        }
    }
    namespace TV=Television;//别名,等同于本名
        
    int main()
    {    
            Television::show();//使用命名空间名::命名空间成员名
            //TV::show();//同上
    
            while(1);
            return 0 ;
    }
    //showing...

      // 2、使用命名空间别名

    namespace Television //声明命名空间,名为Television
    {
        void show()
        {
            cout<<"showing..."<<endl;
        }
    }
    namespace TV=Television;
        
    int main()
    {
            TV::show();
            while(1);
            return 0 ;
    }
    //showing...

      // 3、使用using 命名空间::成员

    #include <iostream>
    using namespace std;
    namespace Television //声明命名空间,名为Television
    {
        void show()
        {
            cout<<"showing..."<<endl;
        }
    }
    namespace TV=Television;
        
    
    using  TV::show; //使用using 命名空间成员名
    int main()
    {    
            show();//这里就可以不在加上命名空间作用域了
    
            while(1);
            return 0 ;
    }
    //showing...

      // 4、使用using namespace 命名空间名

    #include <iostream>
    using namespace std;
    namespace Television //声明命名空间,名为Television
    {
        void show()
        {
            cout<<"showing..."<<endl;
        }
    }
    namespace TV=Television;
        
    
    using namespace TV;
    int main()
    {    
            show();
    
            while(1);
            return 0 ;
    }
    //showing...

    在使用using namespace命名空间名的情况下,如果在同一作用域中同时引入了两个命名空间nsl和ns2,其中有同名的类和函数。在出现Student时,无法判定是哪个命名空间中的 Student,出现二义性,编译出错。因此只有在使用命名空间数量很少,以及确保这些命名空间中没有同名成员时才用using namespace语句。[错误范例,代码如下:]

    //-------------------------------------------------------------
    //header1.h
    #ifndef HEADER1_H_
    #define HEADER1_H_
    using namespace std;
    #include <string>
    #include <cmath>
    namespace ns1
    {
        class Student//命名空间中的类
        {
        public:
            Student(int n,string nam,int a)
                :num(n),
                name(nam),
                age(a)
            {
            }
            void get_data();
        private:
            int num;
            string name;
            int age;
        };
        void Student::get_data()
        {
            cout << "num: " <<num << " name: "<< name<<" age: "<<age<< endl;
        }
    
    
        double fun(double a,double b)//命名空间中的方法
        {
            return sqrt(a + b);
        }
    }
    
    #endif /* HEADER1_H_ */
    //-------------------------------------------------------------
    
    //header2.h
    #ifndef HEADER2_H_
    #define HEADER2_H_
    
    #include <cmath>
    namespace ns2
    {
        class Student//同名的类
        {
        public :
    
            Student(int n,string nam, char s)
            : num(n),
              name(nam),
              sex(s) 
            {
            };
            void get_data();
        private:
            int num;
            string name;
            char sex;
        };
    
        void Student::get_data()
        {
            cout << "num: " << num << " name: " <<name<< " sex: "<<sex << endl;
        }
    
        double fun(double a,double b) //同名的方法
        {
            return sqrt(a - b);
        }
    }
    
    #endif /* HEADER2_H_ */
    //-------------------------------------------------------------
    # include <iostream>
    # include "header1.h"
    # include "header2.h"
    int main()
    {
        using namespace ns1;
        using namespace ns2;//冲突
    
        
        Student stud1(10086,"xiaobao",18); // error C2872: “Student”: 不明确的符号
        stud1.get_data();
        cout <<"n1::fun(a8,4) = "<< ns1 :: fun(8,4) << endl;
    
    
        Student stud2(10087,"xiaobei",'m');// error C2872: “Student”: 不明确的符号
        stud2.get_data();
        cout <<"n2::fun(a8,4) = "<< ns2:: fun(8,4) << endl;
    
    
        while(1);
        return 0;
    }

    6、无名的命名空间

      无名命名空间作用域 : 确切地说,是从声明无名命名空间的位置开始到本文件结束。

      在文件中使用无名命名空间的成员,不必(也无法)用命名空间名限定。

    //有名的命名空间
    namespace EX_NS
    {
        void show()
        {
            cout<<"ex showing..."<<endl;
        }
    }
    
    // 命名空间没有名字,在其他文件中显然无法引用,它只在本文件的作用域内有效。
    // 无名命名空间的成员作用域:确切地说,是从声明无名命名空间的位置开始到文件结束。
    // 在文件A中使用无名命名空间的成员,不必(也无法)用命名空间名限定。
    
    //无名命名空间
    namespace 
    {
        void show()
        {
            cout<<"showing..."<<endl;
        }
    }
    void func(void)
    {
        EX_NS::show();
        show();//要使用无名命名空间,func不能再它之前定义。
    }
    
    int main()
    {
        func();
        while(1);
        return 0;
    }

      下面这样是错误的:

    using namespace EX_NS ;
    void func(void)
    {
        EX_NS::show();
        show(); //error C2668: “EX_NS::show”: 对重载函数的调用不明确
    }

    7、因为多个命名空间可能有相同成员,除了std之外,在使用命名空间较多的情况下,一般不直接using namespace 命名空间。也一般不直接使用无名的命名空间。[个人习惯]

    为减少出错机会,可用若干个"using 命名空间::成员”声明来代替“using namespace 命名空间”声明,如果较多使用,可以在同文件中专门书写。

      

    参考:

    1. c++命名空间
      http://blog.csdn.net/randyjiawenjie/article/details/6637043

     

    展开全文
  • 第十二章 C语言用户标识符的作用域和存储类 1. 局部变量、全局变量和存储分类 ...局部变量:在函数内部或复合语句内部定义的变量,函数的形参也属于局部变量,也被称为内部变量 全局变量:在函数外部定义的变量,也...
  • 第二十二天

    2020-02-22 21:50:50
    复合语句的的变量是可以用 全局变量也叫外部变量 全局变量从哪里定义从哪里开始用 变量的储存类别 从空间上讲刚刚的就是作用域(从空间) 还可以从变量值存在的时间(生存期)角度来,又可以分为静态存储方式和...
  • C# Primer Plus中文版

    热门讨论 2009-05-24 00:25:01
    8.2.2 复合语句 184 8.2.3 可选else子句 185 8.3 比较操作符和布尔表达式 187 8.4 嵌套if语句 189 8.5 多分支if-else语句 193 8.6 逻辑操作符 196 8.6.1 逻辑与(AND)操作符:&& 198 8.6.2 逻辑或(OR)操作符:|| ...
  • 软件就是程序,编写软件就是编写程序。(×) 2. 瀑布模型的最大优点是将软件开发的各个阶段划分得十分清晰。(×) 3. 结构化方法的工作模型是使用螺旋模型进行开发。(×) 4. 结构化方法和JSP方法都不适合于大型...
  • C#微软培训教材(高清PDF)

    千次下载 热门讨论 2009-07-30 08:51:17
    3.2 代 码 析 .20 3.3 运 行 程 序 .23 .4 添 加 注 释 .25 3.5 小 结 .27 第二部分 C#程序设计基础.28 第四章 数 据 类 型 .28 4.1 值 类 型 .28 4.2 引 用 类 型 .33 4.3 装箱和拆箱 .39 4.4 ...
  • C#微软培训资料

    2014-01-22 14:10:17
    3.2 代 码 析 .20 3.3 运 行 程 序 .23 .4 添 加 注 释 .25 3.5 小 结 .27 第二部分 C#程序设计基础.28 第四章 数 据 类 型 .28 4.1 值 类 型 .28 4.2 引 用 类 型 .33 4.3 装箱和拆箱 .39 4.4 ...
  • 软件测试规范

    2018-04-23 09:16:12
    1.语句覆盖 ............................................................................................................................................ 10 2.判定理盖 .....................................
  • 下面对程序的横线处填写不同语句的分析正确的是:(选择一项) A) 填充 break 使程序能够有退出循环的可能性。 B) 填充 continue 将使程序成为死循环,永远无法退出循环。 C) 填充 continue 使程序能够有退出循环的...
  • 日期类型 date 7字节 用于存储表中的日期和时间数据,取值范围是公元前4712年1月1日至公元9999年12月31日,7个字节分别表示世纪、年、月、日、时、和秒 二进制数据类型 row 1~2000字节 可变长二进制数据,在具体...
  • 而在应用程序开发过程中的编译阶段由程序开发人员控制运算操作顺序且由编译程序完成命令表达式计算的过程称为静态解释执行。 有效性的要求还必须在程序执行中对按照某种运算规则解释的源输入表达式数据流的正确性给...
  • php高级开发教程说明

    2008-11-27 11:39:22
    次我们可以很有把握地回答,如果你正在从事网络应用程序的开发, P H P就是为你准备的最好的 语言。 1.2 计划的重要性 你为什么应该阅读这一部分 即使你是一个很熟悉P H P的职业程序员,我们也建议你阅读下面的部分...
  • Oracle事例

    2007-08-26 10:35:53
    字符串字段中含有\"\\t \\n\",如果用来在c或者c++程序中输出到文件,格式无法保证。 比如:replace(f2,\'\\t\',\'\') <3>.清除换行和回车 比如: replace(f2,chr(13)||chr(10),\'\') 23、如何在字符串里加回车...
  • 测试覆盖率

    2011-10-28 11:16:51
    代码覆盖可以建立在控制流(语句、分支或路径)或数据流的基础上。控制流覆盖的目的是测试代码行、分支条件、代码中的路径或软件控制流的其他元素。数据流覆盖的目的是通过软件操作测试数据状态是否有效,例如,数据...
  • LINGO软件的学习

    2009-08-08 22:36:50
    借助于集,能够用一个单一的、长的、简明的复合公式表示一系列相似的约束,从而可以快速方便地表达规模较大的模型。 2.2 什么是集 集是一群相联系的对象,这些对象也称为集的成员。一个集可能是一系列产品、卡车或...

空空如也

空空如也

1 2
收藏数 21
精华内容 8
关键字:

复合语句就是分程序