首页 > 其他分享 >计算机导论学习记录(二)

计算机导论学习记录(二)

时间:2023-02-08 12:45:21浏览次数:52  
标签:计算机 记录 代码 导论 复杂度 数组 节点 函数

这个作业的目标 <学习内容的系列记录>
这个作业属于哪个课程 计算机导论
这个作业要求在哪里 https://www.bilibili.com/video/BV1EW411u7th/?spm_id_from=333.337.search-card.all.click&vd_source=2d58080e4c0c391c5f011713fd8b09b4

学习内容的系列记录(二)

一、知识要点(程序设计基础知识)

1、早期的编程方式

  • 在早期,计算机没有内存的概念,人们通过打工纸卡等手段将程序输入计算机。
  • 早期计算机的编程
    • 打孔纸卡/纸带:在纸上打孔,用读卡器读取数据进行编程。
    • 插线板:通过插拔线路的方式,改变器件之间的连接方式,进行编程。
    • 面板开关:通过拨动面板上的开关,进行编程。输入二进制操作码,按存储按钮,推进至下一个内存位,直至操作完内存,按运行键执行程序。
  • 程序和数据都存在一个地方,叫冯诺依曼结构。冯诺依曼计算机的标志是,一个处理器(有算术逻辑单元)+数据寄存器+指令寄存器+指令地址寄存器+内存

2、编程语言发展史

  • 二进制是计算机的母语,计算机只能理解二进制。这叫机器语言机器码。用自然语言对程序的高层次描述,称为伪代码。然后用操作码表把伪代码转成二进制机器码。

  • 汇编器读取用汇编语言写的程序,然后转成机器码。一条汇编指令对应一条机器指令。

  • A-0

    • 1950年,为释放超算潜力,葛丽丝·霍普博士,设计了一个高级编程语言,叫 Arithmetic Language Version 0,一行高级编程语言 可以转成几十条二进制指令。但由于当时人们认为,计算机只能做计算,而不能做程序,A-0 未被广泛使用。
    • 为了做到编程语言的复杂转换,霍普博士在1952年创造了第一个编译器,专门把高级语言转化为低级语言(比如汇编和机器码)。
  • 1957年,IBM1957发布了高级编程语言FORTRAN,平均来说,FORTRAN 写的程序,比等同的手写汇编代码短 20 倍,FORTRAN 编译器会把代码转成机器码。但它只能运行于一种电脑中。

  • 1959年,数据系统语言委员会开发了一门高级语言,简称COBOL。每个计算架构需要一个 COBOL 编译器,不管是什么电脑都可以运行相同的代码,得到相同结果。

  • 现代编程语言

    • 1990年,有LGOL, LISP 和 BASIC 等语言。
    • 70年代,有Pascal,C 和 Smalltalk。
    • 80年代,有C++,Objective-C 和 Perl。
    • 90年代,有Python,Ruby 和 Java。

3、编程原理-语句和函数

  • 首先要初始化变量:设置最开始的值。
  • 程序的不只要从上到下运行,还要用控制流语句
    • If语句(条件语句):如果X为真,那么执行Y。If语句走那条路,取决于表达式的真假。
    • while循环:当while条件为真,那么代码会重复执行。当满足条件时进入循环,进入循环后,当条件不满足时,跳出循环。
    • for循环:for循环不判断条件,判断次数,会循环特定次数。foe的特点是每次结束,for会加一。
    • 函数:为了隐藏复杂度,可以把代码打包成函数。其他程序想用函数,直接写函数名就可以了。
  • 最后,我们还需要把结果交给使用这个函数的代码,所以用return语句,旨在返回什么。

4、算法:解决问题的具体步骤

  • 算法的输入大小运行步骤之间的的关系叫做复杂度,表示运行速度的量级。专业名称大O表示法
  • 选择排序:在一列数组中,从第一个数字开始,每个数组位置都跑一边循环,找最小数,然后互换位置。复杂度为O(n2)
  • 归并排序:首先检查数组是否大于一,如果是,就把数组分成两半,最后每个数组大小为一。然后就可以归并了。从前两个数组开始,读值排序合并,重复这个过程,按序排列。然后比较两个数组第一个数,取最小数,重复这个过程,就排好了。复杂度为O(n×logN)
  • Dijkstra算法
  • 一开始复杂度为O(n²),后来复杂度为O(nlog n +I),在下图中,n表示节点数,I表示有几条线。

5、数据结构

  • 下标:为了拿出数组中某个值,我们要指定一个下标,大多数编程语言里,数组下标都从 0 开始,用方括号 [ ] 代表访问数组。注意**:很容易混淆 "数组中第 5 个数" 和 "数组下标为 5 的数",数组下标为5的数是数组里面的第6个数。
  • 字符串:由字母、数字、标点符号等组成的数组。字符串在内存里以0结尾(二进制0)。
  • 矩阵:是数组的数组。如一个3×4矩阵就是一个长度为3的数组。
  • 结构体:把几个有关系的变量打包在一起的叫做结构体。
  • 节点:以指针为变量的结构体叫节点。
  • 指针:指针是一种特殊变量,指向一个内存地址,因此得名。
  • 链表:是一种灵活数据结构,能存很多个节点。灵活性是通过每个节点指向下一个节点实现的。
  • 队列: 就像邮局排队,谁先来就排前面,这叫先进先出
  • :栈是后进后出
  • :在节点中改成多个指针就能做成树。在树中,最高的节点叫做根节点(root),根节点下的所有节点都叫子节点(children),任何子节点的指数上层节点叫母节点(parent node),树结束的地方叫叶节点

6、阿兰 图灵

  • 可判定性问题:是否存在一种算法,输入正式逻辑语句 输出准确的是或否答案?
  • 美国数学家阿隆佐·丘奇,开发了一个叫Lambda算子的数学表达系统,证明可判定性问题不存在。
  • 图灵机:只要有足够的规则,状态和纸带,图灵机可以解决一切计算问题。和图灵机一样完备,叫做图灵完备
  • 停机问题证明图灵机不能解决所有问题。
  • 图灵测试:向人和机器同时发信息,收到的回答无法判断哪个是人,哪个是计算机,则计算机达到了智能程度。

7、软件工程

  • 对象:当任务庞大,函数太多,我们需要把函数打包成层级,把相关代码都放一起,打包成对象。对象可以包括其他对象,函数和变量。把函数打包成对象的思想叫做面向对象编程,面向对象的核心是隐藏复杂度,选择性的公布功能。

  • API:API帮助不同程序员合作,不用知道具体细节,只要知道怎么使用就行了·。当团队接收到子团队编写的对象时,需要文档和程序编程接口来帮助合作。API控制哪些函数和数据让外部访问,哪些仅供内部。

  • 集成开发环境(IDE):软件开发工具里集成了很多有用的功能,帮助写代码,整理,编译和测代码,因为集成了所有东西,所以叫IDE。DE帮你检查错误,并提供信息,帮你解决问题,这个过程叫调试(debug)

  • 文档与注释:文档一般放在一个叫做README的文件里,文档也可以直接写成注释,放在源代码里,注释是标记过的一段文字,编译代码时,注释会被忽略。注释的唯一作用是帮助开发者理解代码

  • 源代码管理(版本控制):大型软件公司会把会把代码放到一个中心服务器上,叫代码仓库,程序员可以把想修改的代码借出,修改后再提交回代码仓库。版本控制可以跟踪所有变化,如果发现bug,全部或部分代码,可以回滚到之前的稳定版。

  • 质量保证测试(QA):找bug

  • beta版:接近完成的软件,相当于游戏里的测试服。

2、学习心得

  • 从这期内容来看,对用计算机来如何做软件有了大致的认识,函数,语句,算法,数据结构等等。
  • 一个软件需要很多程序员互相配合才能完成。

标签:计算机,记录,代码,导论,复杂度,数组,节点,函数
From: https://www.cnblogs.com/dragon-dai/p/17101315.html

相关文章

  • Leetcode打卡记录
    23.2.8189.轮转数组解题思路1:用pythonlist的切片特性,再组合成新的字符串。——失败,未使用原地算法,判定不通过解题思路2(评论区):通过多次翻转,实现右移。1.反转整......
  • 2023-02-08 记录一下react-native app项目搭建过程
    项目开发环境:windows10项目运行系统:Android项目搭建前你得确保你有一个用于开发的IDE和已经安装好了的rn(react-native简称)脚手架,我是要用rn的脚手架来搭建项目的。请分......
  • 使用 Log4Net 记录日志
    使用Log4Net记录日志 第一步:下载Log4Net           下载地址:http://logging.apache.org/log4net/download_log4net.cgi          把下载的......
  • Java学习记录(一)
         ......
  • 计算机网络--常用协议
    ARP协议ARP协议是位于数据链路层的地址解析协议(AddressResolutionProtocol)是通过解析IP地址得到MAC地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求......
  • 让计算机”思考“——12.1作为”工具“的程序和为了”思考“的程序
    程序就如同是由计算机执行的各种指令罗列起来的文章。计算机内部的CPU,通过对该文章的内容进行解析和运行,来控制连接到计算机的各种外围设备。具体来说,控制就是指CPU和各......
  • 课设记录
    12.jsp老师看学生信息,哪个学生报他了。实现是用jsp读取数据库用select根据老师id和status选学生。点击查看利用href向22.jsp学生id。22.jsp显示学生信息,jsp连接数据库。展......
  • 自我介绍与学习记录
    这个作业属于哪个课程https://edu.cnblogs.com/campus/fzzcxy/2023learning这个作业要求在哪里https://edu.cnblogs.com/campus/fzzcxy/2023learning/homework/1......
  • 自我介绍与学习记录
    自我介绍与学习记录这个作业属于哪个课程https://edu.cnblogs.com/campus/fzzcxy/2023learning这个作业要求在哪里https://edu.cnblogs.com/campus/fzzcxy/2023......
  • 记录一起因为阿里云waf防火墙造成公司网站出现405 Method Not Allowed
    公司商城网站是客户访问请求会先到阿里云的CDN在到阿里云的waf防火墙,最后到源站服务器公司商城网站访问刷新5-6次就会出现 405MethodNotAllowed从字面上的意思理解,很......