已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024室内智能物流机器人
- 常德2024年05版小学六年级下册英语第五单元综合卷
- 郑州-PEP-2024年小学六年级上册英语第二单元寒假试卷
- 珠宝生产企业的账务处理分录-记账实操
- 强化企业安全生产-责任落实十项
- 概括内容要点理解词句含义-2025年高考语文一轮复习知识清单(解析版)
- 1.1 反比例函数 同步练习
- 2024年初级经济师之初级金融专业模拟考试试卷B卷(含答案)
- 平面图形的镶嵌评课稿(10篇)
- 牛奶赞助合同(3篇)
- 夏商周考古课件 第4章 殷墟文化(4-6节)
- GB/T 708-2019冷轧钢板和钢带的尺寸、外形、重量及允许偏差
- GB/T 6072.4-2012往复式内燃机性能第4部分:调速
- 胆囊癌和胆管癌2021NCCN患者指南中文版
- GB/T 1927.5-2021无疵小试样木材物理力学性质试验方法第5部分:密度测定
- GB/T 17395-2008无缝钢管尺寸、外形、重量及允许偏差
- GB/T 14996-2010高温合金冷轧板
- 产业结构调整指导目录(2013修正)
- 学业考试质量分析课件
- 公路工程概论全套课件
- 红外热成像技术房屋缺陷检测的应用课件
评论
0/150
提交评论