1 / 47

高级语言 程序设计

高级语言 程序设计. 教师:潘晔 pany@uestc.edu.cn. 一、程序设计基础. 什么是程序设计语言? 什么是程序? 程序设计语言与程序的关系是什么? 什么是程序设计?. 语言:一组规则的组合 程序设计语言: 用于程序设计的人工语言。 程序 = 算法 + 数据结构 + 程序设计方法 + 语言工具和环境 程序设计: 以某种程序设计语言为工具,编写出该语言的程序。 包括需求分析 设计 编码 测试 维护五个阶段,并生成各种文档资料。. 计算机系统的组成. 系统软件(操作系统、编译程序、诊断程序 系统服务软件等).

arne
Download Presentation

高级语言 程序设计

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 高级语言程序设计 教师:潘晔 pany@uestc.edu.cn

  2. 一、程序设计基础 • 什么是程序设计语言? • 什么是程序? • 程序设计语言与程序的关系是什么? • 什么是程序设计?

  3. 语言:一组规则的组合 • 程序设计语言: 用于程序设计的人工语言。 • 程序=算法+数据结构 +程序设计方法+语言工具和环境 • 程序设计: • 以某种程序设计语言为工具,编写出该语言的程序。 • 包括需求分析 设计 编码 测试 维护五个阶段,并生成各种文档资料。

  4. 计算机系统的组成 系统软件(操作系统、编译程序、诊断程序 系统服务软件等) 软件系统 应用软件(信息管理软件、游戏等) 运算器 计算机系统 CPU 控制器 输入设备(鼠标、键盘、手写笔、MIC等) 硬件系统 输出设备(显示器、绘图仪、打印机等) 内存储器(RAM) 存储器 外存储器(软盘、硬盘、光盘)

  5. 计算机工作流程图 存储 数据 结果 输入 输出 运算与控制

  6. 冯.诺依曼体系结构(模型) 1.基础 存储器,控制器,处理器(ip) 2.特点 ①数据或指令以二进制形式存储; ②存储程序的工作方式; ③程序顺序执行;可强制修改执行顺序 ④存储器的内容可以被修改。

  7. 二、C语言概述 • C语言发展历史 • C语言特点 • C语言的词法 • C程序的结构 • C程序上机步骤

  8. 1.1 C语言发展历史 程序设计语言的发展 机器语言 汇编语言 高级语言 面向过程 面向机器的语言 面向对象 程序设计是数据被加工的过程 CPU指令系统,由0、1序列构成的指令码组成 如:10000000 加 10010000 减 客观世界可以分类,对象是类的实例 对象是数据和方法的封装 对象间通过发送和接受消息发生联系 用助记符号描述的指令系统 如 ADD A, B

  9. 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 Ada Modula-2 Pascal ALGOL60 ALGOL68 C B CPL BCPL C++ Smalltalk 80 Java Simula 67 QBASIC VB ANSI-BASIC BASIC FORTRAN90 FORTRAN FORTRAN77 PL/1 COBOL LISP PROLOG

  10. C语言发展过程 产生背景 产生过程 时间:1972~1973 地点:美国贝尔实验室 目的:UNIX操作系统 设计人: Ken.Thompson和Dennis.M.Ritchie C标准 K&R合著《The C Programming Language》 ANSI C: 1983年 87 ANSI C: 1987年 C90:1990年,ISO接受C89作为国际标准 C99:最新ISO标准 C

  11. 1.2 C语言特点 语言简洁、紧凑、灵活 运算符和数据类型丰富 程序设计结构化、模块化 允许直接访问物理地址 生成目标代码质量高 可移植性好 编译语言 中级语言

  12. 关键字(由系统定义,不能用作其它定义) • auto break case char const • continue default do double else • enum extern float for goto • if int long register return • short signed sizeof static struct • switch typedef unsigned union void • volatile while

  13. 控制语句 • if( )~else~ • for( )~ • while( )~ • do~while( ) • continue • break • switch • goto • return

  14. 运算符 算术运算符: + - * / % ++ -- 关系运算符: < <= == > >= != 逻辑运算符: ! && || 位运算符: << >> ~ | ^ & 赋值运算符: = 及其扩展 条件运算符: ?: 逗号运算符: , 指针运算符: * & 求字节数: sizeof 强制类型转换:(类型) 分量运算符: . -> 下标运算符: [ ] 其它: ( ) -

  15. 短整型 short 整型 int 整型 长整型 long 数值类型 单精度型 float 基本类型 实型 双精度型 double 字符类型char 数组 C 数 据 类 型 结构 struct 构造类型 联合 union 指针类型 * 空类型 void 自定义类型 typedef

  16. 1.3 C语言的词法 字符集 C语言的字符集包括:大小写英文字母、数字、下划线以及+ - * / = , ; ? ! ”% . & ^ # ’ < > | ( ){ } [ ] ~ \等。 标识符 • 定义:用来标识变量、常量、函数等的字符序列 • 组成: • 只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线 • 大小写敏感 • 不能使用关键字 • 命名原则: • 见名知意, 常用取简、专用取繁 • 注意混淆 如l与I, o与0

  17. 注释 函数 语句 编译预处理 1.4 C程序的结构 例:第一个C程序 /*example1.1 The first C Program*/ #include <stdio.h> main() { printf(“Hello,World!”); } 输出: Hello,World!

  18. 注释 预处理命令 函数 语句 /* example1.2 */ #include <stdio.h> /* This function calculates the sum of x and y */ int add(int x,int y) { int z; z=x+y; return(z); } void main( ) { inta,b,sum; a=10; b=24; sum = add(a, b); printf(”sum= %d\n",sum); } 运行结果: sum= 34

  19. main( ) {………………. ……………… ………….. ………….. ……… ………. …………… ……………. ………………. ……………….. } main( ) { int i , j , sum; sum=0; for(i=1; i<10;i++) { for(j=1;j<10;j++) { sum+=i*j ; } } printf(“%d\n”,sum); } • C程序的结构特点 • 习惯用小写字母,大小写敏感 • 不使用行号,无程序行概念 • 可使用空行和空格 • 常用锯齿形书写格式 优秀程序员的素质之一: • 使用TAB缩进 • { }对齐 • 有足够的注释 • 有合适的空行

  20. C程序的结构特点(续) 函数 程序由一个或多个函数组成 必须有且只能有一个主函数main( ) 程序执行从main开始,在main中结束,其它函数通过调用得以执行。 注释 /* */中间为注释,注释不能嵌套 不产生编译代码 非法 例:/*This is the main /* of example1.1*/ */

  21. C程序的结构特点(续) 语句 C程序由语句组成,用;作为语句终止符 编译后产生机器指令 无专门的输入输出语句,用函数实现 预处理命令 对源程序编译之前做一些处理,有助于提高程序的可移植性、灵活性及编译效率

  22. C程序 源程序文件1 源程序文件2 源程序文件n 预处理命令 全局变量声明 函数1 … 函数n 函数首部 函数体 局部变量声明 执行语句 C程序结构

  23. 编辑 开始 编辑 编译 源程序 file.c 编译 链接 有 有错? 目标程序 无 file.obj 执行 可 执行 程序 连接 库函数 其它obj 执行 结果正确? 不正确 正确 结束 1.5 C程序的上机步骤 程序代码的录入, 生成源程序file.c 语法分析查错,翻译生成目标程序file.obj 与其它目标程序或库链接装配,生成可执行程序file.exe

  24. 三、程序设计预备知识 数的进制及转换 字节和位 计算机中信息的表示

  25. 采用二进制的原因 • 可行性 二进制只有0和1两个基本数字,用一种具有两种稳定状态的元件就能表示,这在电学技术上实现最为容易。 例:晶体管的导通和截止 • 简易性 二进制算术运算法则简单,可使计算机结构(主要是运算器和控制器)简化。 • 逻辑性 由于二进制数只有0,1两个数码,可以代表逻辑代数中的“假”和“真”。可以采用逻辑代数提高速度和增加可靠性。

  26. 数码、基与权 数码:表示数的符号 基:数码的个数 权:每一位所具有的值 数制 二进制 八进制 十进制 十六进制 数的进制及转换

  27. 十进制数 十六进制数 二进制数 八进制数 数制 0~9 0~1 0~7 0~9,A~F,a~f 数码 10 2 8 16 基 8º, 8¹, 8²,… 2º, 2¹, 2²,… 10º,10¹,10²,… 16º,16¹,16²,… 权 表示 逢十进一 逢二进一 逢八进一 逢十六进一 特点 十六进制:81AE=816³+116² +1016¹+1416º 八进制:4275=48³+28² +78¹+58º 十进制:4956= 410³+910² +510¹+610º 二进制:1011=12³+02² +12¹+12º

  28. 进 制 二 进 制 八 进 制 十 六 进 制 0 0 0 0 1 1 1 1 2 1 0 2 2 3 1 1 3 3 4 1 0 0 4 4 5 1 0 1 5 5 6 1 1 0 6 6 7 1 1 1 7 7 8 1 0 0 0 1 0 8 9 1 0 0 1 1 1 9 1 0 1 0 1 0 1 2 A 1 1 1 0 1 1 1 3 B 1 2 1 1 0 0 1 4 C 1 3 1 1 0 1 1 5 D 1 4 1 1 1 0 1 6 E 1 5 1 1 1 1 1 7 F 1 6 1 0 0 0 0 2 0 1 0 二、八、十六进制与十进制数的对照表

  29. 各种进制之间的转换 • 二进制、八进制、十六进制转换成十进制 • 方法:按权相加

  30. 2 59 1 2 2 2 2 2 1 3 14 29 7 例 把十进制数59转换成二进制数 1 0 余 1 余 1 余 0 1 余 余 余 1 1 1 0 1 1 (59)10=(111011)2 • 十进制转换成二进制、八进制、十六进制 • 整数:连续除以基,从低到高记录余数,直至商为0 • 小数:连续乘以基,从高到低记录整数,直至小数为0

  31. 例 把十进制数159转换成八进制数 余 7 余 3 余 2 0 8 159 8 8 19 2 (159)10=(237)8 2 3 7 • 十进制转换成二进制、八进制、十六进制 • 整数:连续除以基,从低到高记录余数,直至商为0 • 小数:连续乘以基,从高到低记录整数,直至小数为0

  32. 例 把十进制数459转换成十六进制数 1 C B 459 16 余11 余12 16 28 16 1 余 1 0 (459)10=(1CB)16 • 十进制转换成二进制、八进制、十六进制 • 整数:连续除以基,从低到高记录余数,直至商为0 • 小数:连续乘以基,从高到低记录整数,直至小数为0

  33. 除2取余 余数 整数 乘2取整 2 |2 3 7 1 0. 6 2 5 2 |1 1 8 0 取 × 2 2 |5 9 1 1 1. 2 5 0 2 |2 9 1 值 0. 2 5 2 |1 4 0 × 2 2 | 7 1 方 0 0. 5 0 2 | 3 1 × 2 2 | 1 1 向 1 1. 0 0

  34. 二进制、八进制与十六进制之间的互换 • 二进制 → 八进制、十六进制(收缩法) 3位二进制 = 1位八进制; 4位二进制 = 1位十六进制;

  35. 八进制、十六进制 → 二进制(扩展法) 1位八进制 = 3位二进制; 1位十六进制 = 4位二进制;

  36. 八进制 → 十六进制(通过二进制转换) 方法:通过扩展法,把八进制 → 二进制 再通过收缩法,把二进制 → 十六进制

  37. 7 0 6 5 4 3 2 1 0 1 2 3 4 5 6 7 8 9 10 ……... 字节和位 • 内存以字节为存储单元 • 每个字节(byte)有一个地址 • 一个字节由8个二进制位组成 • 每个二进位(bit)的值是0或1 • 一个字由一个或多个字节构成,通常将组成一个字的位数叫作字长,字长是计算机数据总线的宽度。

  38. 计算机中信息的表示 • 数的表示法 • 正数和负数: 通常我们用“+”和“-” 来表示正负数,而计算机则把二进制数的最高位设成符号位,即“0”表示正数,“1”表示负数。 • 原码、反码和补码: • 计算机对有符号的数有以上三种表示方法; • 正数的三种码形式一样,而负数的三种码形式不一样,需按一定规则转换; • 引入三种码的目的,主要是为了计算机运算方便,提高速度,使减法运算转化成加法运算。

  39. 原码: • 最高位为符号位,其余各位为数值本身的绝对值 • 反码: • 正数:反码与原码相同 • 负数:符号位为1,其余位对原码取反 • 补码: • 正数:原码、反码、补码相同 • 负数:最高位为1,其余位为原码取反再加1 • 负数补码转换成原码: • 最高位不动,其余位取反加1

  40. (例:设用一字节表示数) 原码 反码 补码 +7 00000111 00000111 00000111 -7 10000111 11111000 11111001 +0 00000000 00000000 00000000 -0 10000000 11111111 00000000 01111111~ 10000000 (-128~+127) 01111111~ 10000000 (-127~+127) 01111111~ 11111111 (-127~+127) 数的范围 • 数的范围: • 与计算机的字长有关,字长越长,运算精度越高。 • 例如:字长为32位,则所能表示的无符号整数范围是:

  41. 例:设机器字长为16,求十进制数 +65、-65的原码、反码和补码 2 低位 余1 余1 余0 余0 余0 余0 余0 65 2 32 16 2 2 8 4 2 2 2 1 • 对正数,符号位(最高位)补0,且其原码=反码=补码,则: • (+65)10 的原码=反码=补码 = 0000 0000 0100 0001 • 先求(65)10=( ? )2 • 对负数,符号位(最高位)补1,则:(-65)10原码 • =1000 0000 0100 0001 • 将得到的二进制码用0补足数 值位的位数—这里为15,得到: • (65)10=(000 0000 0100 0001)2 (-65)10 的反码 =1111 1111 1011 1110 (-65)10 的补码 =1111 1111 1011 1111

  42. 8位二进制数的不同含义

  43. 原码、反码、补码的比较 • 原码表示直观 • 符号位和数值位不等同,加减运算的规则比较复杂 • N位的原码表示真值范围为 -(2N-1-1) ~ +(2N-1-1) • 反码表示法将符号位和数值位等同看待 • 即符号位和数值位一起参加运算,运算规则较简单 • N位的反码表示真值范围为-(2N-1-1) ~ +(2N-1-1) • 补码表示法是计算机中最普遍采用的数据表示方法。 • 数据符号位都可以参加运算,可使减法运算转换为加法 • 0的表示形式是唯一的 • N位的补码表示真值范围为-(2N-1) ~ +(2N-1-1)

  44. 定点整数 10101100=0.6718125 小数点位置 定点数 数 小数点位置 定点纯小数 10101100=172 浮点数:阶码和尾数构成 • 定点数和浮点数 • 计算机表示数的位数长度是有限的,而数的大小是无限的,差别很大。 • 为使计算机所表示的数的增大范围和提高精度,而采用浮点数。 • 定点数为小数点位置固定的数; • 浮点数为小数点位置不固定的数; 小数点的位置仅仅为约定,实际上不存储!

  45. 浮点数 • 浮点数(Floating Point Numbers),例如: 阶符 阶码 数符 尾数

  46. 信息编码 • 字符编码就是规定用怎样的二进制编码来表示非数值的字母、数字、符号等信息; • 简单字符编码 • 目前在微机上使用最广泛的是ASCII(美国标准信息交换码,已被ISO认定为国际标准),分为可表示128种字符的7位基本ASCII码(国际通用)和可表示256种字符的8位扩充ASCII码; • 字符可分为:可显示字符(例如键盘字符键的编码,“0”的编码为48,“A”的编码为65)和控制字符(例如return 、backspace键的编码分别为13、8)。

  47. 复杂字符编码(中文字符为例) • 汉字是一种象形文字,无法直接用标准西文键盘输入,必须经过转换间接输入;汉字的字数也较多,不能用单字节的ASCII(256个字符)来表示。因此,按照不同的目的和需要,产生了多种汉字编码系统与汉字输入方法。 • 目前采用两个字节(可以表示64K字符)的汉字编码方案。由于汉字的应用范围较广(东南亚国家),汉字的编码字符集不相同,中国大陆常用GB / GBK码,台湾常用BIG5。

More Related