C 语言程序设计 教学体会 孙志岗的 “ 个人体会 ”. 代码风格 代码风格就是程序员的书法 – 比书法好学得多,基本不需要特别练习 但是坏习惯一旦养成,就像书法一样难以改变 – 是最易获得和实践的软件工程规则 – 对设计程序结构、培养团队精神都大有帮助 不给学生看到任何一个风格糟糕的例子.

Slides:



Advertisements
Presentaciones similares
Mis amigos, no permitan que esto los tome 網友你好 希望這份檔案不致造成你的.
Advertisements

EEEE ---- mmmm aaaa iiii llll 文文文文 化化化化 传传传传 播播播播 网网网网 wwww wwww wwww eeee ---- mmmm aaaa iiii llll.... cccc oooo mmmm FERROCARRIL BEIJING.
Puentes asombrosos de China By : E. Cheong. 海上部分桥梁长 32 公里 4/43.
西班牙语基础知识. 日常词汇( 1 ): 你好! Hola!---Hello! 早上好 Buenos d í as-- 下午好 Buenas tardes 晚安 Buenas noches — good night (西班牙语中 bueno/a 为 good 之意思,源于 bonus 。 D í a,(m)
第一中国拉美互相了解于文化系列讲座 Primera Serie de Cátedras de Entendimiento Mutuo e Intercambio Cultural entre América Latina y China 中央广播电视大学 - 中拉互利发展基金会合作主办.
Desde el Río de la Plata hasta la Gran Muralla: Jorge Luis Borges y sus obras en China ZHOU Wei 周维 CIALC-UNAM Universidad de Estudios Extranjeros de Beijing.
汉字书法 罗莎学生. 汉字书法 书法是艺术创作。在中东和亚洲书法和 绘画都是有价值的。汉字是非 常值得赞赏的书法艺术。在中国,书法 已超过两千多年的历史。
Presentación del sistema de educación superior español 西班牙高等教育体制介绍 Pekín, 30 de noviembre de 2010.
“Oportunidad de Negocios para la Industria, Comercio y Servicios” 工商服务业的商机 ZONA FRANCA DE IQUIQUE 伊基克自由贸易区 Fabio Borzacchini A Gerente de Negocios ZOFRI.
直角三角形的两个锐角互余。 2. 直角三角形的两个锐角之间有什么关系 ? 则 : ∠ A+ ∠ B=90° A B C a b c 知 识回 顾 在R t ⊿ ABC 中,∠C=90 °
西班牙语基础知识 赛尔课堂.
Mis amigos, no permitan que esto los tome 網友你好 希望這份檔案不致造成你的.
“Proyecto Emblemático Prometeo” 普罗米修斯 — 标志性项目 Una oportunidad para desarrollar ciencia, tecnología e innovación en el Ecuador 一个在厄瓜多尔拓展科技的机会.
Alfredo Rodríguez, 阿尔弗雷多罗德里格斯 Pintor nacido en Tepic, Méjico, en 1954 画家 1954 年在墨西哥特皮克出生 Es uno de los mejores, sino el mejor de los artistas que han.
Alfredo Rodríguez, 阿爾弗雷多羅德里格斯 Pintor nacido en Tepic, Méjico, en 1954 畫家 1954 年在墨西哥特皮克出生 Es uno de los mejores, sino el mejor de los artistas que han.
2014 古巴工业展 古巴国际工业展组委会, 诚邀来自各个行业 的专业人士与专家参加第一届展会, 展会将于今年 6 月 23 日至 27 日在古巴哈瓦那举办, 同时在 PABEXPO 会展中心将进行工业项目洽谈会.
更多精彩请点击这里访问 Paraty es una ciudad brasilera en el occidente del Estado de Río de Janeiro, microrregión de la Bahía de Ilha Grande.
汉语 Español Hola Soy Juan, escoge un idioma para empezar, mi experiencia! 你好,我是胡安 , 我选择一种语言 来描述我的经历.
摄影.... 光的绘画艺术。 它是 “ 时光机器 ” ,通过这种方式把我们带到过去。 它是最快的赛车,图片把我们带到某个远处。 它是一个情感雷管 , 它是彩色或黑白色的大迸发。 La Fotografía…. El arte de pintar con luz. También es la “maquina.
M á s cerca de tus sue ñ os!! Caracteres del Mandarín Una lógica Pictórica Pandalatina Formaci ó n Integral en Chino mandar í n y Cultura China !
013456… LOS NÚMEROS 數字 Los números que escribimos están compuestos por algoritmos, (1, 2, 3, 4, etc) llamados algoritmos arábigos, para distinguirlos.
¿Por qué tengo que ir a la Iglesia? 為什麼要上教堂 ?. Te recomiendo que lo leas… es de lógica 建議你閱讀它 ,這裡面是有道理的 ….
Es curioso ver cómo las autoridades de Bruselas dan uso a muchas paredes con un toque muy especial, los murales que las adornan, la mayoría especialmente.
觀察的類型 自然觀察與實驗研究的觀察 結構式與非結構式的觀察 參與及非參與的觀察 個體目標及地點目標的觀察 團體或個別觀察
指導教授:胡凱傑 博士 報告人:企碩一 張哲瑋
第 7 章 深入了解计算机 信息技术学院. 第 7 章 深入了解计算机 本章导读: 我们对计算机了解多少?本章我们将要对 计算机的软硬件进行一个全面了解,对计 算机的日常保护和计算机安全有一个更加 清晰的认识。认真实践,仔细思考是本章 的主要要求。
公共選擇理論.
《中国传统文化》 印、缅、委、越 —— 独特文化的呈现 评分 : 优 任课 : 龚红月 评分 : 优 任课 : 龚红月.
沒有一隻野雁會升得太高,如果它只用自己的翅膀飛行
WebQuest 情境模擬 屋苑樓宇總值計算葉笑嫦老師佛教茂峰法師紀念中學指導老師:李芳樂教授、楊浩教授 香港中文大學教育學院課程與教學學系.
4.6 Intel x86 分段和分页存储结构 1) Intel x86 系列 CPU 提供三种工作模式: 2) Intel x86 上虚拟存储管理核心表 : LDT 和 GDT 3) 段寄存器和虚拟地址 (b) 段寄器高 13 位为段选择符 (a) 虚拟地址 段选择符 偏移量
HP 移动工作站产品培训 June, 2011 _ PSG RPO Training Team 何敏
楊景傅 博士 (Albert J.F. Yang, Ph.D.)
浅谈航天缆索的运用 a ‘ simple ’ idea, but one with an amazing number of uses PB 蔡昕昕 指导老师:程福臻.
请做好 上课准备 生物化学 绪 论绪 论绪 论绪 论 一、生物化学的定义 在分子水平研究生命现象与规律的科学,即生命的化学。 二、生化学习的主要内容 (一) 生物体的组成、结构、特性与功能 (二) 生物体各化学组分在体内的化学变化(即物质代谢) (三) 遗传信息的储存、传递与表达 (四) 两大生物大分子.
DNA 序列完全比對搜尋系統 指導教授 : 張玉盈 教授 組員 : 陳政浩、林峰世、陳俊仁. 背景 Human Genome Project DNA 研究 未來發展.
土壤中氮含量的测定方法 化学系 06 级 3 班 陈奕群 氮对植物生长 的重要性 土壤中氮的分类 土壤中氮含量的测定方法及分类.
英业达(重庆) VMI 厂商说明会 重庆直通物流有限公司 2010 年 11 月.
中国城市交通可持续发展的体制和政 策框架 El desarollo sostenible y el marco de las políticas de los sistemas urbanos de transporte de China 江玉林 Jiang yulin 交通运输部科学研究院城市交通研究中心.
中华人民共和国交通运输部 El Ministerio de Transportes de la República Popular de China 道路运输司司长 李刚 Director de Departamento de Transporte por Carretera Li Gang 中国城乡道路客运发展.
013456… LOS NÚMEROS 數字 我們日常普遍使用的數字 為阿拉伯數目字 有別於其他寫法 譬如說,羅馬數字 Los números que escribimos están compuestos por algoritmos, 我們日常普遍使用的數字 為阿拉伯數目字.
“Gestión del Transporte Urbano en España” Pekín, 9 de noviembre de 2010 Rosa Menéndez Secretaria General de TU Subdirectora de FENEBUS 1 西班牙市内公交运输管理 罗莎.
JORNADA HISPANO-CHINA DE TRANSPORTE DE VIAJEROS 中国西班牙道路旅客运输专家会议 “ El sistema de licitacion de la calidad del servicio sobre el permiso de lineas del transporte.
中国文化 的标志比任何亚洲文化, 中国镇未接受巨大入侵 的作用和它的文化的伟 大的部分, 象文字系统和 它的艺术许多小平面, 当 他们变化了在超过年。 只在最近日期你开始有 中国史前史科学知识, 从 被创始的考古学挖掘在.
教學經驗分享 景美女中西班牙文教師 劉劭璇.
环球测厚仪公司总部位于美国俄亥俄州的 Maraine 产品和服务范围 X 射线测厚仪系统 同位素测厚仪系统升级改造 涂层测厚仪系统 测宽仪系统 现场和远程技术支持 3 大备件中心和部件维修中心  美国环球总部, 欧洲分公司, 中国伊士顿 其它测厚仪系统的升级改造.
攝影.... 光的繪畫藝術。 它是 “ 時光機器 ” ,通過這種方式把我們帶到過去。 它是最快的賽車,圖片把我們帶到某個遠處。 它是一個情感雷管 。 La Fotografía…. El arte de pintar con luz. También es la “maquina del tiempo”,
印尼摄影师 普拉卡萨 拉林达摄影作品 点击继续 视觉的诗 XuY/ 文化传播网
PC 片材应用介绍 新亚电子制程股份有限公司 项目管理部 : 曹欣欣 PC 片材应用介绍 新亚电子制程 SUNYES Electronics Manufacturing 内容概要 PC 材料介绍 PC 材料应用介绍 PC 片材介绍 PC 片材应用介绍 IML 工艺介绍 IML 工艺与传统印刷工艺比较.
Nivel 1 欢迎大家!.
INSTITUTO CONFUCIO DE LA UADY CURSO DE CHINO MANDARIN
中国的传统文化 Historia y Cultura de China
一级 梁莉莉 欢迎!欢迎!. 你 好你 好 我喜欢旅游。 我喜欢吃东西。 牙齿 - 鸭脖子 我喜欢看电影。
天祥石油化工 实验室测试服务(中国) 天祥石油化工实验室在全中国建立了独立的实验室网络, 全年无休地为石油和石化业提供及时, 可靠, 独立和准确 的测试服务。 天祥石油化工实验室网络现由七个实验室组成, 分布在东 北, 华东,华南的主要港口, 总部位于上海,提供各类管 理支持。 实验室技术部门与集团有着紧密联系并得益于其.
L4 gramática. 否定的命令式用法: 否定的命令式是要求别人不要做什么事情, 是在命令式前面加 no 来表示这种否定的意 思。 严格的说否定命令式不属于我们一般说命 令式范畴,因为这些事情是被禁止的,是 事实上并没有发生的,所以使用的是虚拟 式现在时的变位。
- 1 - 太阳能系统研究所 Institute for Solar Energy Systems 洪瑞江 博士 教授 中山大学 太阳能系统研究所 中山大学 太阳能系统研究所 电力电子及控制技术研究所 电力电子及控制技术研究所 太阳电池研发现状与最新发展.
我们去游泳,好吗? 第六课. Wànshèngjié kuàilè 万圣节快乐 作业 Libro de ejercicios L6 p40 #6 #7 #8 听写 第六课 T1& T2 (p63 y p64) las palabras en color verde.
作业: 1.Quiz de L5-L6 2.Grabación de L6T2 (p63) 3. Buscar la histori a de 马马虎虎 Escribir un texto parecido para presentar a ti mismo(se entrega el 28 de octubre)
作业: 1.Quiz de L5-L6 2.Grabación de L6T2 (p63) 3. Buscar la histori a de 马马虎虎 Escribir un texto parecido para presentar a ti mismo(se entrega el 28 de octubre)
ESPAÑOL MODERNO LECCIÓN 3. Es mi amigo. Son mis amigos. Es nuestro amigo. ¿Son ellas vuestras amigas? Son sus amigos.
胶囊旅馆 是几十个整齐撂起来的 “ 胶囊 ” 。每 个胶囊 “ 盛放 ” 一个顾客。有人说它很像宇宙飞船 太空舱,充分体现日本资源节约与空间创意的便 捷式旅馆。 “ 胶囊旅馆 ” 非常符合如今人们倡导的 低碳、环保理念。由于他的低碳排 放、经济实用 、安全卫生、节约资源等诸多优点,现已被世界 各国纷纷效仿,经营情况超出寻常的好,一般入.
Niños Nivel Profesoras: Liang y.
Niños Nivel 10.
尤卡坦自治大学孔子学院 Instituto Confucio de la UADY
第十课 我在这儿买光盘.
CARTAS A JESÚS... que fueron enviadas por niños de un colegio del sur de Italia. Un maestro de primaria tenía por costumbre mandar a los alumnos que escribieran.
{ILLINOISEPAY. CHICAGO PUBLIC SCHOOLS DRIVER EDUCATION RANGE SIMULATION-BEHIND THE WHEEL I’m ready to Enroll! CPS charges a fee of $50.00 for BEHIND THE.
 2º -Apellido del padre: Lerma ( 父亲的姓 )  3º -Apellido de la madre: Peláez ( 母亲的姓 )  (Yo) Me llamo Juan Gonzalo Lerma Peláez 我叫 Juan Gonzalo Lerma Peláez.
Ria slides XuY/ 文化传播网
2016/7/6 page 1 第 9 章 网络设备 本章重点 ●网络接口卡及其使用 ●集线器及其使用 ●交换机及其使用 ●路由器及其使用 ●构造简单的网络.
Transcripción de la presentación:

C 语言程序设计 教学体会 孙志岗的 “ 个人体会 ”

代码风格 代码风格就是程序员的书法 – 比书法好学得多,基本不需要特别练习 但是坏习惯一旦养成,就像书法一样难以改变 – 是最易获得和实践的软件工程规则 – 对设计程序结构、培养团队精神都大有帮助 不给学生看到任何一个风格糟糕的例子

代码风格 标识符命名 – 宏全部大写 –Windows 风格和 Unix 风格 VariableName variable_name 缩进 –“ { ” 位置的两种风格 – 用 4 格 tab 还是用空格 空格 – 增强单行清晰度 – 每行代码长不要超过 80 空行 – 自然段

表达式尽量简单 下面程序在不同编译器可能产生不同结 果,而且可读性差 –a = i++ + i++ + i++; –printf("%d, %d, %d", i++, i++, i++); –for (i = 0; i != 0 && i++; ); 很多教科书自作聪明地创造了很多复杂 的题目来难为学生,就算它们的用法正 确,实践中也未必用得到

全局变量要避免使用吗? 全局变量增大了模块之间的耦合度,而 且不利于排错,罪大恶极 这罪恶不能怪全局变量,只能怪无限制 的对全局变量的改写 不要让全局变量有复杂的数据结构 – 一旦数据结构变了,真的大祸临头了 – 最好利用 static 特性用函数对其进行封装

不要把 goto 判处死刑 问题不是出在 goto ,而是出在对标号的 滥用 结构化程序设计中一个被忽视的原则 – 单入口,单出口 只要符合此原则,什么都可以用 goto 在处理异常流程问题时,非常好用 – 退出多重循环 – 统一的错误处理

吓死人的指针 “ 指针 ” 出现, “ 难 ” 字当头 – 老师吓学生,学生再吓学生的学生 …… 从原理上了解指针,它是那么简单 – 一个普通变量,其值是一个内存地址 格守下列原则,指针使用永不出错 – 永远要清楚每个指针指向了哪里 – 永远要清楚指针指向的位置是什么

指针的兄弟:数组 不要把数组和指针分开,它们是紧密相 连的 数组最简单 – 数组名是指针,数组成员是变量 多维数组麻烦些 – 关键要知道它在内存中是怎么分布的

脑细胞可贵,千万别用来背 算符优先级 – 知道先算括号足以 – 这样方便自己,也方便他人 库函数用法 – 会查联机帮助、手册最重要

变量占用的字节数 不同平台,不同编译器,可能会迥然不 同 struct 占字节数由编译参数决定 凡是需要字节数的地方,一律用 sizeof 获 得

没有 “ 真 ”“ 假 ” 逻辑运算的结果只有整型数 “ 0 ” 和 “ 非 0 ” – 很多编译器给出的非 0 结果是 1 ,但这是特例 if (0) printf(“ 永远不会被执行 ”); while (1) { /* 死循环 */ }

下列问题,要上升到阶级斗争的 高度 指针指向不明 数组下标越界 数值运算溢出 除数为 0 不检查函数的返回值 变量不初始化就使用 比较相等时用 = ,没 用 == 用 == 比较两个浮点数 是否相等 返回局部变量的指针 malloc 不 free open 不 close 它们编译不出错,运行很可能也不出错, 但一旦出错,就让人焦头烂额

危险的 scanf scanf 简便好用 不做参数类型匹配检查 不限制用户输入字符串长度 – 很多黑客攻击都是从这里开始的

\0 给字符串处理带来的 危险 – 假如 \0 不存在, printf 、 strcpy 、 strcmp 等都 将越界访存 –n 族函数可以解决此问题 处理字符串时,时刻要警惕 \0 是否在其该 出现的位置

C 语言三大定律 表达式定律 – 任何能产生数值结果的运算、操作都可以作为表达 式,并可以放到任何需要数值结果的地方,只要数 值类型能够匹配 – 常见的可以产生数值结果的运算和操作 算术、逻辑、位运算等 ? : 、 & 、 * 等 有返回值的函数 赋值 – 常见的需要数值的地方有: 赋值 条件判断 函数调用

C 语言三大定律 类型定律 – 任何类型都可以在任何需要类型的地方使用;用任 何类型定义的变量都要占用内存 – 已知特例 函数返回值不能定义为数组类型 函数参数定义为数组类型,此时该参数不占用内存,而是 共享函数调用者传入的数组空间 – 常用类型 基本数据类型、指针、数组、结构 …… – 常见的需要类型的地方 定义变量 定义指针、数组和结构 函数参数和返回值 sizeof

C 语言三大定律 参数传递定律 – 函数调用时的参数传递永远都是传值调用, 把实参的值拷贝给形参 实参:调用者提供的参数 形参:函数定义的参数 基本数据类型无容置疑 struct 也无容置疑 指针作为参数时,把指针变量的内容(就是其指 向的内存地址)做了拷贝 数组名作为参数时,把它等同于指针看待了

要点 简单为美 – 宣扬 “ 简单为美 ” 的科学思想,摒弃刻意的复杂 原理为纲 –C 语言复杂的表面都是简单的原理的外在表现 人性为本 – 计算机是人设计的,具有人性 面向应用 – 避免 “ 学是一回事,使用是另一回事 ” 无需背诵 – 该记的,用着就记住了;用不着的,背下来也会忘 没有绝对 –Match is best!

为什么追求 “ 简单为美 ” ? C 语言没有权威,什么都不可信 – 书当然不可信,任何书都是 背书更可悲 – 编译器也不可信,它只是一种实现而已 不同编译器、不同平台,表现往往会大相径庭 C 语言诞生的主要目标之一就是让 UNIX 可以跨平台。我们 书写的 C 程序也应该极力争取跨平台 有些本来就是错误的用法,在某些平台上却还可以正确运 行 –ANSI C 也不可信 这个标准本身并不完备,而且并不是所有编译器都对它 100% 支持

为什么追求 “ 简单为美 ” ? 那我们还能信什么? – 相信 “ 简单 ” !!! – 最简单的用法,是被编译器支持得最好的 “ 简单 ” 易于理解、交流,便于维护

非计算机专业需要了解 深入的 “ 原理 ” 吗? 只要使用 C 语言,就必须知道 “ 原理 ” – 浮于表面的使用,是无法发挥 C 语言的优势的 如果他不需要知道 “ 原理 ” ,肯定他不用 C 语言, 那么就不该让他学 C 语言 “ 原理 ” 涉及到 – 计算机原理 – 编译原理 – 操作系统 – 算法与数据结构 – 软件工程

原理为纲 计算机原理 – 冯 · 诺依曼机 – 二进制、八进制、十六进制和十进制 –b 、 B 、 KB 、 MB 、 GB 、 TB – 寄存器、内存、外存的基本原理 – 流 编译原理 – 编译、链接过程 预处理指令、外部变量 – 函数的参数传递和局部变量定义 栈

原理为纲 操作系统 – 内存保护 数组下标越界、野指 针 – 内存管理 动态内存分配(堆) 和栈 – 文件管理、进程互斥 算法与数据结构 – 栈 – 结构体 软件工程 – 分析、设计、程序结 构 – 结构体 – 协作

原理为纲 C 语言自身的原理 – 指针的原理 – 数组的原理 – 函数调用的原理 – 内存分配的原理 栈和堆 了解原理,就能从根上分析出一些纷繁 复杂的语法规则的合理性。此外,还需 要一点点人性

人性为本 在原理基础上, C 语言为了让人使用方便, 有很多人性化的设计 比如: –char sz[] = “A String”; –+ - * / –if-else – 逻辑运算 不要让学生 “ 记住 ” 这些,而要让他们知 道这些有多么地顺乎自然

面向应用 C 语言是用来实践的。能应用,比掌握一 些生僻的用法更重要 应用中最信奉的就是 “ 简单为美 ” 软件工程思想在应用中也非常重要 – 结果正确不能说明程序好

无需背诵 记忆力经过漫长的 12 年中小学应试教育,已经 锻炼到极致了 如果教学中指明要学生机械背诵什么,那么这 个教学是失败的 如果考卷中有需要机械背诵才能做答的题,那 么这个考卷是失败的 通过作业、上机,把知识自然而然地变成学生 身体的一部分 锻炼学生查资料、联机帮助和手册等的能力

没有绝对 科学没有金科玉律,计算机科学更是如 此 在不同的环境下,相同的观点会产生不 同的效果 – 简单为美是基本准则,但是在用 C 书写像 OS 核心这样的代码时,效率很关键,就不能追 求 “ 简单 ” 了 把选择权留给学生自己,让他们有自己 的观点

C 语言教学最终目的 让学生知道自己还远没有学会 让学生知道自己以后怎样继续学 让学生知道自己肯定能自己学会,并找 到学习的乐趣与动力 让教师知道,自己还有不会的