《计算思维导论——程序设计思想与方法》——第1章:计算与计算思维

计算思维,是指运用计算机科学的基础概念、思想和方法去解决问题时的思维活动,涉及如何在计算机中表示问题、如何让计算机通过执行有效的算法过程来解决问题。
计算是利用计算机解决问题的过程,计算机科学是关于计算的学问。
本章介绍计算的基本概念和计算思维的基本内容。

1.1 什么是计算?
1.1.1 计算机与计算

现代计算机的主要功能部件如下:
《计算思维导论——程序设计思想与方法》——第1章:计算与计算思维_第1张图片
CPU、指令与程序

  • 中央处理器(CPU)是计算机的计算部件,能够执行机器指令,或简称指令(instruction)。某种CPU能执行的全体指令是由该CPU的制造商并保持固定不变的,称为该CPU的指令集。
  • 许多指令按次序排列而成并交给计算机逐条执行的指令序列称为程序(program)。为了用计算机解决问题,把问题的解法表达成一个指令序列(即程序)的过程,称为程序设计或编程(programming)。
    存储器
  • 存储器是计算机的记忆部件,用于存储数据和程序。
  • 存储器分为主存储器和次级存储器,它们是用不同的物理材料制造的。
  • 现在计算机在体系结构上的特点是:数据和程序都存储在主存储器中,CPU通过访问主存储器来取得待执行的指令和待处理的数据,这称为冯·诺伊曼(von Neumann)体系结构。
    输入/输出设备
  • 输入和输出设备提供了人与计算机进行交互的手段。
    计算
  • 针对一个问题,设计出解决问题的程序(指令序列),并由计算机来执行这个程序,这就是计算(computing)。
    ** 计算机的通用性**
    计算机科学
  • 为了更好地利用计算机解决问题,人们深入研究了关于计算的理论、方法和技术,形成了专门研究计算的学问——计算机科学(computer science)。
1.1.2 计算机语言

机器语言
*机器语言在形式上是二进制的,即所有指令都是由0和1组成的二进制序列。
汇编语言

  • 汇编语言本质上是将机器指令用更加容易为人们所理解和记忆的“助忆符”形式表现出来。
  • 为了使计算机理解汇编语言程序,需要用一种称为汇编器(assembler)的程序把汇编语言程序翻译成机器语言程序。
  • 低级语言具有无法克服的缺点:
    第一,低级语言与机器硬件结构紧密关联,因此为掌握低级语言必须了解很多底层硬件知识,导致低级语言的学习和使用都很困难,开发效率低而且容易出错;
    第二,由于不同硬件的计算机具有不同的机器语言和汇编语言,一类计算机上的低级语言程序不能拿到另一类计算机上执行,我们说低级语言程序不具有可移植性。
    高级编程语言
  • 高级编程语言相对于机器语言和汇编语言具有很多优点:
    第一,高级语言吸收了人们熟悉的自然语言(英语)和数学语言的某些成分,因而非常易学、易用、易读;
    第二,高级语言在构造形式和意义方面具有严格定义,从而避免了语言的歧义性;
    第三,高级语言与计算机硬件没有关系,用高级语言写的程序可以移植到各种计算机上执行。
    编译和解释
    高级语言的翻译有两种方式:编译和解释。
  • 编译器将高级语言程序(称为源代码)完整地翻译成等价地机器语言程序(称为目标代码)。以编译方式处理源代码,对目标代码可以进行很多细致的优化,从而程序的执行速度一般会更快。
    《计算思维导论——程序设计思想与方法》——第1章:计算与计算思维_第2张图片
  • 解释器直接分析并执行高级语言程序。解释的特点使“见招拆招”,对源代码总是临机进行解释和执行。解释性语言具有更灵活的编程环境,可以交互式地输入程序语句并立即执行,程序员面对的仿佛是一台能听懂高级语言的计算机。
    《计算思维导论——程序设计思想与方法》——第1章:计算与计算思维_第3张图片
1.1.3 算法
  1. 解决特定问题的、由一系列明确而可行的步骤组成的过程,称为算法(algorithm)。算法表达了解决问题的核心步骤,反映的是程序解题的逻辑。

    求两个自然数的最大公约数的过程
    【欧几里德算法】
    输入:自然数a、b
    输出:a、b的最大公约数
    步骤:
    第1步:令r为a/b所得的余数
    第2步:若r=0,则算法结束,b即为答案;否则置a←b,b←r,转到第1步
  • 对算法的两个要求:
    第一,每个步骤必须具备明确的可操作性;
    第二,构成算法的所有步骤必须能在有限时间内完成。
1.1.4 实现
  1. 给定一个问题,当我们找到解决问题的算法后,接着就需要用某种计算机语言将这个算法表示出来,最终得到一个能被计算机执行的程序(或代码),这个过程称为实现(implemention),或者俗称为写代码(coding)。
  2. 严格地说,算法和程序是不同的:算法是用非形式化方式表述的解决问题的过程,程序则是用形式化编程语言表述的精确代码。
1.2 什么是计算思维?
  1. 计算机科学家在用计算机解决问题时也有自己独特的思维方式和解决方法,我们统称之为计算思维(computational thinking)。
1.2.1 计算思维的基本原则
  1. 基本思考原则:既要充分利用计算机的计算和存储能力,又不能超出计算机的能力范围。
1.2.2 计算思维的具体例子

问题表示
抽象是用于问题表示的重要思维工具。计算机科学中的抽象包括数据抽象和控制抽象,简言之就是将现实世界中的各种数量关系、空间关系、逻辑关系和处理过程等表示成计算机世界中的数据结构和控制结构,或者说建立实际问题的计算模型。
算法设计
算法设计是计算思维大显身手的领域,计算机科学家采用多种思维方式和方法来发现有效的算法。
编程技术
*编程范型(programmming paradigm)*是指计算机编程的总体风格,不同范型对编程要素有不同的概念,计算的流程控制也不同。
可计算性和算法复杂性

1.2.3 日常生活中的计算思维
  • 算法过程
  • 模块化
  • 查找
  • 回溯
  • 缓冲
  • 并发
1.2.4 计算思维对其他学科的影响
1.3 初识Python
1.3.1 Python简介
  • Python语言最重要的设计理念是追求高度的可读性;
  • Python语言的另一个设计理念是尽量避免“这件事可以有很多种做法”,因此语言中冗余的成分很少,程序员经常只有唯一的也是最好的语言构造可用。
  • Python语言同时支持过程式、面向对象式和函数式等多种编程范型,拥有丰富的标准库来支持应用开发所需的各种功能。
1.3.2 第一个程序

在这里插入图片描述

1.3.3 程序的执行方式
  1. 在Python解释器提示符>>>下输入语句并执行的方式称为交互执行方式。
    Python程序文件及其执行方式
  2. 将程序语句保存在一个扩展名为.py的文本文件中,这种程序文件称为模块(module)。
  3. 第一次导入模块文件时,Python会创建一个文件名相同但扩展名为.pyc的文件,这是被Python解释器使用的一个中间文件——字节码文件。Python语言的翻译采用的是编译、解释混合方式:模块文件中的Python源程序首先被编译成较低级的字节码指令,然后再解释执行这些字节码指令。
    Python搜索路径
1.3.4 Python语言的基本成分

数据和表达式
4. 将运算符施加到数据上所得到的语言构造称为表达式。
变量和标识符
5. 变量具有名字,不同变量是通过名字相互区分的,因此变量名具有标识作用,故称为标识符。
6. Python语言中,标识符的构成必须符号规则:以字母或下划线开头,后面跟随0个或多个字母、数字、下划线。
7. 作为良好的编程风格,标识符的命名是有讲究的。

  • 首先,要尽量使用有意义的名字;
  • 其次,如果用两个以上单词组成一个名字,最好能让人看出单词之间的分界,具体做法有后续单词首字母大写或者用下划线分隔等形式;
  • 第三,每个人应当前后一致地使用某种命名风格。

语句

  • 语句是编程语言提供地基本命令,是程序地基本组成单元和执行单元。
  • print语句的用法“模板”:
    print <表达式>
    print <表达式1>, <表达式2>, …, <表达式n>:计算每个表达式的值,并在屏幕的同一行上显示用空格分隔的各表达式的计算结果。
  • Python“续行符”用于换行继续输入:只要在一行的末尾输入字符“\”再按回车键,就可以换到下一行继续。
    在这里插入图片描述
  • 函数调用:
    《计算思维导论——程序设计思想与方法》——第1章:计算与计算思维_第4张图片
    第一行def 开始定义函数,其后的great是新定义的函数的名字,great后面的括号用于表示函数的参数。接下来三行是函数体。
  • 作为惯例,一个Python程序中通常会定义一个名为main的函数。对于简单程序,可以将程序的所有语句放在main函数中;对于由很多函数组成的复杂程序,可以让main作为程序的执行入口
  • Python注释:以“#”开始,解释器遇见“#”时会自动忽略其后直到行末的内容。
1.4 程序排错
  1. 计算机行话中,程序中的错误被称为bug,尔发现并改正错误的过程称为debug(排错/调试)。
  2. 程序中的错误大体可分为三种类型:语法错误、运行错误和语义错误。
  3. 程序语法正确并不能保证程序执行成功,因为有很多仅在程序执行时才会出现的错误,这种运行错误也称为异常(exception)。
  4. 语义错误也称逻辑错误,是指程序在程序逻辑上出错,根本不是预定的功能。语法错误和运行错误都可以被计算机检查出来,程序员根据计算机的报错信息可以比较容易地找出源程序中的错误并纠正之。
  5. 一种有用地排错方法是在程序中插入大量的print语句,用来显示中间结果。
1.5 练习
  1. 计算机的主要部件有哪些?工作机制是怎样的?
    主要部件:输入设备、输出设备、CPU、主存储器/次级存储器;
  2. 什么是机器语言、汇编语言和高级编程语言?
    机器语言:CPU制造商在设计某种CPU硬件结构的同时,也为其设计了一种”母语“——指令集,这种语言称为机器语言(machine language);
    汇编语言:将机器指令用更加容易为人们所理解和记忆的”助忆符“形式表示出来。
    高级编程语言:用人们熟悉的自然语言和数学语言的某些成分来编写程序。
  3. 高级语言的编译和解释分别是怎样的过程?
    编译
    《计算思维导论——程序设计思想与方法》——第1章:计算与计算思维_第5张图片
    解释:
    《计算思维导论——程序设计思想与方法》——第1章:计算与计算思维_第6张图片
  4. 什么是计算?
    *计算是利用计算机一步一步地执行指令来解决问题地过程。
  5. 为什么计算机是通用的(即可以应用于各行各业)?
    一台计算机地硬件虽然固定不变,但是通过加载执行不同地程序,就能实现不同的功能,解决不同的问题。
  6. 算法和程序有何异同?
    程序是解决某个问题的指令序列。而算法是解决问题、由一系列明确而可行的步骤组成的过程。算法表达了解决问题的核心步骤,反映的是程序的解题逻辑。
  7. 计算思维建立在什么原则之上?
    计算思维建立在计算机的能力和限制之上。基本思考原则:既要充分利用计算机的计算和存储能力,又不能超出计算机的能力范围。
  8. 请回顾你在玩扑克牌时,抓牌过程中是如何整理顺序的。
    *将最大的移至一边,最小的移至另一边,对有序的局部序列,按大小排序。
  9. 假如我们玩猜数游戏:我心中想好一个 1~100 的自然数让你来猜,猜错的话我会告诉你太大或太小,直至你猜中。为了尽快猜中,你有什么好方法?
    每次猜中间,使范围逐渐缩小。
  10. 你会下棋(围棋、象棋、五子棋均可)吗?下棋时你是如何一次计算多步的?
    考虑棋子放到某个地方时下一步可以到哪里,实现什么目的?同时猜测对方会放到哪里,如何防止?
  11. 程序错误有哪几类?
    语法错误、运行错误和语义错误。
  12. 设计你的第一个程序:让计算机跟你打招呼(假设你叫 John)
    Hello John!
    Have fun with Python!
    分别以交互方式和程序文件方式来执行你的程序。
    交互方式:
    在这里插入图片描述
    程序文件方式:
    《计算思维导论——程序设计思想与方法》——第1章:计算与计算思维_第7张图片
    《计算思维导论——程序设计思想与方法》——第1章:计算与计算思维_第8张图片
    g

书籍下载地址:https://download.csdn.net/download/qq_37590544/10959608

你可能感兴趣的:(python)