




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大规模集成电路设计应用与实践,代码阅读与实践 Lecture 3 主讲人:胡亚斌 E-mail:,系列课程之,第二次课的回顾,关心代码阅读全周期(四个步骤)内发生的事 源码,预编译,编译,汇编,链接,运行,修改源码 了解目标文件, readelf, objdump 等工具的使用 深入理解编译、链接 了解程序员眼中的内存模型: 堆 与 栈 深入理解 HelloWorld 程序的全生命周期,2,代码阅读有哪些事,3,4,基本编程元素,课程内容,函数与全局变量,循环结构,goto语句,字符及布尔型表达式,do循环与整型表达式,基本编程元素,5,一个完整的程序,见本节课实验一 原型代码可以参考教材随书关盘 netbsdsrcbinechoecho.c 实验演示,理解 main 函数参数 argc 与 argv,6,头文件,用于函数、变量的声明。 用 #include 格式来引用标准库的头文件(编译器将从标准库目录开始搜索)。 用 #include“filename.h” 格式来引用非标准库的头文件(编译器将从用户工作目录开始搜索)。 规则和建议 必须做头文件保护。 在头文件中,尽课程使用前向声明,而不引用其他头文件,以防止头文件引用循环嵌套。 建议头文件中只存放“声明”而不存放“定义”。,7,实例: 头文件,8,/* * CopyRightYabin Hu, CUG. 2010,10,29. * this is a demo for header file. */ #ifndef MY_INCLUDE_FILE_H / 防止 my_include.h 被重复引用 #define MY_INCLUDE_FILE_H #include / 引用标准库的头文件 #include “anotherheaderbyme.h” / 引用非标准库的头文件 void Function1(); / 全局函数声明 class Box / 类结构声明 ; #endif,函数与全局变量,9,VS2008类视图,10,基本概念,作用域 scope 生命周期 life cycle,11,关注代码中的符号或名字,全局函数与全局变量 具有外部链接(external linkage)的符号 在OO编程中,定义在任何类之外 规则: 在检查代码时,确保所有只用于单一文件的变量都声明为 static 的。,12,对变量名的分析,关注修饰符 static (文件作用域, 程序生命周期) extern (全局作用域,程序生命周期) 实验演示,13,对函数的分析,了解函数功用的方法 通过函数名猜 阅读函数定义之前的注释 猜测参数的意义 观察函数被调用的方式和返回值 阅读函数体代码 查阅外部文档,14,循环结构,15,while循环,16,/打开一个文件得到其文件描述符 File *fp = fopen(“a.txt”); while(c = getc(pf) != EOF) putc(c, active); ,/ 这个循环执行了多少次迭代 char * p; while(0 = *p & *p = 9),do-while的特殊用法,17,#define ABORT_PARSE do global_command = 0; yyerrok; if (! symtab_context.empty () symbol_table:set_scope (symtab_context.top (); symtab_context.pop (); if (interactive | forced_interactive) YYACCEPT; else YYABORT; while (0),for循环次数,18,for(int i = 0; i 0; i-) for(dp = readdir(dd); dp != NULL; dp = readdir(dd),下列for 语句各执行多少次循环,for循环与效率,19,for (i=0; iN; i+) if (condition) DoSomething(); else DoOtherthing(); ,if (condition) for (i=0; iN; i+) DoSomething(); else for (i=0; iN; i+) DoOtherthing(); ,break 和 continue,break用于退出当前循环, 用于循环和switch语句中。 continue意味着跳过该语句与循环末尾的所有语句,直接执行下一次循环。,20,无限循环,21,for(;) . ,while(1) . ,可通过break语句,goto语句退出,课后作业,浏览wiki上关于作用域 与 生存周期 的解释 /zh/%E4%BD%9C%E7%94%A8%E5%9F%9F /zh/%E5%8F%98%E9%87%8F_(%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1) 从课程网站上下载 lifecycle.cpp 文件 写出 a, b, c, d 四个对象的作用域和生存周期; 编译运行该程序,写出运行结果,并加以分析。,22,Perl,程序设计语言花儿朵朵之,23,拉里 沃尔,24,拉里沃尔(Larry Wall,1949年3月10日)是程序员、系统管理者、语言学家和作家,生于加拿大卑诗省邓肯市。他最为人知的地方,是他设计的编程语言Perl。,Perl的起源,Perl的起源多少有些“意外”。因为其创始人拉里沃尔并不是有意的要编写一门编程语言,事实上,拉里沃尔也不是一位程序员,而是系统专家。当 时拉里沃尔正在负责一个项目,由于要完成某项工作,尽管拉里沃尔曾想用 awk 来完成,但其并不能满足他的需求,结果就是一门新的编程语言要诞生了。,25,Perl的设计哲学 -简单,同Objective-C、PHP、C+等语言一样,生于80后的Perl同样有C语言的血统,同样具有强大的能力及灵活性,相比于那些高级语言 而言,Perl语言直接提供泛型变量、动态数组、Hash表等便捷的编程元素。但真正让程序员们兴奋的还是Perl的简单哲学。 Perl的简单首先表现在其代码量上,相比于其他语言,面对一个稍复杂的问题,用Perl解决也许几行就足以!而编译Perl程序则更加简单,你根 本不需要一些特殊的指令。由于Perl继承了C语言的很多语法规则,所以它的结构非常容易理解(Perl是一种无类型语言),也正由于此,使得其他语言的 程序员能够很快的理解
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO/IEC/IEEE 8802-15-9:2024 EN Telecommunications and information exchange between systems - Local and metropolitan area networks specific requirements - Part 15-9: Transpor
- 电力施工承包合同(5篇)
- 口罩销售的合同(6篇)
- 房地产项目开发委托代理合同
- 文化旅游产业推广与合作经营合同
- 房产收购合作协议书
- 书面货物运输合同
- 互联网项目合作协议
- 可再生能源发电项目合作开发协议
- 制式装修合同
- CentOS 7系统配置与管理(Linux 试题库) 习题答案 (杨海艳 第2版)
- 中国氢内燃机行业发展环境、市场运行格局及前景研究报告-智研咨询(2024版)
- 开学季初三冲刺中考开学第一课为梦想加油课件
- 2025年四川绵阳科技城新区投资控股集团有限公司招聘笔试参考题库附带答案详解
- 2025年人教版英语五年级下册教学进度安排表
- 学校食堂餐厅管理者食堂安全考试题附答案
- 2025延长石油(集团)限责任公司社会招聘高频重点提升(共500题)附带答案详解
- 病原微生物安全
- 玻璃电动平移门施工方案
- 2.1大都市的辐射功能-以我国上海为例(第一课时)课件高中地理湘教版(2019)选择性必修2+
- 长鑫存储校招在线测评题库
评论
0/150
提交评论