一级实践讲座模板课件_第1页
一级实践讲座模板课件_第2页
一级实践讲座模板课件_第3页
一级实践讲座模板课件_第4页
一级实践讲座模板课件_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一级实践讲座(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大學,由大衛.柏那斯(DavidParnasatMcMasterUniversityinOntario,Canada)提出。以柏氏的觀點,軟體工程師是一種「工程師」,但受過軟體開發的特別訓練。這類的軟體工程師在學校裡的培養就該包括化學、工程數學、材料科學、電學、電子學等傳統上工程學院的共同必修科目。當然,他們也要修傳統上資訊科學的重要課程。工程化的软件來自美國的Rochester技術學院(RochesterInstituteofTechnology,簡稱RIT),與ACM和IEEE電腦團體共同發展出來,它強調軟體工程師的教育和訓練目標是培養懂得運用工程方法來開發軟體的人才。這種定義下的軟體工程師在學校裡必須修數學、軟體結構與組織、軟體需求、程式設計、人因工程等課程,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软件开发人员的性格指标麦布二氏行為类型量表,简称MBTI(Meyers-BriggsTypeIndicator),按照四种指标,将人分成四类:

外向(Extroversion,E)或內向(Introversion,I)──外向的人天生比較喜歡走向人群和外界的事物,而內向的人比較喜歡待自己的世界裡,擁有自己的想法。感知(Sensing,S)或直覺(Intuition,N)──這項指標是看這個人喜歡接受決策性資料的程度。感知傾向的人較專注在已知的事實、確定的資料和經驗。而直覺傾向的人較喜歡追求不確定的事物,較專注於概念或理論。思考(Thing,T)或感受(Feeling,F)──這項指標是指這個人的決策風格。思考型的人根據客觀的分析和邏輯做出他的決策,而情感型的人則依主觀情緒來做決策。觀察(Perceiving,P)或判斷(Judging,J)──觀察型的人喜歡彈性和未知的各種可能性,而判斷型的人則喜歡一切有秩序,一切能控制。软件开发人员平均性格比例最高的是ISTJ型7谢谢观赏2019-6-9软件开发人员的性格指标麦布二氏行為类型量表,简称MBTI(M开发人员的年龄8谢谢观赏2019-6-9开发人员的年龄8谢谢观赏2019-6-9软件开发需要的职业品质在軟體設計期間,是建築師;在設計使用者介面時,是藝術家;在建構程式時,是手藝精巧的工匠;而在測試時,是個不折不扣的混蛋!9谢谢观赏2019-6-9软件开发需要的职业品质在軟體設計期間,是建築師;9谢谢观赏2软件开发是工程而不是科学通常計算機科學的畢業生都需要幾年的在職訓練,才能累積足夠的實務知識,獨立地做出真正實用又讓大家滿意的軟體產品。而正規教育不夠的軟體開發人員,可能連怎麼在職業生涯裡培養自己都不知道。10谢谢观赏2019-6-9软件开发是工程而不是科学通常計算機科學的畢業生都需要幾年的在淘金热后建立真正的软件工业在淘金熱裡,您可能對程式碼輕率隨便,或是技術並不很強,但夠幸運,所以還是找到了黃金。在淘金熱後,您必須以更嚴謹的態度工作、把技術紮實地培養起來,這只是為了繼續存活。管理學上的流行術語也許會告訴您,曾經實地參與過淘金熱就是一生難得的訓練了,但是發揮冒險精神和使用有效的軟體開發方法並不衝突11谢谢观赏2019-6-9淘金热后建立真正的软件工业在淘金熱裡,您可能對程式碼輕率隨便常见的技术硬件技术平台技术应用程序框架模式12谢谢观赏2019-6-9常见的技术硬件技术12谢谢观赏2019-6-9一级实践的定位程序规范平台及应用框架层13谢谢观赏2019-6-9一级实践的定位程序规范13谢谢观赏2019-6-9相关的课程先修课程:数据结构;编译原理;操作系统;补修课程:C;WINDOWS编程;UNIX/LINUX编程;C++及其标准库训练课程:程序设计规范;Socket编程;多进程(线程)编程;典型算法提高课程:驱动程序设计;J2EE平台;.NET平台14谢谢观赏2019-6-9相关的课程先修课程:14谢谢观赏2019-6-9主要内容及时间安排C++及其内存使用方式,含复习C语言(4周)C++实现常见数据结构,异质链表、异质树,模拟超市动作过程的仿真程序(2周)C++实现C语言的编译器(4周)Windows或LINUX/UNIX编程知识(2周)socket编程(2周)综合设计,实现一个基于多线程服务器的C/S结构的聊天系统。15谢谢观赏2019-6-9主要内容及时间安排C++及其内存使用方式,含复习C语言(4周课程实施形式专题讲座(每个专题3学时,共8~10个专题,根据学生具体情况增加或减少)实践。同学根据自己情况自行安排,每周不少于10小时,并完成一定量的源代码编写工作。对指定的练习项目小组长协调小组成员共同完成。讨论。每5-7人分为1小组,每小组每两周讨论2小时,提交最近两周的源代码作业。讨论时主要解决小组各成员实践过程中碰到的难题,检查最近两周的练习进度,并布置下两周的练习内容。16谢谢观赏2019-6-9课程实施形式专题讲座(每个专题3学时,共8~10个专题,根据考核平时占40%,其中考勤15%,作业25%。期末笔试占60%。17谢谢观赏2019-6-9考核平时占40%,其中考勤15%,作业25%。17谢谢观赏2C++知识点串讲基础知识18谢谢观赏2019-6-9C++知识点串讲基础知识18谢谢观赏2019-6-9基础知识从源代码到可执行文件编译从可执行文件到进程载入进程的运行过程堆和栈的变化19谢谢观赏2019-6-9基础知识从源代码到可执行文件19谢谢观赏2019-6-9从源代码到可执行文件C++源代码的组织结构声明(.h)、定义(.cpp)一个编译单元[translationunit]是指一个.cpp文件以及它所include的所有.h文件,.h文件里的代码将会被扩展到包含它的.cpp文件里。每个编译单元被编译器编译为一个.obj文件,格式为PE[PortableExecutable,即windows可执行文件]。多个.obj文件由连接器(linker)进行连接成为一个.exe文件。要能运行需要有一个main函数,而有必须有每个声明的定义20谢谢观赏2019-6-9从源代码到可执行文件C++源代码的组织结构20谢谢观赏201可执行文件的结构BlockStartedbySymbol21谢谢观赏2019-6-9可执行文件的结构BlockStartedbySymboWindows的进程代码区静态数据区(已编译好)动态数据区(堆和栈)22谢谢观赏2019-6-9Windows的进程代码区22谢谢观赏2019-6-9windows进程的结构├———————┤低端内存区域│……│├———————┤│动态数据区│├———————┤│……│├———————┤│代码区│├———————┤│静态数据区│├———————┤│……│├———————┤高端内存区域23谢谢观赏2019-6-9windows进程的结构├———————┤低端内存区域23变量存储区举例#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);//打印各静态变量的内存地址printf("0x%08x\n",&s2);return0;}24谢谢观赏2019-6-9变量存储区举例#include<stdio.h>//例子堆和栈堆(动态申请)当进程初始化时,系统会自动为进程创建一个默认堆,这个堆默认所占内存的大小为1M。堆对象由系统进行管理,它在内存中以链式结构存在。堆栈有一组CPU指令可以实现对进程内存的堆栈式访问。其中,POP指令实现出栈操作,PUSH指令实现入栈操作。CPU的ESP寄存器存放当前线程的栈顶指针,EBP寄存器中保存当前线程的栈底指针。25谢谢观赏2019-6-9堆和栈堆(动态申请)25谢谢观赏2019-6-9函数调用过程中堆栈的作用不同的语言有不同的函数调用规定,这些因素有参数的压入规则和堆栈的平衡。windowsAPI的调用规则__stdcall前缀。参数从左到右入栈;栈由被调用者恢复;ANSIC的函数调用规则__cdecl前缀参数从右到左入栈;栈由调用者恢复;26谢谢观赏2019-6-9函数调用过程中堆栈的作用不同的语言有不同的函数调用规定,这些举例printf(“Thereare%ddogsand%dcats.\n”,m,n);“__stdcall”函数├———————┤<—函数执行时的栈顶(ESP)、低端内存区域│……││parameter1│├———————┤│parameter2│├———————┤│parameter3││……│├———————┤<—栈底(基地址EBP)、高端内存区域27谢谢观赏2019-6-9举例printf(“Thereare%ddogsan指针与数组数组名相当于一个不可改变的指针#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指针与数组数组名相当于一个不可改变的指针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语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。使用new较之使用malloc()有以下的几个优点:(1)new自动计算要分配类型的大小,不使用sizeof运算符,比较省事,可以避免错误。(2)自动地返回正确的指针类型,不用进行强制指针类型转换。(3)可以用new对分配的对象进行初始化。32谢谢观赏2019-6-9malloc/free与new/delete的异同malloC++类封装的实现C++的面向对象特性是通过编译器实现的,因此学习C++需要学习一些它的编译原理,所以说C++是一种“难学易用”的语言C++的访问控制(private,protected,public)是有编译时完成权限检查的。编译完成后静态成员存储到静态数据区其他数据成员存储在对象所在的动态数据区成员函数存储在代码区。编译器将对象的指针this作为成员函数的第一个参数。33谢谢观赏2019-6-9C++类封装的实现C++的面向对象特性是通过编译器实现的,因举例(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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论