一级实践讲座模板课件.pptx

上传人:牧羊曲112 文档编号:3875057 上传时间:2023-03-26 格式:PPTX 页数:40 大小:335.09KB
返回 下载 相关 举报
一级实践讲座模板课件.pptx_第1页
第1页 / 共40页
一级实践讲座模板课件.pptx_第2页
第2页 / 共40页
一级实践讲座模板课件.pptx_第3页
第3页 / 共40页
一级实践讲座模板课件.pptx_第4页
第4页 / 共40页
一级实践讲座模板课件.pptx_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《一级实践讲座模板课件.pptx》由会员分享,可在线阅读,更多相关《一级实践讲座模板课件.pptx(40页珍藏版)》请在三一办公上搜索。

1、一级实践讲座(1),1,谢谢观赏,2019-6-9,主要内容,关于一级实践的一些说明C+知识点串讲精彩代码欣赏将时髦的技术挂在嘴边,不如把过时的技术记在心里,2,谢谢观赏,2019-6-9,关于一级实践的一些说明,主要目的涉及到的知识点实施的过程练好编程能力的因素C+is more important than other languages?,3,谢谢观赏,2019-6-9,软件工程的理解,软件的工程來自加拿大安大略的McMaster大學,由大衛柏那斯(David Parnas at McMaster University in Ontario,Canada)提出。以柏氏的觀點,軟體工程師是

2、一種工程師,但受過軟體開發的特別訓練。這類的軟體工程師在學校裡的培養就該包括化學、工程數學、材料科學、電學、電子學等傳統上工程學院的共同必修科目。當然,他們也要修傳統上資訊科學的重要課程。工程化的软件來自美國的Rochester技術學院(Rochester Institute of Technology,簡稱RIT),與ACM和IEEE電腦團體共同發展出來,它強調軟體工程師的教育和訓練目標是培養懂得運用工程方法來開發軟體的人才。這種定義下的軟體工程師在學校裡必須修數學、軟體結構與組織、軟體需求、程式設計、人因工程等課程,RIT的定义听起来更像信息科学或管理,4,谢谢观赏,2019-6-9,软件

3、工程师的阶层化,5,谢谢观赏,2019-6-9,软件工程师的专门化,6,谢谢观赏,2019-6-9,软件开发人员的性格指标,麦布二氏行為类型量表,简称MBTI(Meyers-Briggs Type Indicator),按照四种指标,将人分成四类:外向(Extroversion,)或內向(Introversion,)外向的人天生比較喜歡走向人群和外界的事物,而內向的人比較喜歡待自己的世界裡,擁有自己的想法。感知(Sensing,)或直覺(Intuition,)這項指標是看這個人喜歡接受決策性資料的程度。感知傾向的人較專注在已知的事實、確定的資料和經驗。而直覺傾向的人較喜歡追求不確定的事物,較專

4、注於概念或理論。思考(Thing,)或感受(Feeling,)這項指標是指這個人的決策風格。思考型的人根據客觀的分析和邏輯做出他的決策,而情感型的人則依主觀情緒來做決策。觀察(Perceiving,)或判斷(Judging,)觀察型的人喜歡彈性和未知的各種可能性,而判斷型的人則喜歡一切有秩序,一切能控制。软件开发人员平均性格比例最高的是ISTJ型,7,谢谢观赏,2019-6-9,开发人员的年龄,8,谢谢观赏,2019-6-9,软件开发需要的职业品质,在軟體設計期間,是建築師;在設計使用者介面時,是藝術家;在建構程式時,是手藝精巧的工匠;而在測試時,是個不折不扣的混蛋!,9,谢谢观赏,2019-

5、6-9,软件开发是工程而不是科学,通常計算機科學的畢業生都需要幾年的在職訓練,才能累積足夠的實務知識,獨立地做出真正實用又讓大家滿意的軟體產品。而正規教育不夠的軟體開發人員,可能連怎麼在職業生涯裡培養自己都不知道。,10,谢谢观赏,2019-6-9,淘金热后建立真正的软件工业,在淘金熱裡,您可能對程式碼輕率隨便,或是技術並不很強,但夠幸運,所以還是找到了黃金。在淘金熱後,您必須以更嚴謹的態度工作、把技術紮實地培養起來,這只是為了繼續存活。管理學上的流行術語也許會告訴您,曾經實地參與過淘金熱就是一生難得的訓練了,但是發揮冒險精神和使用有效的軟體開發方法並不衝突,11,谢谢观赏,2019-6-9,

6、常见的技术,硬件技术平台技术应用程序框架模式,12,谢谢观赏,2019-6-9,一级实践的定位,程序规范平台及应用框架层,13,谢谢观赏,2019-6-9,相关的课程,先修课程:数据结构;编译原理;操作系统;补修课程:C;WINDOWS编程;UNIX/LINUX编程;C+及其标准库训练课程:程序设计规范;Socket编程;多进程(线程)编程;典型算法提高课程:驱动程序设计;J2EE平台;.NET平台,14,谢谢观赏,2019-6-9,主要内容及时间安排,C+及其内存使用方式,含复习C语言(4周)C+实现常见数据结构,异质链表、异质树,模拟超市动作过程的仿真程序(2周)C+实现C语言的编译器(4

7、周)Windows或LINUX/UNIX编程知识(2周)socket编程(2周)综合设计,实现一个基于多线程服务器的C/S结构的聊天系统。,15,谢谢观赏,2019-6-9,课程实施形式,专题讲座(每个专题3学时,共810个专题,根据学生具体情况增加或减少)实践。同学根据自己情况自行安排,每周不少于10小时,并完成一定量的源代码编写工作。对指定的练习项目小组长协调小组成员共同完成。讨论。每5-7人分为1小组,每小组每两周讨论2小时,提交最近两周的源代码作业。讨论时主要解决小组各成员实践过程中碰到的难题,检查最近两周的练习进度,并布置下两周的练习内容。,16,谢谢观赏,2019-6-9,考核,平

8、时占40%,其中考勤15%,作业25%。期末笔试占60%。,17,谢谢观赏,2019-6-9,C+知识点串讲,基础知识,18,谢谢观赏,2019-6-9,基础知识,从源代码到可执行文件编译从可执行文件到进程载入进程的运行过程堆和栈的变化,19,谢谢观赏,2019-6-9,从源代码到可执行文件,C+源代码的组织结构声明(.h)、定义(.cpp)一个编译单元translation unit是指一个.cpp文件以及它所include的所有.h文件,.h文件里的代码将会被扩展到包含它的.cpp文件里。每个编译单元被编译器编译为一个.obj文件,格式为PEPortable Executable,即win

9、dows可执行文件。多个.obj文件由连接器(linker)进行连接成为一个.exe文件。要能运行需要有一个main函数,而有必须有每个声明的定义,20,谢谢观赏,2019-6-9,可执行文件的结构,Block Started by Symbol,21,谢谢观赏,2019-6-9,Windows的进程,代码区静态数据区(已编译好)动态数据区(堆和栈),22,谢谢观赏,2019-6-9,windows进程的结构,低端内存区域 动态数据区 代码区 静态数据区 高端内存区域,23,谢谢观赏,2019-6-9,变量存储区举例,#include/例子zonesint g1=0,g2=0;int main

10、()static int s1=0,s2=0;int v1=0,v2=0;printf(0 x%08xn,24,谢谢观赏,2019-6-9,堆和栈,堆(动态申请)当进程初始化时,系统会自动为进程创建一个默认堆,这个堆默认所占内存的大小为1M。堆对象由系统进行管理,它在内存中以链式结构存在。堆栈有一组CPU指令可以实现对进程内存的堆栈式访问。其中,POP指令实现出栈操作,PUSH指令实现入栈操作。CPU的ESP寄存器存放当前线程的栈顶指针,EBP寄存器中保存当前线程的栈底指针。,25,谢谢观赏,2019-6-9,函数调用过程中堆栈的作用,不同的语言有不同的函数调用规定,这些因素有参数的压入规则和

11、堆栈的平衡。windows API的调用规则_stdcall前缀。参数从左到右入栈;栈由被调用者恢复;ANSI C的函数调用规则_cdecl前缀参数从右到左入栈;栈由调用者恢复;,26,谢谢观赏,2019-6-9,举例,printf(“There are%d dogs and%d cats.n”,m,n);“_stdcall”函数函数执行时的栈顶(ESP)、低端内存区域 parameter 1 parameter 2 parameter 3 栈底(基地址 EBP)、高端内存区域,27,谢谢观赏,2019-6-9,指针与数组,数组名相当于一个不可改变的指针#include/例子pointervo

12、id f(int n)int i=sizeof(n);n+;cout The size of n is:sizeof(n)endl;int main(int argc,char*argv)int m5=1,3,5,6,7;int*p=m;int*q=NULL;int*qq;+p;f(p);cout m is:p0endl;cout The address of q is:,28,谢谢观赏,2019-6-9,引用,引用相当于别名,在声明引用时变量名前加引用变量在声明时一定要赋初值,这是因为引用的本质并不是引入一个新的变量,而是给已经存在的变量起一个别的名字。这也正是C+中,一个内存对象可以有多个

13、名字的原因。引用一旦声明,就不能用它再引用别的变量。对引用的访问就是对它所引用的对象的访问。,29,谢谢观赏,2019-6-9,传值与传址,int*fn(int n);int*fn(int,30,谢谢观赏,2019-6-9,字符串常量举例,#include“stdafx.h“/例子string#include char*aa=abcde;void fn()char*cc=acbcde;int n=2;coutcc is:(long)ccendl;coutn is:(long),31,谢谢观赏,2019-6-9,malloc/free与new/delete的异同,malloc/free是C+/C

14、语言的标准库函数,new/delete是C+的运算符。它们都可用于申请动态内存和释放内存。使用new较之使用malloc()有以下的几个优点:(1)new自动计算要分配类型的大小,不使用sizeof运算符,比较省事,可以避免错误。(2)自动地返回正确的指针类型,不用进行强制指针类型转换。(3)可以用new对分配的对象进行初始化。,32,谢谢观赏,2019-6-9,C+类封装的实现,C+的面向对象特性是通过编译器实现的,因此学习C+需要学习一些它的编译原理,所以说C+是一种“难学易用”的语言C+的访问控制(private,protected,public)是有编译时完成权限检查的。编译完成后静态

15、成员存储到静态数据区其他数据成员存储在对象所在的动态数据区成员函数存储在代码区。编译器将对象的指针this作为成员函数的第一个参数。,33,谢谢观赏,2019-6-9,举例(class),#include#include using namespace std;class Apublic:A()n=5;void add()cout The add of n is:,34,谢谢观赏,2019-6-9,构造函数的调用顺序,示意性定义为:class A;class B;class C;class D:public B,public A;class E:public C;class F:public

16、D,public E;构造函数的调用次序为:A、B、D、C、E、F,F,F,D,E,D,A,B,A,B,E,C,C,35,谢谢观赏,2019-6-9,this指针,指向本对象开始的指针;如果没有多继承,则this指针可以视为32位指针因为多继承的存在,this指针所指的最顶层父对象可能不惟一,所以有时可能需要附加偏移量。因此大小不一定为32位。例子this演示,36,谢谢观赏,2019-6-9,继承,C+的派生类对象实际上是一个基类对象和一个派生类对象的组合。虚拟继承是为了解决多继承中父父类对象的二义性问题。,37,谢谢观赏,2019-6-9,多态性,多态性和泛型算法是C+的核心多态性实际上就体现在虚函数上。虚函数采用动态(滞后)联编的方式。vptr,vtbl(见例子)vptr属于对象vtbl属于类,38,谢谢观赏,2019-6-9,代码分析,问题在哪里?(node代码),39,谢谢观赏,2019-6-9,40,谢谢观赏,2019-6-9,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号