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.pswp.cn/web/76883.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/76883.shtml
英文地址,請注明出處:http://en.pswp.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;總感覺這一章的話題很好——問題分解能力的培…