一級實踐講座模板課件_第1頁
一級實踐講座模板課件_第2頁
一級實踐講座模板課件_第3頁
一級實踐講座模板課件_第4頁
一級實踐講座模板課件_第5頁
已閱讀5頁,還剩35頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

一級實踐講座(1)1謝謝觀賞2019-6-9一級實踐講座(1)1謝謝觀賞2019-6-9主要內容關于一級實踐的一些說明C++知識點串講精彩代碼欣賞將時髦的技術掛在嘴邊,不如把過時的技術記在心里2謝謝觀賞2019-6-9主要內容關于一級實踐的一些說明2謝謝觀賞2019-6-9關于一級實踐的一些說明主要目的涉及到的知識點實施的過程練好編程能力的因素C++ismoreimportantthanotherlanguages?3謝謝觀賞2019-6-9關于一級實踐的一些說明主要目的3謝謝觀賞2019-6-9軟件工程的理解軟件的工程來自加拿大安大略的McMaster大學,由大衛(wèi).柏那斯(DavidParnasatMcMasterUniversityinOntario,Canada)提出。以柏氏的觀點,軟體工程師是一種「工程師」,但受過軟體開發(fā)的特別訓練。這類的軟體工程師在學校裡的培養(yǎng)就該包括化學、工程數(shù)學、材料科學、電學、電子學等傳統(tǒng)上工程學院的共同必修科目。當然,他們也要修傳統(tǒng)上資訊科學的重要課程。工程化的軟件來自美國的Rochester技術學院(RochesterInstituteofTechnology,簡稱RIT),與ACM和IEEE電腦團體共同發(fā)展出來,它強調軟體工程師的教育和訓練目標是培養(yǎng)懂得運用工程方法來開發(fā)軟體的人才。這種定義下的軟體工程師在學校裡必須修數(shù)學、軟體結構與組織、軟體需求、程式設計、人因工程等課程,RIT的定義聽起來更像信息科學或管理4謝謝觀賞2019-6-9軟件工程的理解軟件的工程4謝謝觀賞2019-6-9軟件工程師的階層化5謝謝觀賞2019-6-9軟件工程師的階層化5謝謝觀賞2019-6-9軟件工程師的專門化6謝謝觀賞2019-6-9軟件工程師的專門化6謝謝觀賞2019-6-9軟件開發(fā)人員的性格指標麥布二氏行為類型量表,簡稱MBTI(Meyers-BriggsTypeIndicator),按照四種指標,將人分成四類:

外向(Extroversion,E)或內向(Introversion,I)──外向的人天生比較喜歡走向人群和外界的事物,而內向的人比較喜歡待自己的世界裡,擁有自己的想法。感知(Sensing,S)或直覺(Intuition,N)──這項指標是看這個人喜歡接受決策性資料的程度。感知傾向的人較專注在已知的事實、確定的資料和經驗。而直覺傾向的人較喜歡追求不確定的事物,較專注於概念或理論。思考(Thing,T)或感受(Feeling,F)──這項指標是指這個人的決策風格。思考型的人根據客觀的分析和邏輯做出他的決策,而情感型的人則依主觀情緒來做決策。觀察(Perceiving,P)或判斷(Judging,J)──觀察型的人喜歡彈性和未知的各種可能性,而判斷型的人則喜歡一切有秩序,一切能控制。軟件開發(fā)人員平均性格比例最高的是ISTJ型7謝謝觀賞2019-6-9軟件開發(fā)人員的性格指標麥布二氏行為類型量表,簡稱MBTI(M開發(fā)人員的年齡8謝謝觀賞2019-6-9開發(fā)人員的年齡8謝謝觀賞2019-6-9軟件開發(fā)需要的職業(yè)品質在軟體設計期間,是建築師;在設計使用者介面時,是藝術家;在建構程式時,是手藝精巧的工匠;而在測試時,是個不折不扣的混蛋!9謝謝觀賞2019-6-9軟件開發(fā)需要的職業(yè)品質在軟體設計期間,是建築師;9謝謝觀賞2軟件開發(fā)是工程而不是科學通常計算機科學的畢業(yè)生都需要幾年的在職訓練,才能累積足夠的實務知識,獨立地做出真正實用又讓大家滿意的軟體產品。而正規(guī)教育不夠的軟體開發(fā)人員,可能連怎麼在職業(yè)生涯裡培養(yǎng)自己都不知道。10謝謝觀賞2019-6-9軟件開發(fā)是工程而不是科學通常計算機科學的畢業(yè)生都需要幾年的在淘金熱后建立真正的軟件工業(yè)在淘金熱裡,您可能對程式碼輕率隨便,或是技術並不很強,但夠幸運,所以還是找到了黃金。在淘金熱後,您必須以更嚴謹?shù)膽B(tài)度工作、把技術紮實地培養(yǎng)起來,這只是為了繼續(xù)存活。管理學上的流行術語也許會告訴您,曾經實地參與過淘金熱就是一生難得的訓練了,但是發(fā)揮冒險精神和使用有效的軟體開發(fā)方法並不衝突11謝謝觀賞2019-6-9淘金熱后建立真正的軟件工業(yè)在淘金熱裡,您可能對程式碼輕率隨便常見的技術硬件技術平臺技術應用程序框架模式12謝謝觀賞2019-6-9常見的技術硬件技術12謝謝觀賞2019-6-9一級實踐的定位程序規(guī)范平臺及應用框架層13謝謝觀賞2019-6-9一級實踐的定位程序規(guī)范13謝謝觀賞2019-6-9相關的課程先修課程:數(shù)據結構;編譯原理;操作系統(tǒng);補修課程:C;WINDOWS編程;UNIX/LINUX編程;C++及其標準庫訓練課程:程序設計規(guī)范;Socket編程;多進程(線程)編程;典型算法提高課程:驅動程序設計;J2EE平臺;.NET平臺14謝謝觀賞2019-6-9相關的課程先修課程:14謝謝觀賞2019-6-9主要內容及時間安排C++及其內存使用方式,含復習C語言(4周)C++實現(xiàn)常見數(shù)據結構,異質鏈表、異質樹,模擬超市動作過程的仿真程序(2周)C++實現(xiàn)C語言的編譯器(4周)Windows或LINUX/UNIX編程知識(2周)socket編程(2周)綜合設計,實現(xiàn)一個基于多線程服務器的C/S結構的聊天系統(tǒng)。15謝謝觀賞2019-6-9主要內容及時間安排C++及其內存使用方式,含復習C語言(4周課程實施形式專題講座(每個專題3學時,共8~10個專題,根據學生具體情況增加或減少)實踐。同學根據自己情況自行安排,每周不少于10小時,并完成一定量的源代碼編寫工作。對指定的練習項目小組長協(xié)調小組成員共同完成。討論。每5-7人分為1小組,每小組每兩周討論2小時,提交最近兩周的源代碼作業(yè)。討論時主要解決小組各成員實踐過程中碰到的難題,檢查最近兩周的練習進度,并布置下兩周的練習內容。16謝謝觀賞2019-6-9課程實施形式專題講座(每個專題3學時,共8~10個專題,根據考核平時占40%,其中考勤15%,作業(yè)25%。期末筆試占60%。17謝謝觀賞2019-6-9考核平時占40%,其中考勤15%,作業(yè)25%。17謝謝觀賞2C++知識點串講基礎知識18謝謝觀賞2019-6-9C++知識點串講基礎知識18謝謝觀賞2019-6-9基礎知識從源代碼到可執(zhí)行文件編譯從可執(zhí)行文件到進程載入進程的運行過程堆和棧的變化19謝謝觀賞2019-6-9基礎知識從源代碼到可執(zhí)行文件19謝謝觀賞2019-6-9從源代碼到可執(zhí)行文件C++源代碼的組織結構聲明(.h)、定義(.cpp)一個編譯單元[translationunit]是指一個.cpp文件以及它所include的所有.h文件,.h文件里的代碼將會被擴展到包含它的.cpp文件里。每個編譯單元被編譯器編譯為一個.obj文件,格式為PE[PortableExecutable,即windows可執(zhí)行文件]。多個.obj文件由連接器(linker)進行連接成為一個.exe文件。要能運行需要有一個main函數(shù),而有必須有每個聲明的定義20謝謝觀賞2019-6-9從源代碼到可執(zhí)行文件C++源代碼的組織結構20謝謝觀賞201可執(zhí)行文件的結構BlockStartedbySymbol21謝謝觀賞2019-6-9可執(zhí)行文件的結構BlockStartedbySymboWindows的進程代碼區(qū)靜態(tài)數(shù)據區(qū)(已編譯好)動態(tài)數(shù)據區(qū)(堆和棧)22謝謝觀賞2019-6-9Windows的進程代碼區(qū)22謝謝觀賞2019-6-9windows進程的結構├———————┤低端內存區(qū)域│……│├———————┤│動態(tài)數(shù)據區(qū)│├———————┤│……│├———————┤│代碼區(qū)│├———————┤│靜態(tài)數(shù)據區(qū)│├———————┤│……│├———————┤高端內存區(qū)域23謝謝觀賞2019-6-9windows進程的結構├———————┤低端內存區(qū)域23變量存儲區(qū)舉例#include<stdio.h>//例子zonesintg1=0,g2=0;intmain(){staticints1=0,s2=0;intv1=0,v2=0;printf("0x%08x\n",&v1);//打印各本地變量的內存地址printf("0x%08x\n",&v2);printf("0x%08x\n",&g1);//打印各全局變量的內存地址printf("0x%08x\n",&g2);printf("0x%08x\n",&s1);//打印各靜態(tài)變量的內存地址printf("0x%08x\n",&s2);return0;}24謝謝觀賞2019-6-9變量存儲區(qū)舉例#include<stdio.h>//例子堆和棧堆(動態(tài)申請)當進程初始化時,系統(tǒng)會自動為進程創(chuàng)建一個默認堆,這個堆默認所占內存的大小為1M。堆對象由系統(tǒng)進行管理,它在內存中以鏈式結構存在。堆棧有一組CPU指令可以實現(xiàn)對進程內存的堆棧式訪問。其中,POP指令實現(xiàn)出棧操作,PUSH指令實現(xiàn)入棧操作。CPU的ESP寄存器存放當前線程的棧頂指針,EBP寄存器中保存當前線程的棧底指針。25謝謝觀賞2019-6-9堆和棧堆(動態(tài)申請)25謝謝觀賞2019-6-9函數(shù)調用過程中堆棧的作用不同的語言有不同的函數(shù)調用規(guī)定,這些因素有參數(shù)的壓入規(guī)則和堆棧的平衡。windowsAPI的調用規(guī)則__stdcall前綴。參數(shù)從左到右入棧;棧由被調用者恢復;ANSIC的函數(shù)調用規(guī)則__cdecl前綴參數(shù)從右到左入棧;棧由調用者恢復;26謝謝觀賞2019-6-9函數(shù)調用過程中堆棧的作用不同的語言有不同的函數(shù)調用規(guī)定,這些舉例printf(“Thereare%ddogsand%dcats.\n”,m,n);“__stdcall”函數(shù)├———————┤<—函數(shù)執(zhí)行時的棧頂(ESP)、低端內存區(qū)域│……││parameter1│├———————┤│parameter2│├———————┤│parameter3││……│├———————┤<—棧底(基地址EBP)、高端內存區(qū)域27謝謝觀賞2019-6-9舉例printf(“Thereare%ddogsan指針與數(shù)組數(shù)組名相當于一個不可改變的指針#include<iostream.h>//例子pointervoidf(intn[]){ inti=sizeof(n); n++; cout<<"Thesizeofnis:"<<sizeof(n)<<endl;}intmain(intargc,char*argv[]){ intm[5]={1,3,5,6,7}; int*p=m; int*q=NULL; int*qq; ++p; f(p);

cout<<"mis:"<<p[0]<<endl; cout<<"Theaddressofqis:"<<&q<<endl; cout<<"Thecontentofqis:"<<(long)q<<endl;// cout<<"Thevalueofqis:"<<*q<<endl; cout<<"Theaddressofqqis:"<<&qq<<endl; return0;}28謝謝觀賞2019-6-9指針與數(shù)組數(shù)組名相當于一個不可改變的指針28謝謝觀賞2019引用引用相當于別名,在聲明引用時變量名前加&

inti,j;int&ri=i;引用變量在聲明時一定要賦初值,這是因為引用的本質并不是引入一個新的變量,而是給已經存在的變量起一個別的名字。這也正是C++中,一個內存對象可以有多個名字的原因。引用一旦聲明,就不能用它再引用別的變量。對引用的訪問就是對它所引用的對象的訪問。29謝謝觀賞2019-6-9引用引用相當于別名,在聲明引用時變量名前加&29謝謝觀賞20傳值與傳址int*fn(intn);int*fn(int&n);30謝謝觀賞2019-6-9傳值與傳址int*fn(intn);30謝謝觀賞2019字符串常量舉例#include“stdafx.h“//例子string#include<iostream.h>char*aa="abcde";voidfn(){ char*cc="acbcde"; intn=2; cout<<"ccis:"<<(long)cc<<endl; cout<<"nis:"<<(long)&n<<endl;}intmain(intargc,char*argv[]){ char*bb="abcde"; cout<<"Theglobaladdris:"<<(long)aa<<endl; cout<<"Thelocaleaddris:"<<(long)bb<<endl; fn(); return0;}31謝謝觀賞2019-6-9字符串常量舉例#include“stdafx.h“//例子malloc/free與new/delete的異同malloc/free是C++/C語言的標準庫函數(shù),new/delete是C++的運算符。它們都可用于申請動態(tài)內存和釋放內存。使用new較之使用malloc()有以下的幾個優(yōu)點:(1)new自動計算要分配類型的大小,不使用sizeof運算符,比較省事,可以避免錯誤。(2)自動地返回正確的指針類型,不用進行強制指針類型轉換。(3)可以用new對分配的對象進行初始化。32謝謝觀賞2019-6-9malloc/free與new/delete的異同malloC++類封裝的實現(xiàn)C++的面向對象特性是通過編譯器實現(xiàn)的,因此學習C++需要學習一些它的編譯原理,所以說C++是一種“難學易用”的語言C++的訪問控制(private,protected,public)是有編譯時完成權限檢查的。編譯完成后靜態(tài)成員存儲到靜態(tài)數(shù)據區(qū)其他數(shù)據成員存儲在對象所在的動態(tài)數(shù)據區(qū)成員函數(shù)存儲在代碼區(qū)。編譯器將對象的指針this作為成員函數(shù)的第一個參數(shù)。33謝謝觀賞2019-6-9C++類封裝的實現(xiàn)C++的面向對象特性是通過編譯器實現(xiàn)的,因舉例(class)#include<iostream>#include<stdlib.h>usingnamespacestd;classA{public:A(){n=5;}voidadd(){cout<<"Theaddofnis:"<<&n<<endl;cout<<"Theaddofmis:"<<&m<<endl;}private:staticintm;intn;};intA::m=15;intmain(intargc,char*argv[]){Aa;a.add();system("PAUSE"); return0;}34謝謝觀賞2019-6-9舉例(class)#include<iostre

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論