我一直从事的是PLC方面的工作,编程的概念也只有PLC专属的编程语言,如梯形图、结构化文本等,随着工业界的发展,也逐渐向IT界靠,也开始接触C、VB之类的东西,没有系统的学过C、VB,都是自己看书或是需要什么功能就去网上寻求答案,所以对C、VB的认知基本为零,随着工作的需要,逐渐也接触多了,开始对此产生了兴趣,因此在这开了博客,以记录我学习的过程。
之前有过c语言的自学,一些基本语法和规则就不再叙述,我将从零开始学C++和JAVA,希望在我入门之前这两门语言不要被淘汰。~~~^_^~~~ (为啥没有插入表情的功能呢?)
最早接触的是java,就从它开始吧。
关于java的由来,百度一下就有很多,这就不多说了,我只记录一些自己认为是重点的东西。
首先是java开发的工具:
JDK:java的开发工具,选择java se版本,安装完成后需要对系统的环境变量进行配置,方法如下:
右键“我的电脑”==》“属性”==》“高级”==》“环境变量”==》在“系统变量中”找到“Path”属性编辑,将java.exe和javac.exe所在的路径添加进去,一般它们在JDK安装目录下的“bin”目录下,最后用“;”结束。
NetBeans IDE:Sun公司提供的一个java开发平台,还没用过,先make,以后用再做记录。
安装好软件后就开始吧!
基本的概念就不重复了,下面通过实例进行说明:
1 /* 2 创建一个圆的模型,通过模型创建2个圆,并分别计算它们的周长和面积 3 */ 4 5 class C //定义圆的类(模型) 6 { 7 private double r; //定义半径变量r,其中private表示该变量为私有的,除本身的类能访问,其他地方都不能访问 8 final private double PI = 3.1415926; //定义PI常量,其中final表示该变量为最终状态,不能修改 9 10 public double perimeter() //定义计算周长函数,其中public表示该函数是公共的,任何地方都能访问11 {12 return 2*r*PI; //计算圆周长13 }14 15 public double area() //定义计算面积函数16 {17 return PI*r*r; //计算圆面积18 }19 20 public C(double r) //定义有参构造函数,函数名与类名相同,并且没返回值21 {22 this.r = r; //this.r指的是类的变量,而非函数的变量23 }24 25 }26 27 class Round //定义启动类28 {29 public static void main(String[] aaa) //static表示静态的30 {31 C a1 = new C(6.0); //创建一个对象a132 C a2 = new C(3.5); //创建一个对象a233 34 //printf()函数用法与c语言的一致,只是要注意调用的格式35 System.out.printf("a1的周长:%f\t", a1.perimeter());36 System.out.printf("a1的面积:%f\n", a1.area());37 System.out.printf("a2的周长:%f\t", a2.perimeter());38 System.out.printf("a2的面积:%f\n", a2.area());39 System.out.printf("两个圆的周长之和:%f\t", a1.perimeter() + a2.perimeter());40 System.out.printf("两个圆的面积之和:%f\n", a1.area() + a2.area());41 }42 }43 44 /*45 结果:46 47 a1的周长:37.699111 a1的面积:113.09733448 a2的周长:21.991148 a2的面积:38.48450949 两个圆的周长之和:59.690259 两个圆的面积之和:151.58184350 */
写完以上代码后,保存为*.java的格式,然后打开“命令提示符”,也就是cmd.exe,通过dos命令进入*.java文件所在的文件夹,然后进行以下操作:
1.编译。输入:
javac Round.java
2.运行。输入:
java Round
注意,*.java文件的文件名最好与启动类的名字相同
那么,用c++怎么实现上述代码呢?
c++的编译器我用的是C-free,在编译的时候要把腾讯的电脑管家关闭,不然经常会出现电脑管家认为编译的程序是病毒就隔离了,不知道360会不会出现这种情况,晕啊~~
1 /* 2 创建一个圆的模型,通过模型创建2个圆,并分别计算它们的周长和面积 3 */ 4 5 #include//为了比较,就选择使用stdio.h,而不用iostream 6 7 class Round //定义圆的类(模型) 8 { 9 private: //private表示以下定义的变量和函数为私有的,除本身的类能访问,其他地方都不能访问10 double r; ////定义半径变量r11 const static double PI = 3.1415926; //定义PI常量,其中const表示该变量为常量,static表示该变量是静态的,如果没有static,c++不允许在该类的范围内给变量赋值的,而java可以 12 public: //public表示以下定义的变量和函数是公共的,任何地方都能访问13 Round(double r) //定义有参构造函数,函数名与类名相同,并且没返回值 14 {15 this->r = r; //和java的this意义一样,注意书写方法 16 }17 const double perimeter() //定义计算周长函数,const标识 perimeter()的参数不允许改变 18 {19 return 2*PI*r; ////计算圆周长20 }21 const double area() //定义计算面积函数22 {23 return PI*r*r; //计算圆面积24 }25 26 }; //注意这里需要加分号,java不加分号 27 28 int main(void) //主函数 29 {30 Round a1(6.0); //创建一个对象a1 31 Round a2(3.5); //创建一个对象a232 33 printf("a1的周长:%f\t", a1.perimeter());34 printf("a1的面积:%f\n", a1.area());35 printf("a2的周长:%f\t", a2.perimeter());36 printf("a2的面积:%f\n", a2.area());37 printf("两个圆的周长之和:%f\t", a1.perimeter() + a2.perimeter());38 printf("两个圆的面积之和:%f\n", a1.area() + a2.area());39 40 return 0;41 }42 /*43 结果:44 47 a1的周长:37.699111 a1的面积:113.09733445 a2的周长:21.991148 a2的面积:38.48450946 两个圆的周长之和:59.690259 两个圆的面积之和:151.58184347 */
那么,c又是怎么写呢?
1 /* 2 计算圆的周长和面积 3 */ 4 5 #include6 7 const double PI = 3.1415926; 8 9 double perimeter(double r)10 {11 return 2*PI*r;12 }13 14 double area(double r)15 {16 return PI*r*r;17 }18 19 int main(void)20 {21 double r1,r2;22 23 r1 = 6.0;24 r2 = 3.5; 25 26 printf("a1的周长:%f\t", perimeter(r1));27 printf("a1的面积:%f\n", area(r1));28 printf("a2的周长:%f\t", perimeter(r2));29 printf("a2的面积:%f\n", area(r2));30 printf("两个圆的周长之和:%f\t", perimeter(r1) + perimeter(r2));31 printf("两个圆的面积之和:%f\n", area(r1) + area(r2));32 33 return 0;34 }35 /*36 结果:37 47 a1的周长:37.699111 a1的面积:113.09733438 a2的周长:21.991148 a2的面积:38.48450939 两个圆的周长之和:59.690259 两个圆的面积之和:151.58184340 */
小结:
通过上述例子可以看出,java和c++的编程思路和c的编程思路是不同的,c的思路是要解决问题,先把问题分解若干个功能(函数),然后通过调用函数达到解决问题目的;而java和c++增加了对象的概念,思路是先对某个事物的属性和方法(函数)进行封装,也就是创建类,然后通过创建一个一个具体的对象,通过修改对象的属性、调用对象的方法(或类的方法)达到解决问题的目的,这样的编程方法更安全、代码重用率更高、层次感更强,更符合人的逻辑思维。
今天先总结到这儿,以后继续。