本文由xiao__diao贡献
ppt文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。
程序设计基础(1)
计算机科学与工程学院
为什么要学习C语言? 为什么要学习C语言?
C语言是国际上广泛流行的计算机高级程序设计语言,既可以用 来写系统软件,也可以用来写应用软件。 著名的UNIX操作系统就是用C语言来编写的。C语言可以直接对 硬件进行操作,这使它在编写驱动程序和嵌入式应用方面独具 特,比如,c51可以对单片机编程,也可以运行于实时操作 系统。 国际上流行一种说法:Delphi程序员是聪明的程序员,C程序员 是真正的程序员。 C语言是面向对象语言C++的基础,学好了C语言,C++很容易上手。 面向对象程序设计已经成为了当今软件开发的主流。
课程概述
C 语言属于函数结构型程序设计语言。它兼有高级 语言和汇编语言的双重特性,是进行系统设计、维 护和二次程序设计的优良语种。 开设此课程的总目标是:通过讲授、讨论、完成作 业的过程,并通过一定
的程序编写、上机调试程序 的手段,全面地提高学生的计算机素质和程序设计 能力。 总目标细化为: 总目标细化为: 1)正确理解和使用 C语言的基本数据结构和语法。 2)运用结构化程序的思想去阅读和设计程序,为将 来“二次集成开发”的计算机技术打下基础。 3)完成结构化程序的编写、调试的基本训练,系统 地培养学生的动手能力。
课程基本要求 1)学会使用C语言编译系统(VC++6.0) 2)掌握程序设计的一般方法和设计思想 3)能针对实际问题编写程序和阅读程序 4)能独立上机运行程序和调试程序 课程的先期知识 学习该课程必须有一定的计算机知识和上机的 基本操作能力。
考试方法及要求
考核方式 总评成绩 =平时成绩(10%)+上机考试(20%) +期末考试 (70%) 平时成绩(10分) 选取四次作业成绩总评。 学生旷课一次扣3分,迟到及早退一次各扣1分。 旷课时数达到课程计划学时数四分之一或缺课时 数达到该门课程计划学时数三分之一,取消考试 资格。
2、上机考试(20分) 学期末采取统一上机考试的形式,学生应在规 定时间内完成指定程序的编写和调试。上机考 试评分包括:程序书写格式(10%),算法设计 (30%),完成时间(10%)和运行结果(50%) 考试范围为:C语言经典100题。 3、期末考试(70分) 期末考试为 笔试,闭卷,卷面总分100分,折 合70%。
第1章 C语言及程序设计概述
本章要求: 了解C语言的特点、C语言与其它高级语言相 比有什么异同; 了解C程序在PC机上的建立、编译和运行过 程
; 了解C语言程序设计思想的基本篇; 重点: 重点: ①C语言的主要特点; ②C语言在PC机上的运行过程; ③常用算法的应用
要求掌握 :
1.C程序的结构形式。(本章要知道C程序的 基本单位是函数) 1)C程序的结构(main() 函数和其他函数) 2)头文件、宏定义、函数的开始和结束标志 3)C语言的书写格式及风格 2.熟悉VC++6.0的上机操作。 3.掌握一些常用的算法; 1)累加、累乘的算法组成 2)最大、最小值的算法组成 3)求质数的算法组成
C语言的发展简史和特点 1.1 C语言的发展简史和特点
1.C语言的诞生与发展 .C语言的诞生与发展 .C (1)在C语言诞生以前,系统软件主要是用汇编语言编 写的。由于汇编语言程序依赖于计算机硬件,其可读 性和可移植性都很差;但一般的高级语言又难以实现 对计算机硬件的直接操作(这正是汇编语言的优势), 于是人们盼望有一种兼有汇编语言
和高级语言特性的 新语言。 (2)C语言是贝尔实验室于70年代初研制出来的,后 来又被多次改进,并出现了多种版本。80年代初,美 国国家标准化协会(ANSI),根据C语言问世以来各 种版本对C语言的发展和扩充,制定了ANSI C标准 (1989年再次做了修订)。 本课以ANSI C标准为基础进行介绍。 标准为基础进行介绍。 本课以 标准为基础进行介绍
(3)目前,在微机上广泛使用的C语言编译系统有 Microsoft C、Turbo C 、Borland C等。虽然它们的基 本部分都是相同的,但还是有一些差异, 所以请大 家注意自己所使用的C编译系统的特点和规定(参 阅相应的手册)。 本课选定的上机环境是Visual C ++ 6.0。 本课选定的上机环境是
2.C语言的特点 . 语言的特点 C语言同时具有汇编语言和高级语言的优势。 (1)语言简洁、紧凑,使用方便、灵活。 (2)运算符极其丰富。 (3)数据结构丰富。 (4)具有结构化的控制语句。 (5)语法不太严格,自由度大。 (6)可直接操纵硬件。 (7)生成的目标代码质量高,程序执行效率高。 (8)可移植性好(较之汇编语言)。
3. 在C语言中,除实现顺序、选择 循环 顺序、选择和循环 顺序 三种基本结构等的9条控制语句外,输 入输出操作均由标准库函数(不是C语 言的组成部分)来实现。 所以学习 语言,不仅要学习这 条控制 学习C语言 学习 语言,不仅要学习这9条控制 语句和各种运算符, 语句和各种运算符,而且要学习并掌握 常用标准库函数的使用。 常用标准库函数的使用
1.2 C语言程序的结构与书写规则
1.2.1 C语言程序的总体结构 一个完整的C语言程序,是由一个main()函数(又称
主 函数)和若干个其它函数结合而成的,或仅由一个 main()函数构成。 [例1.1] 仅由main()函数构成的C语言程序。 例 #include  void main() { printf(“This is a C program.\n”); } 程序运行结果: This is a C program.
例1.2.求两个数之和 #include  void main ( ) { int a, b, sum; /*定义变量*/ a=123; b=456; sum=a+b; printf("sum is %d\n", sum); }
例1.3.求三个数中较大者。 #include  void main( ) /* 主函数*/ { int max(int x,int y); int a, b, c; //定义变量 scanf(“%d, %d”, &a, &b); //输入变量a和b的值 c=max(a, b); //调用max函数,将得到的值赋给c printf(“max=%d”,c;) //输出c的值 }
int max (x, y) int x, y; //对形参x、y作类型定义 { int z; //max函用到的变量z,也要加以定义 z=y; if (x>y) z=x; return (z); //将z的值通过max带回调用处 }
通过分析,初步看到 通过分析,初步看到: 1. C程序全部由一个一个的函数构成。至少有一个主函 数main ( ), 其它函数可被主函数调用或相互调用。 其它函数可为C 函数库中函数,也可为自己编的函
数。 上述特点称为程序的模块化. 一个函数由两部分组成: 2.一个函数由两部分组成: (1)函数的说明部分 函数的说明部分。包括函数名、函数类型、函数 函数的说明部分 属性、函数参数(形参)名、形式参数类型。 例如例1.3中的max函数的说明部分为。 int max ( int x, inty) 函数类型 函数名 形参类型 函数参数 一个函数名后面必须跟一对圆括弧,函数参数可以没 有,如main( )。
(2)函数体 函数体,即函数说明部分下面的大括弧{…} 函数体 内的部分。如果一个函数内有多个大括弧,则 最外层的一对{ }为函数体的范围。 函数体一般包括: ①变量定义 变量定义。如例1.3中main函数中的“int 变量定义 a,b,c”。函数体中的变量定义语句,必须在所 有可执行语句之前。 ②执行部分 执行部分。由若干个语句组成。在某些情 执行部分 况下也可以没有变量定义部分(例如例1.1)。 甚至可以既无变量定义也无执行部分。
如:
dump() { } 它是一个空函数 空函数,什么也下干,但这是合 空函数 法的。
3. 函数的执行一定从main ( )开始。尽管main ( )函数位置可自由。 4. C语言的输入 /输出均以函数形式出现。 scanf( ), printf( ).
1.2.2 源程序书写格式
1.所有语句都必须以分号“;”结束,函数的最后一个语 句也不例外。 2.程序行的书写格式自由,既允许1行内写几条语句,也 允许1条语句分写在几行上。如果某条语句很长,一般 需要将其分写在几行上。 3.允许使用注释。 C语言的注释格式为: /* …… */或// …… 。 (1) “/*”和“*/” 必须成对使用,且“/”和“*”、以及 “*”
和“/”之间不能有空格,否则都出错。 技巧:为避免遗漏必须配对使用的符号,例如注释符号、 技巧 函数体的起止标识符(花括号)、圆括号等等,在输入 时,可连续输入这些起止标识符,然后再在其中进行插 入来完成内容的编辑。在起止标识符嵌套时,以及相距 较远时,这样做更有必要。
(2)注释的位置,可以单占1行,也可以跟 在语句的后面。 (3)如果1行写不下,可另起1行继续写。 (4)注释中允许使用汉字。在非中文操作系 统下,看到的是一串乱码,但不影响程序 运行。
C语言的编程风格 1.2.3 C语言的编程风格
不同的源代码的美观程度和编程风格都不尽 一样,有些代码,都令人看起来赏心悦目, 而其它有些程序员写的程序则让人看起来直 皱眉头,写作干净美观的代码,不仅仅使得 代码更容易阅读,还使得代码能够成为一件 艺术品,在以后的编辑和维护中都更加方便, 直观。
Microsoft Word 文档
Tips: 1、通常使用小写英文字母; 2、不存在程序行概念; 3、充分利用注释功能,增加可读性; 4、程序中的各种语句组按其功能和嵌套关系缩进 编排,使程序的模块和复合关系明显; 5、注意花括号对齐和配对; 6、适当空格和空行可使程序更加清晰 。
C语言的语句和关键字 1.3 C语言的语句和关键字
1.3.1 C语言的语句 语言的语句 与其它高级语言一样,C语言也是利用函数 体中的可执行语句,向计算机系统发出操作 命令。按照语句功能或构成的不同,可将C 语言的语句分为五类。 1.控制语句 控制语句 控制语句完成一定的控制功能。C语言只有 9条控制语句,又可细分为三种: ( 1)选择结构控制语句 if()~else~, switch()~ (2)循环结构控制语句 do ~ while(), for() ~ , while() ~ , break, continue
(3)其它控制语句
goto, return 2. 函数调用语句 函数调用语句由一次函数调用加一个分号(语句结束 标志)构成。 例如,printf("This is a C function statement."); 3. 表达式语句 表达式语句由表达式后加一个分号构成。最典型的表达 式语句是,在赋值表达式后加一个分号构成的赋值语 句。 例如,“num=5 ”是一个赋值表达式,而“num=5;”却 是一个赋值语句。
4. 空语句 空语句仅由一个分号构成。显然,空语句什么操作也 不执行。 例如,下面就是一个空语句: ; 5. 复合语句 复合语句是由大括号括起来的一组(也可以是1条) 语句构成。例如: main() { …… {……} /*复合语句。注意:右括号后不需要分 号。*/ …… }
复合语句的性质:
(1)在语法上和单一语句相同,即单一语句 可以出现的地方,也可以使用复
合语句。 (2)复合语句可以嵌套,即复合语句中也可 出现复合语句。
1.3.2 关键字
C语言的关键字共有32个,根据关键字的作用, 可分其为数据类型关键字、控制语句关键字、 存储类型关键字和其它关键字四类。 (1)数据类型关键字(12个):char, double, enum, float, int, long, short, signed, struct, union, unsigned, void (2)控制语句关键字(12个):break, case, continue, default, do, else, for, goto, if, return, switch, while (3)存储类型关键字(4个):auto, extern, register, static ( 4 ) 其 它 关 键 字 ( 4 个 ) : const, sizeof, typedef, volatile
运行C 1.4 运行C程序的步骤和方法 一、运行C程序的步骤 运行C 运行 ?上机输入与编辑源程序 ?对源程序进行编译 ?与库函数连接 ?运行目标程序
运行C 1.4 运行C程序的步骤和方法 上机运行C 二、上机运行C程序的方法 运行
目前使用的大多数C编译系统都是集成环境(IDE)的。 可以用不同的编译系统对C程序进行操作 常用的有Turbo C 2.0、Turbo C++ 3.0、Visual C++等 Visual C++6.0环境下运行C程序的步骤和方法 参见实验指导书第二章。
1.5 算法简介
1.5.1 算法的概念 算法:程序的操作步骤 程序 = 数据结构 + 算法 (沃思 Nikiklaus Wirth) 程序 = 算法+ 数据结构 + 程序设计方法 + 语言 工具和环境 算法分为两大类:数值运算算法 非数值运 算算法 数值运算算法:求数值解;通过运算得出一 个具体值 数值运算一般有现成的模型,算法较成熟。 非数值运算算法:用于事务管理,如图书检索、 管理
算法的特性
输入 输出 有穷性确定性 具有0个或多个输入的外界量, 具有 个或多个输入的外界量, 个或多个输入的外界量 是算法开始前对算法给出的最初量 至少产生一个输出(结果),是同输入有某种关系的量 至少产生一个输出(结果),是同输入有某种关系的量 ), 一个算法应包含有穷的步骤,而不能是无限的; 一个算法应包含有穷的步骤,而不能是无限的; 有穷的、 有穷的、合理的计算时间 每条指令
汇编语言要什么基础的含义都必须明确, 每条指令的含义都必须明确,无二义性 在任何条件下,算法只有唯一的一条执行路径 在任何条件下 算法只有唯一的一条执行路径 对于相同的输入只能得出相同的输出. 对于相同的输入只能得出相同的输出 算法中的每一个步骤都应当有效地执行, 算法中的每一个步骤都应当有效地执行,并得到确定的结 例如, 是不能有效执行的。 果。例如,若b=0,执行 ,执行a/b是不能有效执行的。 是不能有效执行的
有效性
算法与程序
对任何输入, 对任何输入,算法在执行了有限步骤后一定要终止 算
法必须在有限时间内完成 程序不一定满足有穷性
操作系统:系统不遭破坏,就不会停止, 操作系统:系统不遭破坏,就不会停止,处于循环等 待
程序中的指令必须是机器可执行的 算法可以用自然语言、 算法可以用自然语言、数学语言或约定的符号语言来 描述 算法若用机器可执行的语言来书写, 算法若用机器可执行的语言来书写,就是一个程序
算法举例:求5!
设p为被乘数,i为乘数,用循环法求结果。 为被乘数, 为乘数,用循环法求结果。 算法如下: s1: 1=>p
s2: 2=>i : s3: s4: s5: p*i=>P i+1 i+1=>i 如果i<=5 返回s 如果i<=5,返回s3,否则,结束 i<= 否则,
算法举例:对一个大于或等于3的正整数,判断它是不 是素数。 方法: 作为被除数, 方法:将n作为被除数,以2到(n-1)各个整数轮流 作为被除数 到 ) 作为除数,如果都不能被整除,则n为素数。 作为除数,如果都不能被整除, 为素数。 为素数 算法如下:
输入n 输入 2=>i(i作为除数) 作为除数) ( 作为除数 n被i除,得余数 被 除 得余数r 表示n能被 整除, 不是素数, 若r=0,表示 能被 整除,则输出“n不是素数,算法结束 表示 能被i整除 则输出“ 不是素数 否则转到s5; 否则转到 ; S5: i+1=>i S6: 继续执行, 是素数” 算法结束。 若i<=n-1,转s3继续执行,否则输出“n是素数”,算法结束。 转 继续执行 否则输出“ 是素数 S1: S2: S3: S4:
怎样表示一个算法
用自然语言描述算法
例如:张先生对李先生说,他的孩子考上了大学。 例如:张先生对李先生说,他的孩子考上了大学。 文字冗长,容易出现歧义。除了很简单的问题以外, 文字冗长,容易出现歧义。除了很简单的问题以
外,一般不 用此法。 用此法。
用流程图描述算法
用一些图框表示各种操作, 用一些图框表示各种操作,ANSI规定了一些常用的流程图符 规定了一些常用的流程图符 号。
起止框
输入输出框
判别框
处理框
流程线 连接点
注释框
例:对一个大于或等于 3的正整数,判断它是 不是一个素数
开始 输入n 2=>i
算法如下:
S1: S2: S3: S4: S5: S6: 束。 输入n 输入 n/i的余数=>r 2=>i(i作为除数) 作为除数) ( 作为除数 Y r=0? n被i除 得余数r n被i除,得余数r 表示n能被 整除, N 不是素数, 若r=0,表示 能被 整除,则输出“n不是素数,算法结束 表示 能被i整除 则输出“ 不是素数 打印“n不是素数” i+1=>i 否则转到s5; 否则转到 ; i+1=>i Y 继续执行, i<n? 是素数” 若i<=n-1,转s3继续执行,否则输出“n是素数”,算法结 转 继续执行 否则输出“ 是素数
N 打印“n是

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。