1 / 61

计算机程序设计 2014 年春季学期 305-307 教室

计算机程序设计 2014 年春季学期 305-307 教室. 唐晋韬 助理研究员 计算机学院 613 教研室 邮件: tangjintao@nudt.edu.cn 电话: 13755120042 , 574631 办公室:一号院银河楼前楼 118. 一 个小调查. 不知所云. 部分看得懂. 我能写出来. 这段语句是什么意思?. 我 会更复杂的. 学习目标. 对程序设计没有概念的同学 理解计算机问题求解的过程与方法 具有程序设计思维,能够用计算机语言描述问题、表述求解问题的逻辑步骤,具有一定的算法思维,能够根据问题设计求解算法

Download Presentation

计算机程序设计 2014 年春季学期 305-307 教室

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. 计算机程序设计2014年春季学期305-307教室 唐晋韬 助理研究员 计算机学院613教研室 邮件:tangjintao@nudt.edu.cn 电话:13755120042,574631 办公室:一号院银河楼前楼118

  2. 一个小调查 不知所云 部分看得懂 我能写出来 • 这段语句是什么意思? 我会更复杂的

  3. 学习目标 • 对程序设计没有概念的同学 • 理解计算机问题求解的过程与方法 • 具有程序设计思维,能够用计算机语言描述问题、表述求解问题的逻辑步骤,具有一定的算法思维,能够根据问题设计求解算法 • 掌握C++编程语言的基本语法、编程环境 • 养成良好的编程习惯及风格 • 之前学过编程语言的同学 • 更要注意培养良好的编程习惯 • 理解C++语言在语法、环境、调试上的独特之处 • 程序设计思维和算法思维的培养 不用担心周围的“高手” 你们的差距仅在经验!

  4. 学习方法 • 课堂学习+课后实践 • 问题引导的课堂学习:每节课求解一个问题,达到一个小目标 • 理论指导下的实践,实践出真知 • 在编写大量程序之后,才能感到运用自如 • 所有小目标完成后,期末会有让你惊讶的能力和代码量 • 独立学习+团队协作 • 自信、自立、自尊、自强 • 自学、练习、调试、上网查阅为主 • 教辅指导、请教同学、参看代码 • 不能抄袭,参看代码要注释说明

  5. 交流辅导 • 课程网站 • http://course.trustie.net/projects/139 • 教学网、民网 • 上机辅导 • 每周一次,晚上 • 辅导教员 傅翔 15574804059 黄鸿杰 13297498284 • 答疑安排 • 网络答疑 • 教室答疑

  6. 课程网站 • http://course.trustie.net/projects/139 密码:305307 课程资源的发布 作业的提交、评阅 课程相关事项通知 网络答疑 讨论区,欢迎多发帖交流

  7. 计算机程序设计 第一章 计算机与程序设计 计算机学院613教研室 唐晋韬

  8. 本章内容 • 1.1 计算机系统概述 • 1.2 软件的形成 (1.4节) • 1.3 程序设计基本概念 (1.2 节) • 1.4 程序设计方法 (1.3节) • 1.5 第一个C++程序 • 1.6 程序设计风格

  9. 学习目标 • 了解程序设计语言、程序设计的基本概念 • 初步掌握C++程序的结构 • 明确程序设计风格的意义 • 实践目标:开始编程的奇幻旅程 • C++编程环境的安装与使用 • 编写第一个C++程序

  10. 1.1 计算机系统 • 计算机系统 • 机器系统 • 能接收和存储信息 • 能对数据进行处理和计算 • 能输出结果 • 整个过程的执行者是硬件,但硬件是受软件控制的 • 程序设计,就是编写软件,使硬件按人的意图工作

  11. 1.2 软件的形成 为什么不用机器码编写软件? • 软件(Software)的形成 • 程序员(Programmer)编写程序源代码(Source Code) • 编译器(Compiler)把源代码转换为可被计算机理解的机器代码(Machine Code) • 并把机器代码以可执行文件(Executable File)的形式保存在磁盘上

  12. 1.2 软件的形成 • 人使用自然语言 ,计算机使用机器码(二进制) • 机器码的“1+1” • 汇编语言的“1+1” 10111000 00000001 00000000 00000101 00000001 00000000 MOV AX, 1 ADD AX, 1

  13. 1.2 软件的形成 Java语言编写的1+1程序 • 一种程序设计语言对应一种编译器,实现从源程序到可执行程序的转换 C语言编写的1+1程序

  14. 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 CPL BCPL B C++ Smalltalk 80 Java Simula 67 QBASIC VB ANSI-BASIC BASIC FORTRAN90 FORTRAN FORTRAN77 PL/1 COBOL LISP PROLOG

  15. 1.2 软件的形成 • C语言的历史 • 起源于Algol 60 • 在Algol 60的基础上发展出CPL语言 • 1967年发展为BCPL,用于编写操作系统和编译器 • 1970年贝尔实验室将BCPL改良成B,并用B语言实现了第一个UNIX操作系统 • 1972年左右,Dennis Ritchie和Ken Thompson在贝尔实验室设计UNIX系统时,开发出了C语言 • 之后,C语言发展出很多版本 • 1988年,美国国家标准化协会(ANSI)制定了C的标准——ANSI C

  16. 1.2 软件的形成 • C++语言:在C语言中引入了面向对象的思想,可不加修改地使用C语言代码 • 1983年8月, 第一个C++语言投入使用 • 1985年10月,完成了经典巨著The C++ Programming Language第一版 • 1991年6月, 第二版完成 • 1997年7月, 第三版完成 • 1998年11月,ISO标准被批准

  17. 1.2 软件的形成 • C语言的历史及作用 接受美国国家技术勋章 C语言主要发明者:Dennis Ritchie Dennis 和 Ken在开发Unix系统

  18. 1.2 软件的形成 应用程序(Application) 基于平台的应用程序 高级语言的地盘 C语言的地盘 应用平台 操作系统(OS) 低级语言的地盘 硬件(Hardware)

  19. 1.3 程序设计的基本概念(1.2节) • 问题求解过程 • 问题定义——明确要解决的问题 • 算法设计——把要求解的问题转化为计算机的解题步骤 • 程序编码——对设计出来的算法进行编程实现 • 测试和调试——发现和纠正程序中的错误

  20. 1.3 程序设计的基本概念 测试调试 50% 开发步骤 编码 20% 设计 20% 分析10% 时间及工作量

  21. 1.3 程序设计的基本概念 • 算法与程序(1.2.2节) • 算法——由有限个步骤组成的求解问题的方法 • 算法的特点 • 有穷性:执行有穷个步骤后必须终止 • 确定性:每一个步骤必须是无二义的 • 能行性:每一个步骤都可以在有限时间内做完 • 输入:一般有输入信息 • 输出:一般有一个或多个输出信息

  22. 1.3 程序设计的基本概念 • 算法的描述方式 • 文字描述 • 自然语言 • 图形描述 • 流程图、盒图,PAD图等 • 程序语言描述 • 计算机程序语言,如C++ • 伪码描述

  23. 算法描述示例 • 求两个整数m、n(m≥n)的最大公因子 程序语言描述 void  main(){ int  m,n,r;   scanf(″please input m,n:\n″,&m,&n); r = m % n;   while (r != 0)   {m = n ;  n = r ;  r = m % n;}   printf(″max_common_factor is:″,r);  } 文字描述 ①求余数:以n 除m, 并令r为余数 (0 ≤ r < n); ②判断余数是否为零:若r = 0 则结束算法,n 就是最大公因子; ③若r ≠ 0 则m ← n, n ← r,返回  ① 。 伪码描述: int  max_common_factor (int m, int n) { int  r = m % n;   while (r != 0)     {m = n ;  n = r ;  r = m % n;}      return  n ; } 流程图描述

  24. 1.3 程序设计的基本概念 数据输入 数据输出 数据处理 • 程序 • 程序的组成 • 数据 • 数据结构,程序处理的数据 • 操作 • 处理数据的操作步骤,即算法 程序 = 数据结构 + 算法

  25. 1.3 程序设计的基本概念 • 程序设计和编码 • 先设计,后编码 • 设计是基础,是编码的依据 • 设计的好坏影响代码的质量

  26. 1.4 程序设计方法(1.3节) • 结构化程序设计 • 任何程序逻辑都可以用顺序、选择和循环三种基本结构表示 顺序结构 选择结构 循环结构

  27. 1.4 程序设计方法 • 结构化程序设计 • 自顶向下,逐步求精 • 描述问题,分析问题,分解问题成相对独立的子问题(反复进行,逐步分解) • 描述子问题的数据和操作 • 模块化原则 • 尽量采用典型基本控制结构:顺序、选择、循环 • 缺点(对于大型软件开发) • 稳定性低、可修改性和可重用性差

  28. 1.4 程序设计方法 • 面向对象程序设计 • 面向问题 • 现实世界是由对象组成的 • 由哪些对象组成?对象之间如何相互作用? • 结构化程序由函数组成,面向对象程序由对象组成 • 易于扩展、可维护性好

  29. 1.4 程序设计方法 • 面向对象分析和设计步骤 • 找出问题中的对象和类 • 确定每个对象应具备的属性和功能 • 确定类、对象之间关系,相互作用的方式 • 用程序代码实现这些对象和类

  30. 1.5 第一个C++程序 • 使用集成开发环境(IDE) • 编辑(Edit) • 编译(Compile) • 链接(Link) • 运行 (Run) Eclipse CDT/C++ Builder/Netbeans C++ 本次课程需要Visual C++ 6.0

  31. 编辑 编译 链接 运行 1.5 第一个C++程序 • 使用IDE开发C++程序 程序代码的录入, 生成源程序*.c,*.cpp 出错? 语法分析查错,翻译 生成目标程序*.obj 与其它目标程序或库 链接装配,生成可执行 程序*.exe 出错? 结果错?

  32. 1.5 第一个C++程序 工程 文件1.cpp 文件2.cpp …… • Visual C++ 6.0使用 • 建立工程 • 建立文件 • 编写程序 • 编译 • 程序有错,则定位并修正语法错误 • 运行 • 运行结果出错,则跟踪调试修正逻辑错误 文件1.obj 文件2.obj 工程.exe

  33. 1.5 第一个C++程序 • 建立工程 • 菜单“文件”-“新建” • 在“新建”对话框选择“工程” • 选择“Win32 Console Application” • 输入工程名字 • 选择工程存放位置 • 单击“确定” • 在“step 1 of 1”选择“An empty project”,单击“完成”

  34. “新建”对话框 输入工程名称 选择工程存放位置 选择工程类型

  35. “Step 1 of 1”对话框

  36. 1.5 第一个C++程序 • 新建文件 • 菜单“文件”-“新建” • 在“新建”对话框中选择“文件” • 选择“C++ Source File” • 输入文件名 • 确保“添加工程”被选中,工程名正确 • 单击“确定”

  37. “新建文件”对话框 文件要加入工程 输入文件名 选择新建文件类型

  38. 1.5 第一个C++程序 • 文件编辑 • 在IDE左边的“工作区”选择“FileView” • 选择“Source Files”查看源文件 • 选择“Header Files”查看头文件 • 选中(双击)要编辑的文件进行编辑

  39. “文件编辑”窗口 程序编辑窗口 工作区

  40. 1.5 第一个C++程序 • 编译,纠正语法错误 • 单击工具栏上的 按钮 • 或者使用快捷键“F7” • 或者使用菜单“编译”-“构件…”

  41. “编译”窗口 编译按钮 编译结果,英文,很好懂,英语一级就够了

  42. 1.5 第一个C++程序 • 纠错 • 编译完成后如果有语法错误,将会显示在IDE下面的“编译”窗口 • 双击相应的错误,将会定位产生错误的语句 • 修改错误后重新编译

  43. “纠错”窗口 错误定位 双击错误信息“mx:undeclared identifier”

  44. 1.5 第一个C++程序 • 运行 • 单击工具栏上的 按钮 • 或者使用快捷键“Ctrl+F5” • 或者使用菜单“编译”-“执行…” • 运行结果(输入输出)在一个弹出的桌面窗口中显示

  45. “运行”窗口

  46. 1.5 第一个C++程序 • 调试(debug),纠正逻辑错误 • 单步执行(快捷键“F10”或点击 ) • 进入函数(快捷键“F11”或点击 ) • 跳出函数(快捷键“Shift+F11”或点击 ) • 执行到光标处(快捷键“Ctrl+F10”或点击 ) • 设置断点(快捷键“F9”或点击 ) • 运行到结束或到断点处(快捷键“F5”或点击 )

  47. “调试”窗口 可以调试程序,让程序执行到某一行后暂停 显示部分变量的值 还想看其他变量的值?加到这里

  48. 1.5 第一个C++程序 • 调试时获取变量的值 • 将鼠标放到变量上面,会通过浮动窗口显示相应变量的值 • 在“watch”窗口中加入相应变量会自动显示该变量的值 • 在变量上点击鼠标右键,选择菜单“QuickWatch”查看变量的值

  49. “获取变量值”窗口

  50. 1.5 第一个C++程序 • Hello World! • 我们知道了输出语句是printf(); • 请写个程序,向C++的世界Say Hi

More Related