新概念C语言教学大纲

  • 格式:pdf
  • 大小:136.45 KB
  • 文档页数:9
Intermediate Lessons (Lesson 8-14) 以数组为核心,分析常用数据结构(字符串,结构体,联合),讲解 C 程序的函数设计。8 F7 v* p" Q' o) m 4 q5 O9 K* H+ d Advanced Lessons (Lesson 15-21) 以指针为核心,结合二维数组,位操作和函数指针,讲解 C 程序的状态机编程思想。
NCCL - New Concept C Language 教学大纲
Unit One 0 A9 }" J9 D2 L6 s Unit 1 是《新概念 C 语言》系列课程的第一部分,共有 24 个 Lesson,包含以下 4 个层次的学习内 容:
Beginning Lessons (Lesson 1-7)0 U7 g, k* _' P8 g: R 以变量为核心,运用循环语句和条件分支,讲解 C 程序的基本结构。9 }+ D3 d" r! ]6 ^3 I
Homework Projects (Lesson 22-24) 以任务为核心,通过趣味题,综合使用学习过的知识和技能,实现项目需求功能。& w: J% w7 \! b( n
Beginning Lessons7 T" P9 m4 M% q; M Lesson 1 What is a simplest C program? 最简单的 C 程序 5 ]; h% y+ \6 M% Q) w
循环中的条件分支; h- B* n% i+ ^( F9 @" [! _ break 和 goto 用法
数学库函数 math library 静态链接和动态链接 static & dynamic linkage
算法效率 算法的时间复杂度分析 O(n)2 y3 ?- f' I2 d. S2 c
结构程序设计 5 J% b3 l' ]2 r) N0 x1 O 三种基本控制结构就可以写各种程序 4 I: ]; S+ G' s& N& ?
整型数组 Array; D5 k) H5 y- @2 | 数ห้องสมุดไป่ตู้的初始化 ` z/ C& W3 |/ T9 M X6 \" Z5 U/ |
数据结构和算法 DS & AL 数据驱动编程 Data-Driven 数据压倒一切,编程的核心是数据结构,而不是算法! ~% }+ ^9 w! ]& K. c
链表思想 Link List 算法优化 Optimization. t) {. `0 u O, d
Intermediate Lessons Lesson 8 Find how many 9 in number 1 to 100 1 到 100 有多少个 94 \5 Z6 Y. c" g2 `/ u% `' { 基本概念讲解 7 J# ^4 g# u; m8 f; k
函数 Function 函数的入口和出口
操作系统 OS 加载器 Loader 加载地址和执行地址 Load_Addr & Exec_Addr. p8 Q0 ^$ p6 L8 {0 V* c
程序的执行 Program Execution 进程的概念 Process 执行流程 Execution Sequence# o3 Z* Y* E5 I } V& b
函数的传值和传址 Parameter's value and address 程序二进制接口规范 ABI (Application Binary Interface)) U' g1 }1 `' `
" A6 s! {4 \! m% j$ b+ B- m) b Lesson 5 Summarize all numbers from 1 to 100 从 1 加到 100 求和) s' [" U6 l, O" |/ N+ P8 z
字符数组 String and Character Array9 `( s5 |& P$ H 字符编码 ASCII 码表# h" a+ c, p" h# W
字符串逆序 String Reverse0 b- u) f+ t& G3 F1 h) M 函数式宏定义 Function-like Macro
Lesson 10 Josephus ring 约瑟夫环 基本概念讲解
k# z
循环嵌套 1 w4 k6 S3 o) B1 i: _+ y
两重循环的典型用法 break 和 continue. d/ q9 c z* Y% M2 M, ^ 程序的调试 编译时和运行时错误 8 O" s v/ F# v 函数栈 Function Stack5 z& B5 g8 F1 D* r) ~9 d 栈帧 Stack Frame $ l/ q, i( O+ l$ R( A0 g% I Lesson 7 Find a max prime number within 100 求 100 以内的最大素数 8 ]. s5 D/ t' ?5 o% k6 {& M
虚拟地址 Vitual Memory Address 进程独立的地址空间$ Z- ~$ q3 [; F. D' A, f9 L8 M 内存管理单元 MMU
' A6 S) d, c2 f$ W Lesson 3 Count how many fingers do you have? 循环打印! @. p3 m( v2 B) |, |# ~& Y+ ^
C 语言 Language( M4 V! {2 w6 g$ p8 e$ I) ? 高级语言 High-level Programming Language 汇编语言 Assembly Language& |0 \0 j/ M* V* a; z* {/ t* l 机器指令 Instructions
编译器 Compiler5 p& o6 x# k7 e* I- j3 a 汇编器 Assembler
分支语句 Switch2 |2 y6 i+ O3 }$ {) w 枚举用法 enum' o) M, Q+ h2 R. S6 Y
枚举类型的初始化 增量式开发 Incremental Development% @7 `: v* x9 O, l o R
步步为营而不是一蹴而就 预定义宏的用法
__DATE__ __TIME__* ]$ i& h) C* X0 a6 k6 [! y) |* Y " o' d S, W' f* F' e& J; O Lesson 14 Is there a way out? 判断地图上某点是否有出路, ]: l; d8 n' `! I 基本概念讲解
条件分支 Condition- s3 \% ~$ A; w1 m4 v7 z 表达式求值 Expression Value! H r6 O4 n. b) C( d, |. F2 ]# Z9 V
编码风格 Coding Style L g, m. i3 w5 [% v4 O 标识符命名 symbol naming1 _# N5 a2 p8 j! g) ?2 a7 W/ u7 U 代码缩进 (如果你知道自己在做什么,三层就足够了)
分解和分层 stratify 小即是美) i, o9 I+ W+ W5 M) q
过程抽象和接口设计 Procedure Abstract, ]0 a$ w6 M, ]4 | 可复用的代码 Reuse4 [8 j, r5 s+ N3 Y7 Q! J 接口小巧、简洁和正交
Lesson 9 Convert a number to a string 整型转字符串 8 G2 u2 S% S) A' Z/ `4 R1 j2 `9 Y 基本概念讲解
for 循环 两种循环用法比较* ~5 [( Q/ a/ C3 E. N: c
自动变量 auto variable6 E6 V. H) @% D$ K3 D* A8 ?2 m% M C 语言的发展变迁 Old Style C/C89/C99/GNU C# ?" p2 g0 F& w/ u
预处理过程 Pre-compile9 e6 K2 e B6 \/ ^% T2 S8 F 条件编译 8 @! y6 K: q+ {( Z# | # 和 ## 的用法 1 u5 [ }8 X Y8 ?( ~9 H
数组和结构体 数组名参数的传址调用 结构体参数的传值调用
类型声明 typedef 预处理和编译时 Pre-compile & Compiling time
C99 中结构体的扩展用法 驱动内核模块编写- M: M# e! e g( g; w( i: r
Lesson 12 Does your machine use little-endian? 判断机器存储是否小尾端" n: K. k* ]. W' ?K 基本概念讲解 8 j0 Z6 O* N/ a' N( v& }% V 8 Z2 F1 D1 H8 J
DEBUG 调试宏 9 {# Z" w5 ]2 t# T# a __func__, __FUNCTION__ __LINE__( ?% j) A9 {2 s6 H7 J args... 和 ##args 的用法' g& @; |: b* r6 @
0 I" b7 t1 J% L% e Lesson 6 Print 9*9 multiplication table 乘法表
while 循环 和 do-while 用法 5 A# u4 \: b5 I- O, H 比较和跳转指令 Compare and Jump Instruction do-while 比 while 有时更有用