C++学习-入门到精通-【0】计算机和C++简介

C++学习-入门到精通-[0]计算机和C++简介


计算机和C++简介

  • C++学习-入门到精通-[0]计算机和C++简介
  • 一、计算机的组成
  • 二、硬件和软件
  • 三、数据的层次结构
  • 四、机器语言、汇编语言和高级语言
  • 五、C++标准库
  • 六、面向对象技术


一、计算机的组成

计算机是由多个不同功能的逻辑单元组成的:

逻辑单元功能描述
输入单元从各种输入设备获取信息(数据和计算机程序),并将这些信息交给其他单元处理
输出单元取得计算机处理好的信息并将它们输送到各种输出设备上,以便用户在计算机外部使用
内存单元这是计算机用于保存信息的仓库,可以进行快速存取但它的容量不大。它可以保存输入设备输入信息,在需要时可以快速获取;也可以保存处理好的信息,直到输出设备将它们输出;注意,内存中保存的信息并不是永久的,它会随着计算机的关闭而丢失
算术逻辑单元负责加、减、乘、除等运算;还可以进行一些判断,比如,可以比较两个内存单元中的值是否相等,在现在的计算机中,算术逻辑单元(ALU)通常是CPU的一部分
中央处理器负责协调和监督其他各个部分的操作;比如,CPU会告诉输入单元何时将信息读入内存单元
辅助存储单元这是计算机中长期性的、大容量的信息仓库;辅助存储单元中的信息是永久存储的,计算机关闭之后仍能存在,但是要读取保存在这上面的信息读取效率远不及内存单元的读写速度

在这里插入图片描述

二、硬件和软件

计算机是在一系列的指令的控制下处理数据的,这此指令被称为计算机程序,而在计算机上运行的程序叫做软件;
一台计算机在物理上是由各种设备共同组成的,如键盘、鼠标、显示器、硬盘、内存、CPU等。这些设备总称为硬件;

三、数据的层次结构

层次描述
位(Bit)计算机中最小的数据项,可能的数值为0或1,这样一个数据项称作一个位;
字符(Character)二进制位是计算机可以处理的数据形式,但是人类更习惯于处理像十进制数字(0-9),字母(a-z, A-Z)和特殊字符(@,#等等)这类数据,所以将数字、字母和特殊符号称为字符;二进制数据通过编码可以转换成字符;
字段(Field)正如字符由位构成一样,字段也是由字符构成的;一个字段由一组有意义的字符组成
记录(Record)若干个字段可以组成一个记录;比如,一个学生的记录由他的名字、性别、年龄、学号这几个字段组成
文件(File)一个文件能够保存多个记录;比如一个学生名册文件中就保存了多个学生的记录
数据库(Database)一个数据库是一个电子化的数据集合,对它的组织要便于访问和操作

在这里插入图片描述

四、机器语言、汇编语言和高级语言

  1. 机器语言
    一般由数字字符串组成(0和1组成的数字字符串)。计算机能够直接明白它自己的机器语言,这是由其硬件结构决定的;
  2. 汇编语言
    使用机器语言来编写程序,这对程序员的要求太高了,只有少数人能做到。并且,使用这种语言进行编程效率低下,所以就出现了汇编语言,这是一种使用类似英语缩写的指令来表示基本操作的语言;同时,人们开发出了 汇编器的翻译程序,它们可以将汇编语言转换成机器指令;这种指令对于人而言要更易于理解,但是机器是无法理解的,所以必须经过转换;
  3. 高级语言
    汇编语言的出现只是在一定程度上方便了人们对程序的编写,所以为了更进一步的加快编程的速度,人们又开发出了高级语言,其中的单条语句就可以完成实质性的许多工作。高级语言使得程序员可以使用类似日常用语并包含常用数学符号形式的指令来编写程序,进一步的降低了编程的门槛。高级语言的翻译器叫做编译器(compiler),它能够将高级语言程序转换成机器指令;
    将大型高级语言程序编译成机器指令是较为耗时的,所以人们又发明了解释器(interpreter),它可以直接执行高级语言程序,但是这样的执行过程比编译后的程序的运行要慢很多。脚本语言就是使用解释器来执行的;

提示:解释器在网络应用脚本编写方面优于编译器。待解释的程序一下载到客户的机器上就可以开始执行,不需要经过编译的延迟。

五、C++标准库

C++程序由一系列的被称为类和函数的构件组成,你可以自己编写构成一个c++程序的所有构件。但实际上,大多数程序员都会使用C++标准库(C++ Standard Library)所提供的丰富而现成的类和函数。所以,要想了解“C++世界”,需要学习两方面的内容:一是学习C++语言本身,二是学习使用C++标准库所提供的各种类和函数。

提示:使用“构建块”的方式来创建程序,可以避免重复工作。这就是软件重用,也是面向对象编程的核心思想
在C++编程过程中,通常会使用下面三种构建块:C++标准库中的类和函数,你和你同事编写的类和函数,第三方软件商提供的类和函数

使用自己编写的类和函数的优点在于你可以确切的知道它们是如何工作的,并且可以检查C++代码;但是缺点是保证新开发的类和函数的正确性及有效性是十分费时且代价高昂的;

六、面向对象技术

软件开发者在编写程序的过程中发现,相较于早期的开发方法,采用模块化的、面向对象的设计和实现方法,可以显著软件开发小组的生产效率——面向对象的程序更易于理解、纠正和修改。

在这里大家可能还是不太理解什么是面向对象,举个例子,汽车就是一个面向对象的产品;

一个从想要开车,实际上只需要知道,油门、刹车和离合器是什么、怎么使用即可,至于为什么踩油门车子就能加速,汽车内部是如何实现的,驾驶员并不需要知道。用户只需要知道产品如何使用、它能实现什么功能即可,产品的功能是如何实现的用户不需要了解。

成员函数和类
现在,我们从汽车的例子继续介绍一些关键的面向对象编程概念。执行程序中的任务需要调用成员函数。成员函数拥有实际执行这个任务的程序语句,在面向对象编程中,它向用户隐藏了这些语句,就如同汽车油门隐藏了实现汽车加速的复杂的内部结构。在C++中,我们会创建名为类的程序单元,类包含了执行该类需要完成任务的成员函数集合。例如一个表示学生信息的类可能包含了一个修改学生信息的成员函数、添加一个学生的成员函数,删除一个学生的成员函数等;这些成员函数中包含了实现任务的的具体代码,但是用户在使用时,只需要调用这个函数就能实现对应的功能,并不需要知道这个函数的内部是如何实现的;

实例化
类的成员函数就像汽车制造使用图纸,在使用汽车之前,需要根据图纸先造出一个汽车才行;同样的,在使用类提供的函数来实现目标功能之前,首先需要创建一个类的对象。这个构建对象的过程也叫实例化(instantiation)。于是一个类的对象也叫这个类的一个实例。

重用
一份汽车的图纸可以生产许多汽车,同样的我们也可以重用一个类来创建许多的对象。在构建一个新的类和程序时,可以重用已有的类,这可以节省时间和精力,并且重用还有助于构建一个更加可靠、有效的系统,因为被重用的类肯定是经过了大量的测试、使用及性能调试。

消息和成员函数调用
踩油门向汽车发送了要加速的消息,同样的,我们可以向一个类的对象发送消息。每一条消息都是一个成员函数的调用,该消息告诉对象的成员函数要去执行它的任务。

属性和数据成员
一个汽车除了可以执行对应任务之外,它还具有许多属性,比如,汽车的重量、油箱容量、里程数、当前油箱中的油量、车漆的颜色等等;和汽车应该实现的功能一样,这些属性在图纸阶段就已经设计好了。每个对象都会维护它自己的属性,比如,每辆车都知道自己当前的油量,但不知道其他车的测量;
与上面汽车类似,一个类的对象也有它的属性,这些属性都是这个对象的一部分;比如,一个学生对象,它有绩点属性,表示他在学校中的成绩,这个属性通常只有他自己知道;

封装
类将属性和成员函数封装(encapsulate)在对象中,一个对象的属性和成员函数都是密切相关的。对象之间可以相互通信(调用对方的成员函数),但是不允许知道其他对象是如何实现的(内部结构不可知)。

继承
我们可以通过继承来快速和方便的创建一个新的类,将原来的类的属性和成员函数吸收为自己的特性,同时可以添加新的特性。

面向对象分析与设计(OOAD)
一个良好的编程习惯应该是在编写代码之前,需要先经历确定项目的需求,并构想什么样的设计可以满足这些需求的分析过程。如果此过程是从面向对象的角度来考虑的,那么就称为面向对象分析和设计(OOAD)。

UML(统一建模语言)
统一建模语言(Unified Modeling Language, UML)是目前使用最广泛的、用于面向对象系统的建模图形语言。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/76883.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

macOS 系统设置息屏情况下,PHP等后台脚本继续执行

在 macOS 系统下,当屏幕息屏或合上盖子时,后台脚本程序是否会继续运行,主要取决于以下几个因素: 1. 系统睡眠状态的影响 默认情况:合盖/息屏后,Mac 会进入「睡眠模式」(部分硬件休眠&#xff…

SpringBoot集成ActiveMQ异常处理机制:若未捕获异常,消息会被重新投递

一、问题描述 SpringBoot项目集成AvtiveMQ,作为消息消费者。如果在消费消息的方法中,抛出异常,会产生什么效果? 二、ActiveMQ异常处理机制(AI问答仅供参考) 在Spring Boot项目集成ActiveMQ作为消息消费者…

【Java学习笔记】random的使用

random使用方法 使用说明&#xff1a;返回的是(0<n<1)这个范围中的任意带正号的double值 代码实例 public class helloworld{public static void main(String[] args){System.out.println(Math.random());} }生成0-100中的任意数代码示例 public class Main {public …

(三)垂直分库架构、分布式数据库

文章目录 垂直分库架构/分布式数据库什么是垂直分库架构架构模型优缺点优点缺点 技术案例分布式数据库架构模型优缺点优点缺点 技术案例 垂直分库架构/分布式数据库 什么是垂直分库架构 根据业务的模块划分&#xff0c; 将不同业务的数据放到不同的数据库中。 比如一个电子商城…

数据结构线性表的顺序存储结构

线性表是由零个或多个数据元素组成的有序序列。 特点&#xff1a; 数据元素间是有顺序的&#xff1b; 数据元素的个数是有限的&#xff1b; 一般来说&#xff0c;数据元素的类型是相同的&#xff08;强类型语言&#xff09;。c/c是强类型语言&#xff0c;必须指定数据类型。…

扣子空间试用:生成五一骑行规划+notion文章编写

今天试用了一下扣子空间&#xff0c;正好五一快到了&#xff0c;让它帮忙做了五一骑行规划&#xff0c;效果不赖&#xff01; 生成五一骑行规划 点击前往网站查看效果 prompt 如下&#xff1a; 帮我做一个五一上海骑行规划 要求&#xff1a; - 风景优美 - 人少 - 100km总路程…

最新得物小程序sign签名加密,请求参数解密,响应数据解密逆向分析

点击精选&#xff0c;出现https://app.dewu.com/api/v1/h5/index/fire/index 这个请求 直接搜索sign的话不容易定位 直接搜newAdvForH5就一个&#xff0c;进去再搜sign&#xff0c;打上断点 可以看到t.params就是没有sign的请求参数&#xff0c; 经过Object(a.default)该函数…

在C#串口通信中,一发一收的场景,如何处理不同功能码的帧数据比较合理,代码结构好

在 C# 串口通信的一发一收场景里&#xff0c;处理不同功能码的帧数据可采用以下合理的代码结构&#xff0c;它能让代码更具可读性、可维护性和可扩展性。 实现思路 定义帧结构&#xff1a;创建一个类来表示通信帧&#xff0c;其中包含功能码、数据等信息。功能码处理逻辑&…

【C++】vector扩容缩容

vector扩容缩容 1 扩容 一般来说&#xff0c;主要是重新分配内存 2 缩容 resize 缩小后&#xff0c;vector 的容量&#xff08;capacity()&#xff09;可能保持不变&#xff0c;需要显式调用 shrink_to_fit() 来释放内存。 验证代码&#xff1a; #include <vector>…

java中,线程的执行状态有哪些

在 Java 里&#xff0c;线程有 6 种执行状态&#xff0c;这些状态都在 java.lang.Thread.State 枚举类中被定义。下面为你详细介绍这些状态&#xff1a; 1. NEW&#xff08;新建状态&#xff09; 当你创建了一个 Thread 对象&#xff0c;却还未调用其 start() 方法时&#xf…

MATLAB 控制系统设计与仿真 - 41

鲁棒控制的其他函数 - 回路成型函数 loopsyn 灵敏度问题由鲁棒控制工具箱中的loopsyn就可以直接求解,该函数采用H无穷回路成型算法设计控制器,函数的调用格式为: [K,CL,gamma,info] = loopsyn(G,Gd) % G为受控对象模型% Gd为期望的回路传递函数% K为回路成型控制器模型% C…

查询Hologres或postgresql中的数据

因Hologres使用postgresql的语法.所以两者查询一样. 方案1: import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.ArrayList; import java.util.List;/*** 一个使用简单连接池管理PostgreSQL连接的工具类。*/ publi…

OpenBayes 一周速览|EasyControl 高效控制 DiT 架构,助力吉卜力风图像一键生成;TripoSG 单图秒变高保真 3D 模型

公共资源速递 10 个教程&#xff1a; * 一键部署 R1-OneVision * UNO&#xff1a;通用定制化图像生成 * TripoSG&#xff1a;单图秒变高保真 3D * 使用 VASP 进行机器学习力场训练 * InfiniteYou 高保真图像生成 Demo * VenusFactory 蛋白质工程设计平台 * Qwen2.5-0mni…

中兴云电脑W102D_晶晨S905X2_2+16G_mt7661无线_安卓9.0_线刷固件包

中兴云电脑W102D_晶晨S905X2_216G_mt7661无线_安卓9.0_线刷固件包 准备工作&#xff1a; 工具和设备在开始刷机之前&#xff0c;确保你已经准备好以下物品&#xff1a;双公头USB线&#xff1a;选择一根30-50厘米长的USB线&#xff0c;长度适中&#xff0c;方便操作&#xff0c;…

Rust 学习笔记:安装 Rust

Rust 学习笔记&#xff1a;安装 Rust Rust 学习笔记&#xff1a;安装 Rust在 Windows 上安装 Rust命令行创建 Rust 项目在 Mac/Linux 上安装 Rust一些命令升级卸载cargo -hrustc -h 安装 RustRoverrust-analyzer Rust 学习笔记&#xff1a;安装 Rust 在 Windows 上安装 Rust …

Opencv图像处理:轮廓检测、轮廓近似、绘制外接圆外接矩形

文章目录 一、图像轮廓检测1、比较2、常见的轮廓检测方法1&#xff09;基于梯度的方法2&#xff09;基于边缘检测器的方法3&#xff09;基于阈值的方法 3、查找轮廓与绘制轮廓4、参数解释4、代码解释1&#xff09;读取原图像灰度图并用二值化显示2&#xff09;轮廓绘制3&#x…

精益数据分析(17/126):精益画布与创业方向抉择

精益数据分析&#xff08;17/126&#xff09;&#xff1a;精益画布与创业方向抉择 大家好&#xff01;一直以来&#xff0c;我都希望能和大家一起在创业和数据分析的领域中不断探索、共同进步。今天&#xff0c;我们接着深入学习《精益数据分析》&#xff0c;这次聚焦于精益画…

每天五分钟深度学习PyTorch:图像的处理的上采样和下采样

本文重点 在pytorch中封装了上采样和下采样的方法,我们可以使用封装好的方法可以很方便的完成采样任务,采样分为上采样和下采样。 上采样和下采样 下采样(缩小图像)的主要目的有两个:1、使得图像符合显示区域的大小;2、生成对应图像的缩略图。 下采样( 放大图像)的…

代码随想录训练营第39天 || 198. 打家劫舍 213. 打家劫舍 II 337. 打家劫舍 III

198. 打家劫舍 思路&#xff1a; 动规五部曲&#xff1a; 1.dp数组及其下标的意义&#xff1a;dp数组表示当前房屋下偷与不偷的最大盗取金额 2.确定递推公式&#xff1a;因为盗取房屋只能间隔盗取&#xff0c;并且还要取最大值。所以每个房屋都有盗取和不盗取两个选择&…

【AI 加持下的 Python 编程实战 2_09】DIY 拓展:从扫雷小游戏开发再探问题分解与 AI 代码调试能力(上)

DIY 拓展&#xff1a;从扫雷小游戏开发再探问题分解与 AI 代码调试能力&#xff08;上&#xff09; 1 起因 最近在看去年刚出了第 2 版《Learn AI-assisted Python Programming》&#xff0c;梳理完 第七章 的知识点后&#xff0c;总感觉这一章的话题很好——问题分解能力的培…