1 / 185

一、教学对象 计算机科学与技术系新生 ( 第二学期) 二、教学目标 程序设计的重要性 程序设计的基本概念与基本方法 编程解题的思路与典型方法

一、教学对象 计算机科学与技术系新生 ( 第二学期) 二、教学目标 程序设计的重要性 程序设计的基本概念与基本方法 编程解题的思路与典型方法 数学模型简介 算法及算法步骤 程序结构与相应语句 编码与上机调试. 绪论. 三、教学重点 1. 程序设计的基本概念,基本方法; 2. 在 C 语言的环境下,学会如何针对问题进行分析,得出数学模型,理出算法并编程实现; 3. 有条有理有根有据的编程实践; 4. 养成良好的编程风格与习惯;

leena
Download Presentation

一、教学对象 计算机科学与技术系新生 ( 第二学期) 二、教学目标 程序设计的重要性 程序设计的基本概念与基本方法 编程解题的思路与典型方法

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 一、教学对象 • 计算机科学与技术系新生(第二学期) • 二、教学目标 • 程序设计的重要性 • 程序设计的基本概念与基本方法 • 编程解题的思路与典型方法 • 数学模型简介 • 算法及算法步骤 • 程序结构与相应语句 • 编码与上机调试 • 绪论

  2. 三、教学重点 • 1. 程序设计的基本概念,基本方法; • 2.在 C语言的环境下,学会如何针对问题进行分析,得出数学模型,理出算法并编程实现; • 3.有条有理有根有据的编程实践; • 4.养成良好的编程风格与习惯; • 5.重在思维方法的学习,鼓励创新。 • 绪论

  3. 四、指导思想1. 立足改革,以培养高素质有创造精神的人才为这门课的教学目标。2. 以学生为中心,采用与现实生活贴切和具有趣味性的实例进行讲解,有利于调动学生学习的积极性,引导学生主动学习。 • 3. 强化实践,这门课主张程序设计是高强度的脑力劳动,不是听会的、也不是看会的,而是练会的。引导学生在解题编程的实践中探索其中带规律性的认识。将感性认识升华到理性高度。 • 绪论

  4. 五、学习方法 1.动手动脑,理论指导下的实践 有条有理的实践。 2.在编写大量程序之后,才能感到运用自如。 • 绪论

  5. 六、教学内容安排 1. 简单C程序设计; 2. 分支结构程序设计; 3. 循环结构程序设计; 4. 数组; 5. 函数; 6. 递归及其实现方法 7. 指针; 8. 结构体与链表。 • 绪论

  6. 1.1 认识C语言程序 1.程序实例 #include <stdio.h> //预编译命令,将标准输入输出函数 //作为头文件包扩到用户源文件中 #include <math.h> //预编译命令,将系统提供的数学函数 //作为头文件包扩到用户源文件中 main( ) //主函数,名为main, { //函数体.开始 float a,b,c; //声明部分.定义变量类型 b=30.0; //执行部分.赋值语句 a=sin(b*3.14159/180); //执行部分.赋值语句 printf(“%f\n”,a); //执行部分.输出语句 } //函数体.结束 第一讲 简单的C程序设计

  7. 1.2 实例总结 • 1.C程序结构 第一讲 简单的C程序设计 预编译命令 主函数 main( ) { 函数体开始 声明部分 执行部分 } 函数体结束

  8. 2.变量的类型 • 整型:int 长整型:long • 浮点型:float • 双精度型:double • 字符型:char • 用户自定义类型 第一讲 简单的C程序设计

  9. 3.声明的作用 • 为变量分配内存单元,变量名作为内存单元的符号地址,这件事是在程序编译链接时完成的。 • 4. 变量 • 其值可以改变的量,是内存单元的符号地址。 • 通过符号b可以找到相应的存储单元地址,假设为1000。 • 语句 • b=30.0; • 是将值30.0存放在地址为1000的存储单元。 第一讲 简单的C程序设计

  10. 5.对变量的赋值 • 赋值符号“=” • <变量>=<表达式> • b = 30.0; // 读作将表达式的值30.0赋给变量b • a=sin(b*3.14159/180); • // 读作将表达式(正弦函数)的值赋给变量a 第一讲 简单的C程序设计

  11. 6.变量赋值特点 • (1)先定义,后使用 • int d,e,f; 定义三个变量为整数类型 • 如未定义,则在编译时被查出,认为非法 • (2)变量未被赋值前,值为未知 • (3)对变量赋值过程是“覆盖”过程,用新值去替换旧 • (4)读出变量的值,该变量保持不变 • (5)参与表达式运算的所有变量都保持原来的值不变 第一讲 简单的C程序设计

  12. -123497 234316 0 7 234316 0 7 7 0 7 7 14 8 7 14 • 变量赋值过程 • d e f • 未赋值前 • 执行d=7 • 执行 e=d • 执行 f=d+e • 执行 d=d+1 000 第一讲 简单的C程序设计

  13. 7. 输出语句 • printf函数(格式输出函数) • 一般形式为 • printf(参数1,参数2,参数3,……,参数n) • 其中参数1——格式控制 • 参数2,参数3,……,参数n——输出表列 • 举例: float a; • int b; • a = 85.56; • b = 100; • printf("%f %d", a, b); 第一讲 简单的C程序设计

  14. 格式控制是用双引号括起来的字符串,称“转换控制字符串”格式控制是用双引号括起来的字符串,称“转换控制字符串” • %f —— 第一个输出表列的格式说明,以小数形式输出单、双精度实数,隐含输出6位小数 • %d —— 第二个输出表列的格式说明,以带有符号的十进制形式输出整数(正数不输出符号) • 显然,%f是控制实数a的;%d是控制整数b的 第一讲 简单的C程序设计

  15. 为了醒目,格式控制项中除格式说明之外可以有为了醒目,格式控制项中除格式说明之外可以有 • 普通字符 • 例: printf(“a=%f b=%d", a, b); • 输出结果为: • a=85.560000 b=100 • 换行符号 • 例: printf(“a=%f\nb=%d”,a,b); • 输出结果为: • a=85.560000 • b=100 • 域宽和精度 • 例:printf(”%5.3f”,a); 第一讲 简单的C程序设计

  16. 8. 数学函数 • sin(x) x为弧度,double x,double sin(x) • cos(x) cos(x) • exp(x) ex • log(x) logex • log10(x) log10x • fabs(x) x • fmod(x,y) 整除x/y的余数 • floor(x) 求不大于x的最大整数 • pow(x, y) xy • sqrt(x) x1/2 第一讲 简单的C程序设计

  17. 9. 算术运算符 • +加 • -减 • * 乘 • / 除 • % 模(取余数) 第一讲 简单的C程序设计

  18. 1.3 作业 第一讲 简单的C程序设计

  19. 我们在日常生活中经常需要处理具有两个分支的问题,例我们在日常生活中经常需要处理具有两个分支的问题,例 • 如,如果明天下雨,则在教室内组织活动,否则去野游。 • 在C语言中,这类问题需要使用if语句解决,而判断操 • 作通常使用关系运算符。 • 关系运算符和关系表达式 • > 大于 • < 小于 • >= 大于等于 • <= 小于等于 • == 等于 • != 不等于 第二讲 分支结构

  20. 2.1 掌握if语句的使用方法 • 【实例】编写程序,判断输入的整数是否为6,若是,显示“Right!”和“Great!”,否则显示“Wrong!”和“Sorry!”。 • 1.编程思路: • 要显示“Right!”和“Great!”,应执行两条语句“printf(”Right!\n“);”和“printf(”Great!\n“);”,要显示“Wrong!”和“Sorry!”,执行两条语句“printf(”Wrong! \n“);”和“printf(”Sorry!\n“);”。本题需要根据所输入的值(假设赋给a)是否为6来选择执行相应的两条语句。 • 在C语言中判断a中的值是否为6,使用“if(a==6)”形式。 第二讲 分支结构

  21. 开始 输入a值 真 a==6 假 显示“Right!” 显示“Wrong!” 显示“Great!” 显示“Sorry!” 结束 • 本实例的流程图如图所示 第二讲 分支结构

  22. 输入a的值 a==6 显示“Right!” 显示“Wrong!” 显示“Great!” 显示“Sorry! ” • 本实例的N-S流程图如图所示 第二讲 分支结构

  23. 2.程序代码: • #include <stdio.h> • main() • { int a=0; • printf("Input a:"); scanf("%d",&a); • printf("a=%d\n",a); • if(a==6) /* if语句开始 */ • {printf("Right!\n"); • printf("Great!\n"); } • else • {printf("Wrong!\n"); • printf("Sorry!\n");} /* if语句结束 */ • } 第二讲 分支结构

  24. 3.运行结果: • 第1次运行结果: • Input a:6<回车> • a=6 • Right! • Great! • 第2次运行结果: • Input a:5<回车> • a=5 • Wrong! • Sorry! 第二讲 分支结构

  25. 4.归纳分析: • (1)程序中的“a==6”是关系表达式。 • 用关系运算符把两个C语言表达式连接起来的表达式称为关系表达式。关系运算的判断结果只有“真”或“假”两种可能,关系成立时为“真”,不成立时为“假”。 • 关系表达式的值只能是1或0,当关系运算的判断结果为“真”时,关系表达式的值为 1,否则,关系表达式的值为0。例如,当a的值为6时,关系表达式“a==6”的值为1,当a的值为5时,关系表达式“a==6”的值为0。 第二讲 分支结构

  26. (2)程序中的“if(a==6)”是if语句的开始部分。(2)程序中的“if(a==6)”是if语句的开始部分。 • 本例题需要根据“a==6”是否为“真”来选择执行不同的两个输出语句。处理两个分支的问题时常使用if语句。if语句根据其后面括号中表达式的结果,选择执行某个分支程序段。 • if语句的一般形式如下: • if(表达式) • { 语句组1 } • else • { 语句组2 } • “if”和“else”是关键字。当表达式结果为“真”(即不等于0)时,执行语句组1,表达式结果为“假”(即等于0)时,执行语句组2。在语句组1和语句组2中只能选择执行一组,而后执行整个if语句后面的语句。 第二讲 分支结构

  27. (3) C语言中允许程序中的if语句不带else部分。 • 省略else的if语句一般形式如下: • if(表达式) • {语句组} • 此if语句的执行过程: • 当表达式结果为“真”时,执行语句组,表达式结果为“假”时,不处理。 第二讲 分支结构

  28. 2.2学会使用逻辑运算符 • 处理问题时经常需要同时判断多个条件。例如,在某学生数学和英语成绩中判断是否至少有一门课程是不及格。这时使用逻辑运算符。 • 逻辑运算符共有三种: • && 逻辑与 • || 逻辑或 • ! 逻辑非 • 这3个运算符按高到低的优先级顺序是“!”、“&&”、“||” • 一般而言,单目运算符优先级较高,赋值运算符优先级低。 • 算术运算符优先级较高,关系和逻辑运算符优先级较低。 第二讲 分支结构

  29. 输入体重w的值 w >=50 && w<=55 显示“Ok” 显示“No” • 【实例】编写程序,判断某人的体重是否在50公斤至55公斤之间,若在此范围之内,显示“Ok”,否则显示“No”。 • 1.编程思路: • 先将体重存放在变量w中,要使w的值在50至55范围内,应同时满足“w>=50”和“w<=55”。在C语言中用“w>=50 && w<=55”表示w的值是否同时满足“w>=50”和“w<=55”。 第二讲 分支结构

  30. 2.程序代码: • #include <stdio.h> • main() • { float w=0.0; • printf("Input w:"); • scanf("%f",&w); • printf("w=%.1f\n",w); • if(w>=50&&w<=55) • printf("Ok\n"); • else • printf("No\n"); • } 第二讲 分支结构

  31. 3.运行结果: • 第1次运行结果: • Input w:53.5<回车> • w=53.5 • Ok • 第2次运行结果: • Input w:60.7<回车> • w=60.7 • No 第二讲 分支结构

  32. 4.归纳分析: • 程序中的“w>=50 && w<=55”是逻辑表达式。 • 用逻辑运算符把两个C语言表达式连接起来的表达式称为逻辑表达式。逻辑运算的判断结果也只有“真”或“假”两种可能,逻辑运算的规则如下: • 逻辑与:1&&1=1,其它为0 • 逻辑或:0||0=0,其它为1 • 逻辑非:!0为1,!1为0,!2为0,!a为0(当a不为0时) • 逻辑表达式的值也只能是1或0,当逻辑运算的判断结果为“真”时,逻辑表达式的值为 1,否则,逻辑表达式的值为0。 第二讲 分支结构

  33. 2.3 学会使用嵌套的if语句 • 有些问题必须在满足某种条件后,再继续分支处理。例如,某单位男职工60岁退休,女职工55岁退休,为了判断某职工是否应退休,首先要判断该职工是男职工还是女职工,然后再根据职工性别判断年龄是否到规定年龄。这时需要使用嵌套的if语句。 第二讲 分支结构

  34. 【实例】编写程序,判断若输入的体重大于0且小于200,再判断该体重是否在50公斤至55公斤之间,若在此范围之内,显示“Ok”,否则显示“No”;若所输入的体重不大于0或不小于200,则显示“Data over!”。 • 1.编程思路: • 在上实例中,输入w的值后立刻用if语句实现选择执行“printf(“Ok\n");”或“printf("No\n");”的功能,但由于本题目是在w的值大于0且小于200的情况下,才能执行此if语句,所以在此if语句外面还需要套另一个if语句。 第二讲 分支结构

  35. 开始 输入w值 真 w>0且w<200 假 真 w≥50且w≤55 假 显示“Data over!” 显示“Ok” 显示“No” 结束 • 本实例的程序流程图: • 课堂作业:请根据此图画出其N-S流程图。 第二讲 分支结构

  36. 2.程序代码: • main() • { float w=0.0; • printf("Input w:"); • scanf("%f",&w); • printf("w=%.1f\n",w); • if(w>0 && w<200) /* 外嵌if语句开始 */ • if(w>=50 w<=55) /* 内嵌if语句开始 */ • printf(“Ok\n"); • else • printf("No\n");/* 内嵌if语句结束 */ • else • printf("Data over!\n");/* 外嵌if语句结束 */ • } 第二讲 分支结构

  37. 3.运行结果: • 第1次运行结果: • Input w:53.5<回车> • w=53.5 • Ok • 第2次运行结果: • Input w:60.7<回车> • w=60.7 • No • 第3次运行结果: • Input w:201.7<回车> • w=201.7 • Data over! 第二讲 分支结构

  38. 4.归纳分析: • (1)本程序在一个if语句中包含了另一个if语句。 • 在if语句的语句组1或语句组2中又包含另一个分支结构的if语句称为嵌套的if语句。 • (2)本程序中出现了两次else。 • C语法规定,在if语句中,若多次出现else,则每一个else总是与前面最近的if配对,所以本例题中第一个else与内嵌的if配对,第二个else与最上面的if配对。程序中由于采用了缩进格式,if与else的配对关系一目了然。 第二讲 分支结构

  39. 0 (x<0) x+2 (0≤x<5) y= x2-3 (5≤x<10) 10 (x≥10) • 2.4学会使用if-else if形式的嵌套if语句 • 【实例】编写程序,求下面分段函数的值,要求x的值从键盘输入。 第二讲 分支结构

  40. 开始 输入x值 真 x<0 假 y=0 真 x<5 假 真 x<10 假 y=x+2 y=x2-3 y=10 显示x和y的值 结束 • 1.编程思路: 第二讲 分支结构

  41. 2.程序代码: • #include <stdio.h> • main() • { float x=0,y=0; • printf("Input x:"); • scanf("%f",&x); • if(x<0) y=0; • else • if(x<5) y=x+2; • else • if(x<10) y=x*x-3; • else y=10; • printf("x=%f,y=%f\n",x,y); • } 第二讲 分支结构

  42. 2.5 switch语句 • 在日常生活中经常遇到菜单选择操作,例如,用ATM自动取款机取钱时,从菜单中可以选择语种、取款额;用自动服务系统给手机充值时,可以选择查余额还是充值,对本机充值还是对其他号码充值等。这些问题一般使用switch语句解决。 • 总之,这些问题都是多分支情况。 第二讲 分支结构

  43. 【实例】编写程序,在如下菜单中选择一个运算类型,并进行相应的运算。如选择了加法,则进行求和运算。【实例】编写程序,在如下菜单中选择一个运算类型,并进行相应的运算。如选择了加法,则进行求和运算。 • Please choose • + : addition • - : subtraction • * : multiplication • / : division 第二讲 分支结构

  44. 1.程序代码: • #include <stdio.h> • main() • {float a=5.0,b=2.0,c=0.0; • char sym='\0'; • printf("Please choose\n"); • printf("+ : addition\n"); • printf("- : subtraction\n"); • printf("* : multiplication\n"); • printf("/ : division\n"); • sym=getchar(); • printf("%f%c%f=",a,sym,b); /* 显示算式 */ 第二讲 分支结构

  45. switch(sym) /* 计算算式 */ • {case '+': c=a+b; break; • case '-': c=a-b; break; • case '*': c=a*b; break; • case '/': c=a/b; break; • } • printf("%f\n",c); /* 显示结果 */ • } 第二讲 分支结构

  46. 2.运行结果: • Please choose • + : addition • - : subtraction • * : multiplication • / : division • /<回车> • 5.000000/2.000000=2.500000 第二讲 分支结构

  47. 3.归纳分析: • switch语句的一般形式为: • switch(表达式) • { case 表达式1: 语句组1 break; • case 表达式2: 语句组2 break; • …… • case 表达式n: 语句组n break; • default: 语句组n+1 break; • } • 其中switch、case、default和break是关键字,所有表达式均为整型或字符型。在表达式1、表达式2、…、表达式n中只能出现常量和运算符,而且每个表达式的值不能相等。 第二讲 分支结构

  48. 2.6 条件运算符及其表达式 • C语言中条件运算符由“?”和“:”组成,例如“a>b ? a : b”。 • 条件表达式的一般形式为: • 表达式1 ?表达式2 :表达式3 • 当表达式1的值为非0时,以表达式2的值作为条件表达式的值,否则,以表达式3的值作为条件表达式的值。例如,当a>b成立时,条件表达式“a>b ? a : b”的值为a中的值,否则为b中的值。 • 使用条件表达式也可以实现分支结构。 第二讲 分支结构

  49. 课堂讨论:谁做的好事? • 忻州师院有四位同学中的一位做了好事,不留名,表扬信来了之后,校长问这四位是谁做的好事。 A说:不是我。 B说:是C。 C说:是D。 D说:C胡说。 已知三个人说的是真话,一个人说的是假话。现在要根据这些信息,找出做了好事的人。画出N-S流程图并写出程序。 第二讲 分支结构

  50. 1、编程思路: • 如何找到该人,一定是“先假设该人是做好事者,然后到每句话中去测试看有几句是真话”。“有三句是真话就确定是该人,否则换下一人再试”。 • 比如,先假定是A同学,让 thisman='A'; • 代入到四句话中 • A说:thisman!=‘A’; ‘A’!=‘A’假,值为0。 • B说:thisman==‘C’; ‘A’==‘C’假,值为0。 • C说:thisman==‘D’; ‘A’==‘D’假,值为0。 • D说:thisman!=‘D’; ‘A’!=‘D’真,值为1。 • 显然,不是'A'做的好事(四个关系表达式值的和为1) 第二讲 分支结构

More Related