C++程序設計教程學習(1)-第一部分 編程基礎

第一章 概述

C++到底難不難學?沒有學不會的事情

1.1 程序設計語言

語言

編程語言 人和計算機交流的工具,群體擴大,人人間交流過程描述與信息表達的工具

機器語言,匯編語言,高級語言

1.2 C++簡史

1.3 C++

  1. 褒貶C
    計算機應用范圍的擴大和編程規模的擴大,可維護性、可擴展性、安全性要求。提出程序設計語言應該具有數據類型的擴充能力,基于數據類型和面向數據類型的編程語言不斷出現。以程序員自己定義或設計數據類型的方式將復雜結構的數據進行系統的組織,統一的管理,以使程序組織合理,算法設計簡單易懂。
  2. C繼承者
    C++既可以進行過程化編程,又可以進行以抽象數據類型為特點的基于對象的程序設計,還可以進行以繼承和多態為特點的面向對象的程序設計,并正在完善以模板為特點的泛型程序設計。 C++是一種混合型程序設計語言,可以采用程序設計方法,進行各種目的之編程。不放棄高效運行的實用性特征,而又致力于提高大規模程序的編程質量,提高程序設計語言的問題描述能力。
  3. 標準C++
    標準C++與程序員更緊密的關系是系統的可移植性,采用標準C++編程可在不同的標準C++編譯器上得到在不同計算機系統中運行出同樣結果的機器程序。程序員可利用標準庫。標準C++工具:windows:C++ Bulider6.0以上,VisualC++.NET以上,Linux:G++3.0 、Borland C++ Kylix3.0及以上

1.4 C++編程流程

  1. 編程過程
    編程語言分為解釋型和編譯型,解釋型沒有編譯和連接的中間環節,方便執行但無法離開解釋器現場,需要不斷交互所以性能低。C++編程過程,編輯、編譯、鏈接、調試
  2. 最小樣板程序
  3. 編程風格

1.5 程序與算法

  1. 程序
    不同主體或不同狀態性能有差異,追求的是各個抽象層次的編程,追求編程方法的實效性。這意味這“學會計算機語言,看得懂語法,了解了語言的描述方法”,還是不夠的,它和熟練運用計算機語言,能用語言高效、正確地描述問題、解決問題是有天壤之別的。
  2. 算法

    程序的動作序列包含了對數據的存儲訪問和算術運算。對數據的合理描述、組織、存放和讀取,關系到程序運行的和高效。

    1. 目的性:算法是有求節目的之動作序列,必須有運算結果

    2. 抽象性:算法離不開數據結構,比具體的程序設計更超脫,抽象層次更高一些,不在乎實現語言

    3. 研究性:描述算法的目的是溝通人們的是想,而不是實現,通過語言實現的程序來驗證算法其資源占用與性能各項指標

  3. 編程與結構(Programming & Structures)

    編程強調全方位,具體問題請具體分析,編程當然是為了解決計算問題,計算問題強調算法,程序設計也就是在一定的抽象層次上的算法計算。這里的抽象層次理解為數據的描述方式。大量數據處理,編程問題含有大量縱橫交錯的數據時,意識到數據組織和數據結構的重要性,數據存在的形式必須脫離程序。程序=算法+數據結構。編程中數據結構的描述應相對算法而獨立。針對算法事實上與數據相分離,如果數據由數據結構來描述,算法就可以以數據結構為依托,通過數據結構來訪問數據,從而簡化算法和提高邏輯清晰性。

    1. 從動態性上說:程序仍然是計算機中的過程運行體,即操作系統中的的進程。

    2. 從靜態性上說:程序不再是單純的過程體(操作序列)了,不再是單純的算法了,而是算法和數據結構的有機組織。程序含有更多的數據組織描述,而數據組織描述又包含有一系列的操作。

    程序所反映的操作序列依賴于抽象層次更高的數據結構,而不是直接對應于單純空間上的原始數據。觀念上程序發生了變化,帶來了設計方法的進化,改變了程序的靜態描述形式,動態與靜態不再對應了,計算機運行的進程與人工編程的邏輯開始分離,從單純直譯進入到對程序結構的復雜分析與理解。

1.6過程化程序設計

  1. 基于過程的程序設計(Procedural-Based Programming)
    從程序設計的角度來說,程序的概念是組織成一定形式的操作序列。過程結構中問題模型反應為過程結構模型,實際上就是功能模型。描述算法時一般總是分層次描述的,過程化設計以一系列過程的劃分和組織來觀察、分析和解決問題。
  2. 結構化程序設計(Structured Programing)
    學習程序設計方法的根本是要解決如何組織程序的問題,也即解決算法與數據的關系問題。
    1. 描述任何實體的操作序列只需要三種基本控制結構:順序,選擇,循環
    2. 程序設計中的各個過程體和組成部分應以模塊表示:每個模塊其內聚性越強,外鏈性越少,則模塊獨立性越好。
    3. 過程化的程序設計方法:程序設計采用從上到下,逐步細分的方法展開,即過程化程序設計方法

1.7對象化程序設計

  1. 基于對象的的程序設計(Object-Based Programing)
    抽象數據模型就是想要描述這一共同規范,它描述數據的組織和相關的操作,反映了問題的抽象模型。數據類型的本質是數據組織和其操作的捆綁性。程序=算法+抽象數據類型。對象是程序中抽象數據類型的具體表現。算法是基于抽象數據類型的,是作用在抽象數據類型實體化的過程中的行為序列。程序的行為表現為分層的過程結構與對象定義的集合。
  2. 面向對象的程序設計
    類的層次關系也帶來了對象的層次關系,它反映了同種操作的異類行為。要能準確地反應分層之后的對象集合中每個對象行為的個性,這種屬性稱為對象操作的多態性。程序的運行是通過抽象數據類型來表現和溝通,而抽象數據類型最后還是以對象來實例化的。

1.8目的歸納

轉載于:https://www.cnblogs.com/zhuqn/p/4040333.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/258093.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258093.shtml
英文地址,請注明出處:http://en.pswp.cn/news/258093.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《Programming WPF》翻譯 第9章 6.我們進行到哪里了?

《Programming WPF》翻譯 第9章 6.我們進行到哪里了? 原文:《Programming WPF》翻譯 第9章 6.我們進行到哪里了?只有當任何內嵌控件都沒有提供你需要的底層行為時,你將要寫一個自定義控件。當你寫一個自定義控件,你將要使用到依賴…

php實現上傳,PHP實現文件上傳例子

實例1:上載文件表單網頁:updatefile.htm上載文件表單請選取文件:[CtrlA 全部選擇 然后拷貝]處理上載文件網頁:updatefile.php3處理上載文件copy($userfile, "newfilename");echo $userfile." - 用戶上傳到服務器上的文件臨時存…

浙企加入中國大數據產業生態聯盟 共商數據價值

基于大數據時代的考量,在工業和信息化部指導下,8月2日,中國電子信息產業發展研究院聯合大數據產業鏈各環節企業及第三方產業機構自愿組成非營利社會組織——中國大數據產業生態聯盟。浙江企業元寶鋪受邀成為聯盟理事成員單位。 大會現場&…

hdu 4442 Physical Examination (2012年金華賽區現場賽A題)

昨天模擬賽的時候坑了好久,剛開始感覺是dp,仔細一看數據范圍太大。 題目大意:一個人要參加考試,一共有n個科目,每個科目都有一個相應的隊列,完成這門科目的總時間為ab*(前面已完成科目所花的總時…

xsd學習教程

http://www.w3school.com.cn/schema/轉載于:https://www.cnblogs.com/eric-lin/p/4969269.html

php 賦值 遞增,PHP 基礎(賦值及函數)

開端<?php>結尾弱類型語言 定義變量的時候 不需要 聲明 但是 每一個變量前 都必須 加$ 符號儲存文件按 統一放到 安裝文件夾下面的 WAMP 下面 的WWW 文件內部 (與創的站點統一即可) 該文件下面不能出現中文注釋語法&#xff1a; 單行注釋&#xff1a;…

maven project創建填充項

GroupID是項目組織唯一的標識符&#xff0c;實際對應JAVA的包的結構&#xff0c;是main目錄里java的目錄結構。ArtifactID就是項目的唯一的標識符&#xff0c;實際對應項目的名稱&#xff0c;就是項目根目錄的名稱。一般GroupID就是填com.leafive.test這樣子。轉載于:https://w…

【循序漸進學Python】14.數據庫的支持

純文本只能夠實現一些簡單有限的功能。如果想要實現自動序列化&#xff0c;也可以使用 shelve 模塊和 pickle 模塊來實現。但是&#xff0c;如果想要自動的實現數據并發訪問&#xff0c;以及更標準&#xff0c;更通用的數據庫(database)存儲方式還是使用數據庫。 1. Python 數據…

Foundation框架

1.框架是由許多類、方法、函數、文檔按照一定的邏輯組織起來的集合&#xff0c;以便使研發程序變的更容易 清除緩存&#xff0c;刪除這個文件夾下的所有文件/Users/fanyafang/Library/Developer/Xcode/DerivedData 顯示隱藏文件&#xff1a;defaults write com.apple.finder Ap…

ubuntu上搭建php,ubuntu10.04上搭建php網站運行環境

ubuntu 10.04下搭建php網站運行環境ubuntu 10.04下搭建php網站運行環境前提&#xff1a;要打開root權限sudo password [這里填寫root密碼]1、第一步安裝ubuntu10.042、更新源sudo apt-get update3、安裝lighttpdsudo apt-get install lighttpd安裝好之后檢查lighttpd是否成功啟…

Windows 10 Threshold 2 升級記錄

昨天&#xff08;11月17日&#xff09;升級到Windows 10 Threshold 2版本。我的使用的設備是Surface Pro 3&#xff0c;4G內存&#xff0c;128G硬盤。 Threshold 2是作為一個Windows系統更新推送的。如果沒有收到系統更新提示&#xff0c;在系統設置里面手動檢查一下更新就可以…

轉換php script類型,javascript如何實現值的類型轉換

本篇文章給大家介紹使用javascript進行值的類型轉換的方法&#xff0c;有一定的參考價值&#xff0c;有需要的朋友可以參考一下&#xff0c;希望對你們有所幫助。JavaScript是松散類型的語言&#xff0c;大多數情況下&#xff0c;運算符和函數會自動將值轉換為正確的類型(隱式轉…

iOS屏幕適配方案-Auto Layout

市場上的android手機五花八門。各種尺寸的屏幕讓android程序員們比較頭疼。也有一些大神寫了一些博客提出了自己的觀點。iOS貌似也迎來了大屏6&#xff0b;&#xff0c;因此屏幕適配的問題也是有滴&#xff0c;因此蘋果也有自己的方法&#xff0d;auto Layout 。本人初學iOS。今…

Exercise 12: Prompting People

age raw_input("How old are you? ") height raw_input("How tall are you? ") weight raw_input("How much do you weigh? ") print "So, youre %r old, %r tall and %r heavy." % ( age, height, weight) 轉載于:https://www.…

一年一循環

一年了&#xff0c;沒怎么關注博客園&#xff0c;回來看看。 希望自己今后多學多記錄多分享。轉載于:https://www.cnblogs.com/Chinarain/p/4974904.html

JAVA三角海倫公式,海倫公式求三角形面積出錯求教

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓就下面這個程序 輸入其他的數字都可以算出面積 但是當輸入3,4,6時 計算出面積為零 求吧友指出錯誤在哪package javaapplication17;import java.util.Scanner;public class JavaApplication17 {public static void main(String[] ar…

虛擬機里面安裝Openfiler 2.99

2019獨角獸企業重金招聘Python工程師標準>>> 簡介 Openfiler 由rPath Linux驅動&#xff0c;它是一個基于瀏覽器的免費網絡存儲管理實用程序&#xff0c;可以在單一框架中提供基于文件的網絡連接存儲 (NAS) 和基于塊的存儲區域網 (SAN)。Openfiler 支持 CIFS、NFS、…

win10如何搭建php,Win10系統怎么搭建php環境 win10搭建PHP環境方法

Win10系統怎么搭建php環境&#xff1f;win10搭建PHP環境方法。在今天的Win10系統使用教程中&#xff0c;我們將給大家分享的是在Win10系統下搭建Apache和PHP的開發環境的方法。可能有網友會問&#xff1a;Win10系統搭載Apache和PHP的開發環境的方法是不是與Win7/Win8.1的差不多…

關于jmf不能播放mp3的問題解決

想寫個JAVA的MP3音樂管理器&#xff0c;使用JMF插件&#xff0c;但發現運行時總報一個異常&#xff1a;Unable to handle format: mpeglayer3, 44100.0 Hz, 16-bit, Stereo, LittleEndian, Signed, 16000.0 frame rate, FrameSize32768 bitsFailed to realize: com.sun.media.P…