Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
问题六:大学生如何提高实践能力? 上课认真学(预习、笔记、思考) 课后作业 、实验和课程设计自己做(看书、上 相关网站、动手实践) 参加USRP、参加竞赛、参与老师的项目 参加培训 进行实习 不要什么语言都学,但什么都不精。只要精通一门就可以 将来哪个 更挣钱? 哪个更容 易学? 是不是都 要学? C、JAVA 哪个好? As you will 第七章 计算机语言 3 计算机语言与汽车 Delphi就像吉普车,什么路上都能开,却在什么路上也 开不好 PB就像卡丁车,只能在固定路线上开,到了室外就有些 不稳了 VC就像是跑车,你开得起却买不起,而且一旦发生故障, 想修都找不到毛病在哪 Java就像敞篷车,不管刮风下雨,还是艳阳高照,都能 照开不误 VB就是摩托车,骑得时间越长,你越痛恨它! 2017/5/24 4 计算机语言与女人 有的女人就是Windows,虽然很优秀,但是安全隐患太大 有的女人就是MFC,条件很好,然而不是谁都能玩得起的 有的女人就是C#,长得很漂亮,但是家务活不行 有的女人就是C++,她会默默地为你做很多的事情 有的女人就是汇编,虽然很麻烦,但是有的时候还得求她 有的女人就是SQL,她会为你的发展带来莫大的帮助 2017/5/24 5 计算机硬件就像人的躯体一样 计算机软件就像人的灵魂一样 2017/5/24 6 三毛,什么是程序? 不对 您前面四个答案之 和 算法? 数据结构? 程序设计方法? 语言工具和环境? 海宝,您说是什么? 2017/5/24 7 内容提要 7.1 计算机语言的形成与发展 7.2 计算机语言实例 7.3 什么是计算机语言(翻译、模式、概念) 2017/5/24 8 7.1 计算机语言的形成与发展 1.机器语言(1GL) 一般来说,计算机可以直接执行的代码形式的指 令系统称为机器语言 每台计算机有自己的机器语言,这种语言由“0” 和“1”的字符串组成 优点:真实表示了数据是如何被计算机操纵的 缺点:依赖于计算机;编程单调乏味,发现错误 很难 2017/5/24 9 例如,在国产DJS——21计算机中,取、除、减、 送的指令代码分别为:002,00E,009,004 假定a、b、c、x四个单元的地址码分别为:0123, 1234,2103,0576,那么要计算 x:= a / b – c 其机器语言程序为: 2017/5/24 002 0123 00E 1234 009 2103 004 0576 10 2.汇编语言(2GL) 汇编语言就是计算机符号形式的指令系统 用带符号或助记符的指令和地址代替二进制代码 缺点:没有程序设计环境;不方便移到其他计算 机;程序员还要从机器语言的角度思考 如对应于取、除、减、送采用下列符号:CLA,DIV,SUB, STO 那么上述程序的汇编语言程序: CLA a DIV b SUB c STO x 2017/5/24 11 3.高级语言(3GL) 为了提高程序员效率以及从关注计算机转到关注 要解决的问题,导致了高级语言的发展 高级语言的高级在于它比较接近自然语言,它面 向问题的求解步骤(算法)而不是具体机器的指 令系统,所以又叫算法语言。分为: 非结构化(数据类型、执行控制、过程和函数) 结构化(顺序结构、分支结构、循环结构) 2017/5/24 12 上例用 BASIC 语言写为赋值语句为: x=a/b-c 用 PASCAL 语言写为赋值语句为: x: = a / b - c 上例用 C 语言写为赋值语句为: x=a/b-c 又如求半径为r的圆面积和周长的问题,用PASCAL语 言编写的程序是: Program scr ( input , output ) ; 2017/5/24 const pi = 3.1416 ; var s, c, r : real ; begin read ( r ) ; s : = pi * sqr ( r ) ; c : = 2 * pi * r ; write ( r, s, c) End. 13 4.第四代语言(4GL) 可以快速开发应用软件的各种高生产率的软件工 具的统称用户只要告诉系统做什么,而无须说明 怎么做 4GL以数据库管理系统所提供的功能为代表,进一 步构造了开发高层软件系统的开发环境 特点:非过程化、支持面向对象程序设计、图形 化可视化 缺点:系统开销大,运行效率低 2017/5/24 14 常用的第四代语言: 查询语言和报表生成器:SQL、PowerBuilder、 Delphi 面向对象的编程语言和网络语言:smalltalk、 VC、C++、JAVA、Ada95、HTML 可视化编程语言:VB 软件开发工具:CASE(计算机辅助软件工程) 2017/5/24 15 5.第五代语言(5GL) 智能化语言、知识库语言、人工智能语言,是最 接近自然语言的程序语言 人工智能应用程序的开发语言:LISP、PROLOG PROLOG可能成为第五代语言最著名的雏形,其 特点是使用符号运算而非数字计算,但远远达不 到自然语言的要求 2017/5/24 16 6.2 计算机语言实例 1.Ada语言 爱 达 · 洛 夫 雷 斯 ( Ada Lovelace ) , 1815.12.10 - 1852.11.27 她对查尔斯·巴贝奇的笔记,手稿进行了整理和修正 她是世界上第一位计算机程序员 没有诗,要数 学干什么? 2017/5/24 她的座右铭是: 工作是我的报 酬 17 1977 年,DoD 起草了一份建议,开发一门新的语言 由Cii-Honeywell Bull公司的Jean Ichbiah(法国科学院 院士,1940.3.25-2007.1.26)负责 I see Ada as a cathedral, with all the architectural lines interwoven in a harmonious manner. I would not do it differently if I had to do it over again. 2017/5/24 18 Ada是一种表现能力很强的通用程序设计语言,它是美 国国防部为克服软件开发危机,耗费巨资,历时近20 年研制成功的 它被誉为第四代计算机语言的成功代表 Ada的出现,标志着软件工程成功进入了国家和国际的 规模 3 个最重要的问题:程序的稳定 性和可维护性,程序设计和人的行为接近,并且高效 Ada最初设计时关注于 Ada语言是美国国防部指定的唯一的一种可用于军用系 统开发的语言,我国军方也将Ada做为军内开发标准 2017/5/24 19 Ada语言编写的“Hello world”程序: with Ada.Text_IO; procedure Hello is begin Ada.Text_IO.Put_Line("Hello, world!"); end Hello; 2017/5/24 20 2. Pascal 它由瑞士Niklaus Wirth教授于六十年代末设计并创立 以法国数学家命名的Pascal语言现已成为使用最广泛 的基于DOS的语言之一 首次提出了“结构化程序设计” ,扩充了著名的巴 科斯范式,发明了语法图 1984年我获 得“图灵奖” 2017/5/24 21 const a=10; var b,c; procedure p; begin c:=b+a; end begin read(b); while b#0 do begin call p; write(2*c); read(b); end end. 2017/5/24 22 3.Fortran语言(Formula Translator) 第一个被正式推广使用的高级语言,1956年使用 为科学、工程问题或企事业管理中的那些能够用数学 公式表达的问题而设计的,其数值计算的功能较强 John Backus提出了规范描述编程语言语法的BackusNaur Form(BNF) 我中学讨厌 学 习, 成 绩 很 差 不 得不 在暑假补课 2017/5/24 1977 年 我 获 得“图灵奖” 23 program hello write(*,*)"Hello" stop end program main integer a a=2+2*4-3 write(*,*) "2+2*4-3=",a stop end 2017/5/24 24 4.Prolog语言(Programming in Logic ) 建立在逻辑学的理论基础之上,最初被运用于自 然语言等研究领域。现在它已广泛的应用在人工 智能的研究中,它可以用来建造专家系统、自然 语言理解、智能知识库等 1970年7月初,Robert Pasero和Philippe受Alain的邀 请来到了蒙特利尔大学 2017/5/24 25 5. BASIC/VB/VB.net 1964年,Tom Kurtz和John Kemeny在FORTRAN语 言的基础上创造了BASIC(Beginners’ All-purpose Symbolic Instruction Code) 1975 年,比尔·盖茨创立的 Microsoft,并成功的 把 BASIC语言的编译器移植到使用Intel处理器的 ALR 计算机中 2001年 Visual Basic.NET 推 出 , Visual Basic.NET 2010 2017/5/24 26 Private Sub Command1_Click() a = InputBox("输入用户名,") b = InputBox("输入密码,") If a = "admin" And b = "admin" Then MsgBox ("正在读处admin列表") Text1.Text = "迅雷帐号:密码:,hotmail邮箱用户名: 密码: " ElseIf a = "ad" And b = "ad" Then MsgBox ("正在读处ad列表") Text1.Text = "1234582" Else MsgBox ("你的用户名或密码不对,") End End If End Sub 2017/5/24 27 6. C语言(Combined Language ) 1963年,剑桥大学将ALGOL 60语言发展成为CPL (Combined Programming Language)语言 1967年,剑桥大学的Martin Richards对CPL语言进 行了简化,产生了BCPL语言 1970年,贝尔实验室的Ken Thompson将BCPL进行 了修改,并为它起了一个有趣的名字“B语言” 1972年,贝尔实验室的Dennis M.Ritchie在B语言的 基础上最终设计出了一种新的C语言 2017/5/24 28 UNIX是我们 的杰作,呵呵! Ken Thompson 和 Dennis Ritchi 我参加了UNIX、C、 AWK语言开发,也 写书,厉害吧,呵呵! 2017/5/24 Brian W.Kernighan 29 具有高级语言的特点,又具有汇编语言的特点 可以作为工作系统设计语言,可以作为应用程序设 计语言 常用的C语言IDE(集成开发环境)有: Microsoft Visual C++、Dev-C++、Code::Blocks Borland C++、Watcom C++ 、Borland C++ Builder GNU DJGPP C++ 、Lccwin32 C Compiler 3.1 High C、Turbo C、C-Free、win-tc …… 2017/5/24 30 【面试真题】: #include <stdio.h> main( ){ unsigned int a=6; int b=-20; int c; (a+b>6) ? (c=1) : (c=0); printf("c= %d \n",c); } 2017/5/24 31 7. Objective-C(ObjC) 1980年代初Brad Cox发明Objective-C 主要使用于Mac OS X和GNUstep这两个使用 OpenStep标准的系统(iPhone的开发语言是 Objective-C) 2017/5/24 32 #import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSLog(@"Hello, World!"); [pool drain]; return 0; } 2017/5/24 33 8. C++ 以C中的++运算符来体现它是C的进步,所以就叫 C++ 中国大陆的程序员圈子中通常被读做“C加加”, 西方的程序员通常读做“C plus plus”,“CPP” 贝尔实验室的Bjarne Stroustrup在80年代初期发明 C++(C with Classes) 2017/5/24 34 【面试真题】: #include <stdio.h> main( ){ int i=3, j=4; i ? i++ : ++j; printf("i=%d j=%d \n", i, j); } 2017/5/24 35 VC、VC++、VS、 Visual J++、J# 是什么东东? 2017/5/24 36 9. C# 专业人士一般读“C sharp”,非专业一般读“C井” C# 是 微 软 公 司 发 布 的 一 种 面 向 对 象 的 、 运 行 于.NET Framework之上的高级程序设计语言 C#是微软公司研究员Anders Hejlsberg的最新成果 Turbo Pascal编译 器的主要作者, Delphi和.NET之父 2017/5/24 37 【面试真题】: 一列数的规则如下:1、1、2、3、5、8、13、21、34……, 第30位数是多少,用递归算法实现,C#语言编写 public class MainClass {public static void Main( ) {Console.writeLine(Foo(30));} public static int Foo(int i) { if(i<0) return 0; else if (i==0||i==1) return 1; else return Foo(i-2)+Foo(i-1); } } 2017/5/24 38 10. JAVA 1990年,Sun公司开始了一个James Gosling(Java 创始人)项目,尝试用C++开发用于消费电器中 的软件 我从来没有想到Java技术将会这 么火。当我的老板问我它将达到 多少次下载时,我说10,000 次。 而他认为我太过乐观了 2017/5/24 39 Gosling用了一个新语言Oak来解决这个问题。Oak保 留了熟悉的C++语法 当Oak成熟时,因特网也正处于戏剧性增长的时期, Sun公司的开发小组认识到Oak非常适合Internet编程 1994年,他们完成了一个用Oak编写的早期Web查看 器,称为WebRunner,后被改名为HotJava 2017/5/24 40 Java让人联想到印度尼西亚有个重要的盛产咖啡的 岛屿,开发人员为这种新的语言起名为Java,其寓 意是为世人端上一杯热咖啡 1995年,Oak更名为Java ,并在SunWorld 95中发布 从此,Java的知名度如日中天。甚至在1996年1月 Java编译器第一版发布之前,Java已经成为Internet 发行的行业标准 98年末,Sun推出Java 1.2 (简称Java 2) 目前Java 1.7 是Java 2平台的最新版本 2017/5/24 41 Java特点: 简单 面向对象 分布式的 解释型的 强壮的 安全的 体系结构中立的 可移植的 高性能的 多线程的 动态的语言 2017/5/24 42 目前常用的版本: J2EE(Java 2 Platform Enterprise Edition):Java EE 定位在服务器端的应用 J2SE(Java 2 Platform Standard Edition):Java SE 定位在个人计算机上的应用 J2ME(Java 2 Platform Micro Edition):Java ME 定位在消费性电子产品的应用上 Java Card:定位在智能卡的应用上 2017/5/24 43 //Program filename: calcSquare.java //package test; //import java.io.*; class Square { void calcSquare( int x ) { int square = x*x; System.out.println("The square of" + x + " is "+ square); } public static void main(String args[ ]) { Square a = new Square( ); a.calcSquare(15); } } 2017/5/24 44 11. G语言 Systemview Labview是我的兄弟 LabVIEW(Laboratory Virtual instrument Engineering) 一种图形化的编程语言,广泛地被工业界、学术 界和实验室所接受,视为一个标准的数据采集和 仪器控制软件 LabVIEW集成了与满足GPIB、VXI、RS-232和 RS-485协议的硬件及数据采集卡通讯的全部功能 它内置了便于应用TCP/IP、ActiveX等软件标准的 库函数 利用它可以方便地建立自己的虚拟仪器,其图形 化的界面使得编程及使用过程都生动有趣 2017/5/24 45 6.3 什么是计算机语言 1. 什么是计算机语言 计算机语言是指编写程序时,根据事先定义的规 则(语法)而写出的预定语句的集合 2017/5/24 46 2. 翻译 计算机实现程序设计语言的方法 第一种方法:对程序进行翻译 (翻译) 编译程序 (B语言) 目标程序 汇编语言 汇编程序 机器语言 高级语言 编译程序 汇编(机器)语言 源程序 解释程序 (A语言) 源程序 无 第二种方法:对程序进行解释 2017/5/24 47 编译程序的组成 信 息 表 管 理 程 序 源 词法 语法 语义 中间 代码 目标 程 分析 分析 分析 代码 优化 代码 序 程序 程序 程序 生成 程序 生成 错 2017/5/24 误 检 查 和 处 理 程 目 标 代 码 序 48 3. 编程模式 程序设计语言的划分: 线性尺度:划分为不同的代 – 第一-四代:问题在人符合计算机特征的 环境里被解决 – 第五代:问题在计算机符合人的特征的环 境里被 解决 程序设计模式:沿着不同的可以选择的程 序设计过程 2017/5/24 49 程序设计模式的演变: LISP Scheme 函数式模式 ML Smalltalk C++ VB C# 面向对象模式 JAVA 机器 FORTRAN 语言 COBOL BASIC Ada Pascal ALGOL APL C GPSS 1950 2017/5/24 1960 过程式模式 Prolog 1970 说明式模式 1980 1990 2000 50 过程式模式(命令型模式):把算法表示为命令 的序列 说明式模式:要求程序员描述要解决的问题,而 不是解决该问题的算法,如天气预报 函数式模式:程序可以看成是可以接受输入和产 生输出的实体 面向对象模式:一个软件系统就是对象的集合 2017/5/24 51 4.共同概念 标识符: 允许给程序中的数据和其他对象命名 相同点 C C++ 第一个字符 必须是字母 或下划线 不同点 有的C前8个有效 前32个有效 C# 把保留字用作标识符,前面加@ JAVA 也可以是$,没有限制 2017/5/24 52 数据类型: 定义了一系列值及应用于这些值的一系列操作 简单数据类型:整数类型、实数类型、字符类型、 布尔类型 复合数据类型:数组、记录 相同点 C 浮点、布 尔、字符 不同点 int/unsigned int/short int/unsigned short int/long int/unsigned long C++ 整型int,短整型short,长整型long C# Sbyte/Byte/Short/ushort/Int/uint/Long/U long/引用类型,指针类型 JAVA 类、接口、byte/short/int/long 2017/5/24 53 变量: 存储单元的名字 变量声明:char c; int num; double result; 变量初始化:char C=‘z’; int num=12; double result=256782 相同点 C 不同点 先定义后使用 C++ C# JAVA 2017/5/24 支持中文变量,可以后定义 54 字面值: 程序中使用的预定义的值,如PI,’A’,“Anna” 相同点 不同点 C C++ C# JAVA 2017/5/24 55 常量: 是一个可以存储值的命名的位置 常量被声明时,要定义它的类型 相同点 不同点 C const float taxmultiplier=0.15 C++ const float taxmultiplier=0.15 C# JAVA final static int MAXNAME = 10 public class Const{ public static final faint = "失败"; } Const c = new Const(); System.out.println(Const.faint); 2017/5/24 56 输入和输出: 不同语言区别比较大 相同点 不同点 C scanf(“%d”,&a) C++ int a,b;cin >>a >>b;scanf cout << “hello, world ”; printf System.Console.ReadLine() System.Console.WriteLine() C# JAVA 2017/5/24 printf(“%d”,a) choice=(char)System.in.read(); System.out.println 57 public class Input { public static void main(String []args) throws java.io.IOException { char choice; System.out.println("请输入一个字符:"); choice=(char)System.in.read(); System.out.println("您输入的字符是:"+choice); } } 2017/5/24 58 表达式: 由一系列操作数和运算符简化后的一个单一数值 运算符:算术运算符、关系运算符、逻辑运算符 操作数:接收一个运算符的动作 相同点 C C++ C# JAVA 2017/5/24 == != && ++ += ?: 不同点 移位操作符 59 public class BitwiseOperators { public static void main(String []args) printBits("-1",-1); printBits("+1",+1); printBits("~2",~2); printBits("2&3",2&3); printBits("2|3",2|3); printBits("2^3",2^3); printBits("128>>2",128>>2); printBits("-256>>4",-256>>4); printBits("128<<1",128<<1); printBits("16<<2",16<<2); } 2017/5/24 { 60 static void printBits(String s,int i) { System.out.print(s+",int: "+i+" binary: "); for(int j=31;j>=0;j--) if(((1<<j)&i)!=0) System.out.print("1"); else System.out.print("0"); System.out.println(); } } 2017/5/24 61 语句: 每条语句都使程序执行一个相应的动作 赋值语句、复合语句、控制语句 相同点 C C++ C# JAVA 2017/5/24 if-else case for While do-while 不同点 没有GOTO语句 62 子程序: 局部变量: 参数:实际参数、形式参数(传值、传引用) 相同点 不同点 C C++ C# 函数 函数 JAVA 方法 2017/5/24 63 封装性: 必须有模块化的性质以及信息隐藏的能力 相同点 不同点 C++ C# JAVA 2017/5/24 64 多态性: 不同的对象对同一种信息,可以按照对象本身 的性质加以回应 相同点 不同点 C++ C# JAVA 2017/5/24 65 继承性: 可以定义一套对象之间的层次关系,下层的对象 继 承了上层对象的特性,籍此可以实现程序代码 重复 利用,并且有效的组织整个程序 相同点 不同点 C++ C# JAVA 2017/5/24 66 动态联编: 一旦对象生成以后,要使用这个对象只需简单地 把信息传递给它,不再需要去参考对象当初设计 时的规格 只在程序执行时,才会真正锁定需要的对象,这 样的方式可以使程序设计具有最大的灵活性 相同点 不同点 C++ C# JAVA 2017/5/24 67 注释: 程序设计语言提供了可以插入程序中的解释性语句 编译器忽略注释语句,但对阅读特别重要 相同点 C C++ 不同点 // /* */ C# JAVA 2017/5/24 /* **/ 68 方法一: 方法二: /* #if 0 void swap( int *a, int *b) void swap( int *a, int *b) { { int *tmp; tmp = a; int *tmp; tmp = a; /* 这是一段注释 */ /* 这是一段注释 */ a = b; a = b; b = tmp; b = tmp; } } */ #endif 2017/5/24 69 1. html、xhtml、xml、css、JavaScript、VBScript、 asp、asp.net、jsp、php、ajax、ActionScript是什 么? 2. 用C实现1到100奇数之和的程序 3. 用C实现四个数从大到小输出 4. 除了上面提到的编程语言,还有哪些? 2017/5/24 70