《程序设计基础课件.ppt》由会员分享,可在线阅读,更多相关《程序设计基础课件.ppt(78页珍藏版)》请在三一办公上搜索。
1、1,程序设计基础,Introduction to Computer Programming,2,教学安排,课程名称:,程序设计基础(Introduction to Computer Programming),教学对象:,计算机软件专业的新生,教学目标:,目标有二:掌握一种编程工具(C语言);掌握程序设计的基本思路和方法,提高分析问题、解决问题的能力。,3,教学安排,教学方法:,课堂讲解:基本概念、C语言的语法、语句,编程解题的基本思路、方法。每堂课要带上纸、笔,进行课题练习。鼓励创新、鼓励上台讲解自己的方法;上机实践:实践性极强的课程,将有大量的编程练习,“赶鸭子上架”。每周有一次固定上机时间
2、,其余自由上机;,4,教学安排,参考书:,考核方式:,“程序设计基础”,吴文虎“C 程序设计”,谭浩强;The C Programming Language(Kernighan & Ritchie),上机练习 期中考试 期末考试 (20%) (20%) (60%),教 材:“计算机语言与程序设计”,谌卫军 清华大学出版社,2007,5,教学安排,教学日历:程序设计概述数据类型与表达式顺序结构程序设计、选择结构程序设计循环控制数组作业讲评(编程规范、程序调试)函数期中考试,6,教学安排,教学日历(续):指针结构体链表算法引论基于分治策略的递归算法基于回溯策略的递归算法习题课,总复习,7,教学安排
3、,http:/,课程站点:网络学堂,8,教学安排,联系方式:,办公室:软件学院教学楼211房间电话:62795435Email:,The door is always open for you.,9,教学安排,COPY,若发现两份相同的程序,均记0分。,10,小调查,编程基础参加过程序设计类比赛(省、市、全国);使用过C语言或其他编程语言,编写过一些小程序;熟悉电脑操作,熟悉Windows操作系统,熟悉各种应用软件的使用;没有接触过太多的计算机。,11,两个特别计划,编程非常强的学生可以申请免修;做一个大作业,自己选题,教师批准;编程基础弱的学生随时到办公室找我问问题。,12,教学安排,Any
4、 question?,13,第 一 章 程序设计概述,14,第一章 程序设计概述,计算机、问题与程序C语言简介一个例子C程序的上机步骤,15,1.1 计算机、问题与程序,1.1.1 这是一个计算机的时代,16,计算机能够做哪些事情?琴:电脑合成的音乐;棋:1997年5月,IBM公司的“深蓝”战胜国际象棋世界冠军卡斯帕罗夫;书:电脑能够打印出各种字体的文字:宋体、楷体、隶书,等等;画:在计算机控制下,能够在布匹上刺绣、甚至能编织任意图案的毛线衣!,17,计算机能够做哪些事情?(续)听:语音识别技术,文档录入,识别率较高,已有相关的产品,如IBM的ViaVoice;说:语音合成技术,Text-To
5、-Speech(TTS),新闻阅读、霍金,自然度较好,也有相关产品;读:自然语言理解,机器翻译、Internet网上基于内容的智能搜索;写:电脑“写”的作文。,18,计算机的本质计算机是一个超级计算器,是一种用来处理数据的通用途机器;计算机以一种确定的方式来执行指令:执行的是一组确定的指令序列;执行的结果取决于系统的当前状态和输入的数据;,19,计算机硬件的体系结构,程序的执行过程,20,What makes computers so powerful?速度快:537 ?人:1秒钟?Pentium III:10亿分之1秒!,精度高:计算机:读取磁盘时,每隔10亿bits可能发生一个错误;人:清
6、华有多少个学生食堂?,21,1.1.2 这是一个充满问题的世界,中东问题;国际恐怖主义、毒品问题;环境卫生问题;家庭矛盾;青少年早恋的问题;,22,本课程关心的是:计算机能够解决的问题。计算机能够解决很多的问题:数学计算、模拟、数据分析、机器人控制、文本编辑、企业管理、,等等;遗憾的是,这些问题的描述方式一般是自然语言的形式,而不是机器指令的形式。,23,1.1.3 计算机程序,通过编写程序来让计算机帮助我们解决问题;何为程序?一个程序即一组计算机指令!如何编写程序?接受一个问题;分析这个问题;设想一种方法来解决这个问题;在计算机上,用某种计算机语言来描述该解决方案,即编码;测试和调试程序(d
7、ebug)。,24,编程就象厨师烧菜,以红烧茄子为例;原料(数据):茄子750克、肉片50克、葱姜蒜50克、酱油、盐、糖、鸡粉适量,水淀粉适量。制作过程(算法):将茄子切成块,葱姜蒜切末待用;起油锅,待油热至八、九成时放入茄子,炸至茄子由硬变软时取出,将油沥干待用;另起锅,锅中放油三汤匙,油热后,先爆香葱姜蒜,下肉片炒散,烹入酱油,加入少量水和鸡粉,放入茄子、盐、糖,大火煮开后改用小火煮至茄子入味,最后用淀粉勾芡。程序 数据结构 算法,25,编程需要哪些技能?编程既需要高层的创造性思维,又需要低层的细节处理;一个好的程序员必须学会:创造性地分析问题、解决问题;小心翼翼地仔细编码。,26,计算机
8、语言机器语言:机器硬件执行的是用机器语言描述的指令;指令的格式一般为:由0、1组成,难以理解和编写,工作效率极低,正确性难以保证。1111011000000110100000000001010000000010011101001010100110000000111111000011001110001001000111101110110000000101101000011000011000000101101000111111010000000101101000111111001000001001,27,汇编语言:用符号来表示指令的操作码和数据单元,使用较为方便,如add ax,0;汇编语言程序不
9、能直接执行,需专门的汇编系统把它翻译成机器指令的形式,然后运行。层次仍然太低,程序开发效率较低。mov eax, dword ptr ebp-4cmp eax, dword ptr ebp-8jle main+36h (00401046)mov ecx,dword ptr ebp-4mov dword ptr ebp-0Ch,ecxjmp main+3Ch (0040104c)mov edx,dword ptr ebp-8mov dword ptr ebp-0Ch,edx,28,高级语言:用一种更自然、更接近于人类语言习惯的符号形式(如数学公式)来编写程序,这样写出来的程序更容易理解和使用;高
10、级语言程序也不能直接运行,需专门的编译器把它翻译为机器指令的形式,然后运行;if(x y) z = x; else z = y;,29,高级语言的发展历史:1950s:Fortran, Lisp1960s:Cobol, Algol, APL1970s:Basic, Pascal, C1980s:Smalltalk, C+, Modula, Ada, Prolog1990s:Java,30,1.2 C语言简介,1.2.1 C语言的历史,C 语言,Unix 操作系统,管理和分配计算机的软硬件资源,合理地组织计算机的工作流程,并向用户提供各种服务功能。,计算机系统示意图,CPU、内存、I/O设备(显
11、示器、键盘、软盘机等)。,(Word),31,1963年,MIT、贝尔实验室和GE决定联合开发MULTICS操作系统,该系统庞大而复杂,研制的难度远远超出人们的预料,因此贝尔实验室和GE先后退出了该项目;1969年,贝尔实验室的Ken Thompson在MULTICS上编写了一个叫着“太空旅行”(Space Travel)的游戏,模拟一个飞行员驾驶一艘宇宙飞船在太阳系当中遨游,并且可以在各种星体上着陆。后来他们对MULTICS的访问被关闭了,因此Thompson在贝尔实验室找了一台无人使用的PDP-7计算机,然后和Dennis Ritchie在一台GE-635计算机上,利用其GECOS所提供的
12、一个交叉汇编器,把空间旅行游戏用PDP-7汇编语言重新编写,然后用穿孔纸带把它转移到PDP-7上;,32,后来,Thompson和Ritchie等人开始为PDP-7编写一个新的操作系统。在写好了文件系统和一组基本的软件工具以后,他们编写了一个PDP-7的汇编器,这样他们就能够直接在PDP-7上编程了。到了1970年,操作系统的基本元素都已经完成了,他们给系统起了一个名字UNIX;1970年夏,研究小组得到了一台新机器PDP-11,因此把Unix系统从PDP-7移植到PDP-11,这项工作非常繁琐,因为整个系统都是用汇编语言来编写的。研究小组开始考虑用高级语言来重写整个系统,以提高可移植性和可懂
13、性。,33,Algol 60,Algol 68,CPL,BCPL,B,C,Simula 67,C+,1960,1963,1967,1970,1972,1983,剑桥大学,Matin Richards,Ken Thompson,Ritchie,Bjarne Stroustrup,可移植C,1977,88 ANSI C,1988,ANSI,ANSI C,1983,ANSI,离硬件较远,规模太大,简单、接近硬件过于简单、数据无类型,简化的CPL,用C语言重写Unix系统,不依赖具体机器,34,1.2.2 C语言的特点,简单。C语言的语法简洁、紧凑,是一个比较小的语言。32个关键字,9种控制语句;实用
14、。“by programmer,for programmer”;高效。C语言程序生成的目标代码的效率只比汇编语言低10;可移植性好;根据一项统计,在企业招聘的软件工程师职位当中,有22.7%的职位要求使用C/C+编程,在所有的编程语言中排名第二。,35,1.2.3 C语言的应用领域,操作系统:Unix、Linux、Windows等;系统软件:嵌入式系统软件(81%采用C语言)、设备驱动程序、数据库管理系统、病毒程序、磁盘管理工具等;商业应用:媒体播放软件、游戏软件、专家系统软件、绘图软件等;教学领域:Matlab、信号处理、数据结构。,36,1.3 一个例子,问题:判断一个数是奇数还是偶数?,
15、1.3.1 问题描述,37,问题分析这个数必须是何种类型?这个数如何获得?什么叫“奇数”,什么叫“偶数”?如何来判断?如何把判断的结果通报给大家?,38,接受来自于键盘输入的一个整数;如果这个数是一个偶数,那么在屏幕上显示“偶数”;如果这个数是一个奇数,那么在屏幕上显示“奇数”。,更准确的问题描述,39,输入一个整数;把该整数除以2;如果余数等于0,表明这是一个偶数,在屏幕上显示“偶数”;否则的话,表明这是一个奇数,因此在屏幕上显示“奇数”。例如:92543;其他方法:判断最低位。,解决该问题的算法,40,1.3.2 C语言程序,/* 输入一个整数,判断它是奇数还是偶数 */#include
16、void main( ) int num;/* 输入的整数 */ int rem;/* 除2以后的余数 */ /* 从用户处得到该整数. */ printf( “请输入一个整数:”); scanf( “%d”, ,41,/* 计算除2以后的余数并输出结果 */ rem = num % 2; if (rem = 0) printf(“偶数n”); else printf(“奇数n”); ,请输入一个整数:17奇数,42,1.3.3 C程序组成,/* 输入一个整数,判断它是奇数还是偶数*/#include void main( ) int num;/* 输入的整数 */ int rem;/* 除2
17、以后的余数 */ /* 从用户处得到该整数. */ printf( “请输入一个整数:”); scanf( “%d”, ,位于/*和*/之间的文字,称为注释。用来帮助读者理解程序;在程序运行时会被忽略掉。,/ ,43,/* 输入一个整数,判断它是奇数还是偶数*/#include void main( ) int num;/* 输入的整数 */ int rem;/* 除2以后的余数 */ /* 从用户处得到该整数. */ printf( “请输入一个整数:”); scanf( “%d”, ,以符号“#”开头的行, 称为编译预处理行;“#include”称为文件预处理命令;“#include ”
18、是让文件“stdio .h”的内容包含到程序中去;,44,/* 输入一个整数,判断它是奇数还是偶数*/#include void main( ) int num;/* 输入的整数 */ int rem;/* 除2以后的余数 */ /* 从用户处得到该整数. */ printf( “请输入一个整数: ”); scanf( “%d”, ,C程序是由函数构成的;main( ) 是每个C程序都必须有的,称为主函数;可以把主函数看成是程序的入口; 和 分别表示函数的开始和结束。,45,/* 输入一个整数,判断它是奇数还是偶数*/#include void main( void ) int num;/*
19、输入的整数 */ int rem;/* 除2以后的余数 */ /* 从用户处得到该整数. */ printf( “请输入一个整数:”); scanf( “%d”, ,变量的声明部分,定义所用到的变量,指明它们的名字和类型。,46,/* 输入一个整数,判断它是奇数还是偶数*/#include void main( void ) int num;/* 输入的整数 */ int rem;/* 除2以后的余数 */ /* 从用户处得到该整数. */ printf( “请输入一个整数:”); scanf( “%d”, ,函数的执行部分,由若干个语句组成,每一条语句指明了程序即将执行的某一个操作。每一条语
20、句后面必须有一个分号结尾。,47,1.3.4 从C到机器语言,用C语言编写的程序称为C语言的“源程序”(source code);计算机的处理器CPU只能看懂用它自己的机器语言来编写的“可执行程序”(executable program)0、1序列;不同的CPU系列有不同的机器语言,如X86, PowerPC, SPARC, ARM, .;如何让CPU来执行用C语言编写的程序?,48,需要两个步骤,使用两个工具软件,把一个C源程序转换为相应的可执行程序:使用一个C 编译器(compiler)把C源程序转换等价的、用机器语言来表示的程序(即01序列);使用一个链接器(linker)把这个转换后的
21、程序与它所引用的库文件(如printf, scanf)链接在一起,生成最终的可执行程序(即 .exe 文件);类似于Visual Studio 之类的编程环境,可以把这两个步骤合二为一。,49,从源程序到可执行程序的转换,50,1.4 C程序的上机步骤,1.4.1 上机环境,操作系统:Windows系列,如Windows XP 或Vista等;编程工具:Visual C+ 6.0 或以上的版本。,51,1.4.2 上机步骤,一、打开Visual C+ 编程环境;二、创建工程;三、创建源文件,编辑源程序;四、编译和链接,生成可执行文件。,52,一、打开Visual C+ 编程环境,进入VC编程环
22、境主要有两种方法:在Windows系统的桌面双击 VC 图标;从Windows系统的“开始菜单”进入。,53,方法1:用鼠标双击“桌面”上的VC图标,进入环境,54,方法2:从“开始菜单”进入,55,56,File 菜单:文件操作等,57,Edit 菜单:编辑查找,58,View 菜单:窗口设置等,59,Insert 菜单:资源加入等,60,Project 菜单:工程管理等,61,Build 菜单:编译链接调试,62,Tools 菜单:调试工具、系统配置等,63,Window 菜单:窗口管理,64,Help 菜单:帮助信息,65,二、创建一个新的工程,工程(Project)的概念:由一组相关的
23、文件(源文件、头文件、资源文件、配置文件等)所构成,用来生成一个最终的二进制文件(例如可执行文件EXE、动态链接库DLL等);每一个程序都需要一个相应的工程,工程名即为生成的程序的名字(而非源文件名)。工作空间(Workspace)的概念:每个工程都存在于一个工作空间中,在创建一个新的工程时,相应的工作空间也被创建;一个工作空间可以包含若干个相关的工程。,66,1. 单击“File” “New”或者按快捷键Ctrl+N,67,创建新工程的界面,68,2. 指定工程的类型、存放位置和名称,(a) 类型:控制台程序,(b)存放位置,(c) 工程名称,选择路径,69,3. 指定控制台程序的类型,选择
24、空的工程。,70,确认信息,71,新工程已创建,72,三、创建源文件,编辑源程序,(a)文件类型:C+源文件,(b) 源文件名称test.c,1. 创建源文件(方法1:单击“File” “New” ),73,1. 创建源文件(方法2:鼠标右击Source Files),74,输入文件名,test.c,75,2. 编辑源文件,main ( ) printf(“Hello, world! n”);,76,3. 经常性地存盘,存盘的方法:单击“File” “Save” 按快捷键Ctrl+S在工具栏上点击图标 。,77,四、编译链接、调试程序,(1)单击“Build” “Build” 或者按F7进行编译链接,(2)单击“Build” “Execute” 或者按Ctrl+F5运行程序,78, END ,