




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
REliable,INligent&Scalable程序设第3计Episode翻译自BjarneStroustrup的课概REliable,INligent&Scalable数组和向量2回REliable,INligent&Scalable已经学过的内容如何进行算术运d=如何选“if是true,这样做否则做else“迭代“做某事直至完成”“做100次如何调用函“goaskJoeandbringbackthe“heyJoe,calculatethisformeandsendmethe3计REliable,INligent&Scalable
Code,oftenmessy,oftenalotofcode
(output)4计REliable,INligent&Scalable在内存在持久性介质中(例如硬盘通过网络传5计REliable,INligent&Scalable正确简洁实现方式“分而治之(Divideand将大的计算分解为许多小的计 设计隐藏细节 次概输入/协数据结编写大量的语句不代表就写出了好的代6语言特
REliable,INligent&Scalable–+*ifexpressionstatementelsestatement …我们组合这些语言特性就编写出来7表达
REliable,INligent&Scalable计算面积intlength //最简单的表达式:字面常量(这里//(这里初始化了一个变量intwidth=intarea=intaverage=
一个计算将遵循常见的数学意义上的运算次 (a*b)+(c/d)而不 //太复杂了!常量表达式:选择有意义的名字表示常constpi= 8操作
REliable,INligent&Scalable操作符指定要做什操作数指定操作符操作的数布尔类型:判等操作符逻辑操作符关系操作符字符类型:
(true==(相等),!=(不等)&&与||或非)小于大于(e.g‘a’,7’,整数类型short,int, 算术操作符*取余浮点类型:e.g.,float, (e.g.,12.45and–算术操作符*9操作
REliable,INligent&Scalablea+=a*=表表a=a=–或a+=a=更清晰、更直接地表达思执行效率和普通操作符是一样编译器会编译出一致的代类型转
REliable,INligent&Scalable–double/int等于–int/int等于2而不是–char+int等于编译器将int提升转换为doublechar提升转换为doubled=intdoubled2=inti2=d2=i2=
//d2==//i2==//d2==//i2==类型转
REliable,INligent&Scalabledoublecin>>doubledf9/5*dc+32;//doublecin>>doubledf=9.0/5*dc+32;9/51,而不是1.8;9.0/5语REliable,INligent&Scalable以分号结尾的表达或者a=doubled2=if(x==2)y=while(cin>>number)intaverage=return选择(if
REliable,INligent&Scalable ifmax=b;max=
Note:这里没有分Note:ifif(condition)statement-
//如果条件为真,则执行statement-//如果条件为假,则执行statement-选择
REliable,INligent&Scalable当选择是基于一组常量值进行比较可以使用switch语Switch语句包含多个case语用于switch的必须是整数类型、字符类型case标号里面必须是常量表达式,不能使用变两个case标号中不能使用相同的多个case标号可以使用相同的代每个case标号后面应该紧跟break语break语句用于终止switch的执default表示不属于任何一个case的情选择
REliable,INligent&Scalablecout<<"Pleaseenterachara;cin>>a;switch(a)case'0':case'2':case'4':case'6':case'8':cout<<"iseven\n";case'1':case'3':case'5':case'7':case'9':cout<<"isodd\n";cout<<"isnotadigit\n";}迭代(while循环
REliable,INligent&Scalable (DavidWheeler,Cambridge,May6,//计算并打印0-99的平方表:int{inti=while(i<100)cout<<i<<'\t'<<square(i)<<++i //increment}}迭代(while循环
REliable,INligent&Scalable 这里:inti=while(i<100)
这里inti这里:++i这里coutcout<<i<<'\t'<<square(i)<<++i 递增}迭代(for循环
REliable,INligent&Scalable另一种迭代形式:for将所有控制信息都集中在一个位置,即for的顶部for(inti=0;i<100;++i)cout<<i<<'\t'<<square(i)<<}即for(initialize;condition;increment)controlledstatement注意:什么数组类
REliable,INligent&Scalable int数组元素是从0int{constintarray_size=10;intia[array_size];for(intix=0;ix<array_size;++ix)ia[ix]=ix;}REliable,INligent&Scalable 3数组类
REliable,INligent&Scalableexternintconstintbuf_size=512,max_files=20;intstaff_size=27;charinput_buffer[buf_size];char*fileTable[max_files-3];doublesalaries[staff_size错误非constinttest_scoresget_size错误,非const数组类
REliable,INligent&Scalableconstintarray_size=intia[array_size]={0,1,2intia[]={0,1,2constintarray_size=intia[array_size]={0,1,2constcharca1[]={‘C’,‘+’,‘+’constcharca2[]=constcharch3[6]=
//ia[]={0,1,2,0,0//维数是//维数是错误Daniel"是7数组类
REliable,INligent&Scalable constintarray_size=3;intix,jx,kx;int*iap[]={&ix,&jx,&kx};int&iar[]={ix,jx,kx};
//ok:类型为int*的指针的数//错误:不允 数intia2[] //错误:不能用另一个数组来初始化一个数数组类charcharintchar
REliable,INligent&Scalable数–int–int000100000100200300–
REliable,INligent&Scalable数int
REliable,INligent&Scalable0103051002……被迭代的数据
REliable,INligent&Scalable//从一个vector int{doubletemp;while
一个double类型的vector用 温//用于表示单个温度值的变//cin读入一个值 到temp里 //将temp的值存入vector//…dosomething}//cin>>temp将在遇到文件结束符 被迭代的数据vectorvector<T>持有一个数值序列,它们都是T类型的数以这种方式考虑
REliable,INligent&Scalable55v’s
14235Vector的增vector<int> 空
REliable,INligent&Scalable00v.push_back(1);//增加一个元素,值为1111v.push_back(4);//增加一个元素在末尾,值为412412v.push_back(3);//增加一个元素在末尾,值3143 3143
REliable,INligent&Scalable//计算温度的平均值和中位int{doubletemp;while(cin>>temp)doublesum=for(inti=0;i<temps.size();sumtemps[i];对温度求cout<<"Meantemperature:"<<sum/temps.size()<<endl;cout<<"Mediantemperature:"<<temps[temps.size()/2]<<}组合语言特
REliable,INligent&Scalable到目前为止,我们可以掌握的有bool,char,int,doublevectorpush_back下标!=,==,=,+,-,+=,<,&&,||,max(),sort(),cin>>,if,for,用这些语言特性就可以编写出大量的程序实REliable,INligent&Scalablestrings;while(cin>>s&&s!=“quit”)
&&表示sort(words.begin(), //对读入的单词for(inti=0;i<words.size();++i)cout<<words[i]<<"\n";读入一组字符串到vector中,然后将它们按照字典顺序排然后输出这些单剔除重复单
REliable,INligent&Scalable//前面的程序中,重复单词会出现多strings;while(cin>>s&&s!="quit")words.push_back(s);sort(words.begin(),words.end());for(inti=1;i<words.size();++i)“getridof 伪代码for(inti=0;i<words.size();++i)cout<<words[i]<< 有很多种方式可以实现“getridof 作为程序员,我们选择一种非常简捷的方式来实 它可以节省运行时间和内存消剔除重复单
REliable,INligent&Scalable//通过 与众不同的单词来剔除重复strings;while(cin>>s&&s!="quit") sort(words.begin(),words.end());if(0<words.size()){for(inti=1;i<words.size();++i)}cout<<"found"<<words.size()-w2.size()<<"duplicates\n";for(inti=0;i<w2.size();++i)cout<<w2[i]<<"\n";函REliable,INligent&Scalableintsquare(int{return} 控制
REliable,INligent&Scalableint{
intsquare(int{
while{
returnx*}} 函REliable,INligent&Scalableintsquare(int{return}Return_typefunction_name(Parameterlist//(typename,{//useeachparameterinreturn //of}函REliable,INligent&Scalableintmax(inta,intb)//thisfunctiontakes2{ifreturn}
returnintx=max(7,9);inty=max(19,-27);intz=max(20,20);
//xes//yes//zes程序设计的基本思分而治
REliable,INligent&Scalable函数签接人们有不同的分解方分每个子问题在详细程度上处于同一个水每个子问题都可以独立地解
REliable,INligent&Scalable过程化程序设计方1、开始游2 先3、绘制画4、判断输5、轮6、绘制画7、判断输8、返回步骤9、输出最后结
对象化程序设计方1、黑白双方,这两方的行为是一模一样2、棋盘系统,负责绘制3、规则系统,负责判定诸如犯规、分分解并非总是正确对问题的不正确或不全面的理假设由一组编剧编写一个剧
REliable,INligent&Scalable抽抽象-编写剧本可以确定它包含多少
REliable,INligent&Scalable用来将软件分离成多个部分,它们组合起来就可以解决最初的问协助我们做出关于分解的正确(良好)选抽忽略某些信息,将不同的事物看作是相同的事物处
REliable,INligent&Scalable抽found=for(inti=0;i<a.length;i++)if(a[i]==e){z=found=}found=for(intia.length-1;i>=0;i--if(a[i]==e){z=i;found=}
REliable,INligent&Scalablefound=a.isIn(e);if(found)z=实REliable,INligent&Scalable–输入:04。该字符串可被分割为–输出:924(前面位数为0的最大数字需要舍弃0,097,则输出实输补齐分割比
#include<iostream>#include<string>usingnamespacestd;stringFillZero(stringstr);stringDelZero(stringstr);
REliable,INligent&Scalable剔除前导输
stringGetMaxNumber(stringintmain(){stringstr;cin>>str;result=re
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 创建鼓励创新的学习环境计划
- 关心社区低收入家庭的个人工作计划
- 2024年法医DNA检测试剂项目资金申请报告代可行性研究报告
- 2024年紫外光固化油墨项目资金需求报告代可行性研究报告
- 14道经典测试题及答案
- CPBA考试策略试题及答案
- 语文必修4测试题及答案
- 保险销售技巧培训
- 汉字与象形文化的关联性分析试题及答案
- 客服培训讲师竞聘
- 掌握重点中职电子商务教师资格证试题与答案
- 5.3基本经济制度 课件 2024-2025学年统编版道德与法治八年级下册
- 河南省郑州市管城区2024-2025学年级九年级下学期第一次模拟数学试题(原卷版+解析版)
- 隔音涂料施工方案
- 甘肃卷2024年高考真题化学试题(含答案)
- T-CCTAS 61-2023 桥梁承重缆索抗火密封综合防护技术规程
- 消防员职业技能鉴定中级技能题库大全
- 医院品管圈(QCC)活动成果报告书-基于QFD 润心服务改善 ICU 患者及家属就医体验
- JJG 693-2011可燃气体检测报警器
- 小学特色课程《口风琴课程》校本教材
- 康复治疗师考试历年真题附带答案
评论
0/150
提交评论