程序设计基础教案_第1页
程序设计基础教案_第2页
程序设计基础教案_第3页
程序设计基础教案_第4页
程序设计基础教案_第5页
已阅读5页,还剩100页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

说明

教案是除课件之外,重要的教学资料,甚至比课件更为

重要。在教学管理中,每个学校对教案的要求是相当严格的,

我院也是一样,每学期结束后,都要求教师必须打印教案并

上交。而备课要占用大量的时间和精力,为了让广大使用该

教材的教师从繁重的书写教案中解脱出来,现将本人几年前

的教案资料贡献出来,希望大家从中受益。

需要指出的是,该教案是按我院3年前教学要求书写的,

可能与各个学校的格式不尽相同,但大体差别应该不大,希

望对大家有所帮助。

武春岭

《程序设计基础》教案

计应51、52、计控51、

信管、、网络

授课班级:515255

周学时:4节

开课时间:2005-9-19

授课教师:武春岭

部n:计算机系信息安全教研室

重庆电子工程职业学院

课题:第一章c语言概述

教学目标:通过本次讲授,使学生了解C语言产生的背景及历程,掌握C语言的

基本特点。

教学重点:C语言及C程序的特点。

教法:讲授法

所用课时:2节

授课班级:计应51、52、计控51、网络55信管51、52

授课时间919(5-6节)9.19(7-8节)9.20(1-2节)9.20(7-8节)

教学过程:

△活动:

1上互联网,在统一资源定位器URL(网址栏)里输入www.google,com,进入该

搜索网站,然后在google搜索中输入:C语言程序开发招聘,然后点击“google

搜索”按钮,通过搜索信息看一下C语言目前是否还有实用价值,其招聘的“C

开发”主要从事何种类型的开发?通过这个活动,你觉得C语言程序设计还有用

吗?还值得学吗?

2本书229页是国内一流的信息安全产品集成生产厂商卫士通公司2004年的招聘

启事(下载于2004年7月26II),仔细阅读该招聘启事,想一想“学C的感觉”,

你觉得计算机类/信息类专业不学好C语言行吗?好好思考一下如何学习才能便

于将来自己的专业扩展和就业扩展。

一、C语言出现的历史背景

△讲述最初的汇编语言编写系统软件的局限性,引出C语言应孕而生的必然

性。

C语言大致历程为:

ALGOL60——►CPL——>BCPL——►B---------►C

△1973年K.Thompson和D.M.Ritchie用C语言改写了UNIX90%以上,使UNIX

与C相互促进,共同发展。

二、C语言程序的特点

△在没讲C语言程序的特点之前,先看几个小小的C程序:

例1.#includevstdio.h>/*头文件包含*/

voidmain()/*main函数是C语言固定的主函数,不能少*/

函数体

printf("HelloWorld!");/*输H;函数*/

_}/*注意花括号的配对出现*/

每一个C程序都必须有main函数,否则,程序将无法运行,同学们记住,今后

要编程序时,可先搭建主函数框架。

例2.求3个数的平均值(a=3.5、b=4.6、c=7.9)»

floataverager(floatxfoaly^oatz)/*定义一个求三个平均值的函数*/

floataver;

x,y,z三个变量为形式

aver=(x+y+z)/3;/*求平均*/

参数,都为实型

return(aver);/*返回到主函数的调用处*/__「「'

)

main()

{floata,b,c,ave;/*定义几个变量为实型*/

a=3.5;b=4.6;c=7.9;/*给实际参数变量赋值*/

ave=averager(a,b,c);/*调用求平均函数averager*/

printf("averager=%f',ave);/*按实数输出格式%f输出ave的值*/

思考:若求三个任意数的平均值怎么办?

我们可以利用键盘输入函数scanf()来实现!只要我们修改一下main函数

就行了。代码如下:

main()

{inta,b,c;

floatave;

printf(/zinputa,b,c:");

scanfC%d%d%dz/,&a,&b,&c);/*键盘输入函数*/

ave=average(a,b,c);

printf("average=%f”,ave);

)

其中,scanf函数双引号内的“%d%d%d”是分别说明变量a、b、c按整型格

式输入,“&”表示地址符号,运用输入函数输入变量值时,必须在变量前加地址

符号,这样才能保证输入的值正确存入相应的变量所在内存单元。有兴趣的学习

者可以在计算机上运行一下,看效果如何。

△自定义函数averager由编程者命名。命名时,只要符合C语言的语法要求,都

是可以的,在此为了见名思义,故取名为averager。

由上可总结出C语言程序的一般特点为:

(1)C语言是由函数构成的,一个C源程序至少包含一个main函数;

(2)一个C程序总是从main函数开始开始执行的而不论main函数在程序中的位

置;

(3)C语言书写格式自由,一行内可写几个语句;

(4)每个语句和数据定义的最后一个语句必须有一个分号;

(5)C语言本身没有输入输出语句,输入输出是由函数完成的:

(6)可以用“/*”和“*/”对C程序中的任何部分作注释;

说明:C程序的基本单位是函数,一个源程序由若干函数组成,但至少包括一个

main函数,且main函数的位置不限。

三、C程序的开发过程

△见课本第6页。

四、技能测试:

△见课本第8页。

作业:

P91.4已知三角形的三边长分别为:3、4、5,试编程求其面积。

课题:实验(熟悉如rborC语言的编译环境)

教学目标:通过本次实验使学生熟练掌握C的编译环境,学会一般程

序的调试方法。

教学重点:掌握C程序的编辑、调试和运行方法。

教法:试验法。

授课班级:计应51、52、计控51、网络55信管51、52

授课时间:

试验内容:

一、演示实验内容

1.程序的编辑方法

①打开file菜单(按ALT+F快捷键或按F10功能键,然后通过移动光标键来选file

菜单);

②通过光标键选择new选项,如下图:

③在编辑区域内,输入一个小程序,如下图所示:

2.保存程序

①打开file菜单,选择WriteTo选项,便出现如下情况:

②在上图所示的NewName对话框中,输入自己程序的保存路径及文件名,假如

程序名取为P1,将其保存在D盘的MYFILE月受下,可像如下输入:

EditRunCompileProjectOptior

NewName

回车后,将会将你所输入的程序保存到指定的路径下。

3.运行程序

打开Run菜单,选择Run选项,或者直接用快捷方式Ctrl+F9执行。

若程序无错,则会显示编译成功画面,否则会显示出错信息,可排错后再执

行。

4.显示运行结果

程序正确编译后,并不能出现运行结果,若要看运行结果,可打开Run菜单,

选择UserScreen选项,或者直接用快捷键AET+F5,如下所示:

CompileFroject

RunCtrl-F9

ProgramresetCti*l-F2

GotocursorF4

TraceintoF7

Stepouer________F8

UserscreenAlt-F5

结果如下:

若返回程序编辑状态可,按任意键。

说明:①对同一个程序来讲,若修改后再保存,则用File菜单的Save选项即

可,不要再用Writeto项;②若想再编辑调试其它程序,千万不要接着第一个程

序往下输,可重新选File菜单的New选项,从而开始新程序的编辑。

二、学生练习

△活动:

1.学生完成课本第9页练习1.4的程序编辑及其调试运行;

2.观察学生的练习过程;

3.根据学生练习中出现的问题逐进行演示纠正;

4.学生自行消化巩固C编译器的应用。

三、小结:

1.熟悉C程序的编辑运行环境;

2.掌握一个完整C程序的运行调试方法。

课题:第2章数据描述

教学目标:通过本次讲授,使学生了解C语言的数据类型及标识符的概念和用法。

教学重点:常量和变量的理解。

教法:讲授法

所用课时:2节

授课班级:计应51、52、计控51、网络55信管51、52

授课时间:

教学过程:

活动:

1.找学生写出main。的框架、printf()和scanf();

2.评作业:求三角形的血枳。

3.让学生讨论什么是数据?

•C语言的数据类型

△见P11:

整型

字符型

基本类型单精度型

实型(浮点型)

双精度型

枚举类型

数据类型《

数组类型

构造类型结构体类型

共用体类型

指针类型

空类型

1、标识符:标识符是给程序中的实体(变量、常量、函数、数组等)所起的个

名字。

例:floatx,y,z;

△float为实数类型标识符,也是专用标识符。x、y、z则为一般的变量标识符。

关于标识符的说明:见P12:

说组;①标识符必须以字母或下划线开头,由字母、数字或下划线组成的字符序

列;②用户不能采用C语言已有的32个关键字作为同名的用户标识符;③标识符

长度没限制;④标识符区分大小写。

△关键字见课本P221o

例如:1.sum,PI,aa,bb43,ch,a_53ff,_lab都是合法的标识符。

2.4mm,©ma,tt$a,_ch#a均是不合法的标识符。

思考:count、Count和COUNT是否为相同的标识符?main、float能否作为用户

标识符?

1.常量:在程序中,其值不能改变的量。

例:12,3,12.3,-2.4,3.14159,'a'(代表字符a,为字符常量)都

是常量。

说明:常量可用宏定义命令#define来定义一个常量的标识,且一旦定义后,该

标识将永久性代表此常量,常量标识符一般用大写字母表示。

符号常量定义的•般格式为:#define常量标识符数值

例:#definePI3.14/*定义PI为3.14,即圆周率值近似值*/

main()

{intr;floats,1;/*变量类型定义*/

r=2;/*为半径赋值为2*/

s=PI*r*r;/*求圆面积,并且存到s所在的内存中*/

l=2*r*PI;/*求圆周长*/

printf("s=%fl=%f",s,1);/*输出面积s和周长1的值*/

)

运行结果:s=12.5600001=12.560000

3.变量:在程序的运行过程中其值可改变的量。

△变量在程序中起着“容器”的重要作用,没有变量就没有数据存储,计算机也

就无法处理数据。变量的命名完全如标识符的命名规则,因为变量名本身就属于

标识符的范畴。由于计算机中不同的数据类型所分配的内存单元不同,所以C变量

在使用之前必须定义,有些书上也称为变量声名,否则,系统将无法为变量分配

合适的内存单元。

变量定义的•般方式为:

类型变量名;

例:inti,j,1;

floata,b,c;

1)变量的初始化:变量赋初值。

赋值的一般格式为:

变量名=表达式;

例如:x=3;a=a+l;f=3*4+2;

思考:看下面程序段中的语句是否正确?

#defineMAX20

main()

{inta;

a=3;

MAX=8;

9=a;

printf("这样赋值行吗?");

)

另外,变量初始化也可与变量定义同时进行。例如:

inta=3,b=4,c=5;

floatx=7.5;均是在变量定义的同时,进行的赋初值操作。

△见书上P14:画龙点睛

•作业:

1.仔细阅读并理解讲过的内容。

2.课本40页单选题1,2o

・小结

1.C语言的数据类型

2.标识符的概念

3.常量与变量

课题:第二章基本数据类型

教学目标:通过本堂讲授,使学生掌握C语言常用的数据类型及存储特征

教学重点:基本数据类型的正确运用

教法:讲授法。

所用课时:2节

授课班级:网络45

教学过程:

一、基本数据类型

△我们知道数据在计算机内存中是以二进制数存在的(不清楚的可参阅有

关计算机基础方面的书),我们的C语言程序在执行过程中,首先被编译成目标代

码,即二进制代码或机器码,这样程序变量的值就会以二进制的形式存在于内存。

由于二进制数在实际应用中很不方便,所以我们在编程时用到的数据通常以十进

制、八进制等形式出现。下面将对基本数据类型一个一个进行讲解。

1.整型数据(int)

△整型数据在C语言中有三种表示形式,在具体应用中,往往根据需要选

用。

(1)整型常量

①十进制表示:

如:123>-34、0.......。

②八进制表示:以0开头符合八进制规则的整型常量。

如:045、0611、011.......。

③十六进制表示:以Ox开头符合十六进制规则的整型常量。

如:0x123、Oxabc^Oxaf...。

(2)整型变量

整型数据在内存中的表示范围如课本P15表2.1,要使变量成为整型,必须

将其声明为整型,至此,这对我们来说已经不是难题了。例如:

main()

{inta,b=7;

a=6;

printf("%d%d",a,b);

}

该程序段,将变量a、b定义成整型,并给它们分别赋了初值。值的注意的是整型

数据输出的格式控制符为“%d”,初学者务必记牢!

活动:例:有这样的数据定义:inta;则a=32768;行吗?

2、实型数据(float或double)

(1)实型常量

△实型数据有两种表示形式,这与我们现实生活中所用的实数表示方法有所

不同。C语言中,实型常量或常数由小数点和数字组成,你也许会认为这与我们

在数学中的表示没什么两样,实际上是有区别的,C语言中,实数的小数点前允许

没有数字。

①一般形式表示

如:0.21、.12、3.141592、9999987.76660等。

②指数形式表示

指数表示法有点类似数学中的科学记数法,只不过C语言中用e或E代替数

学表示中的10。例如:1240000用C语言可表示为1.24E6。C语言的指数表示法

是有规则的,•定注意在e或E之前必须有数字,在其后的指数部分必须为整数。

见课本P16中间。

如:123e3、-L2E3、2e2、1.6e+2、1.9E-3都是合法的形式,但1.23e0.7

和e3都不是合法形式。

(2)实型变量:分为单精度(float)和双精度(double)。

△见课本P15表2.1。

例1见课本P16例2-2»

代码:main()

{floatx,y;/*定义单精度变量x和y*/

doublec,d;/*定义双精度变量c和d*/

x=y=4.6;/*x、y均被赋值为4.6*/

c=988888987.Ill;

d=x+c;

printf(w%f%f",x,d);

)

运行结果:4.600000988888991.711000

分析:

(1)变量x、y、c、d被赋的值必须在其表示范围内,若上面程序中,将d定义

为float型就会出现溢出错误,想一下为什么?

(2)不管是单精度还是双精度,其输出格式均为“%f”;

(3)在C语言中,不管是单精度还是双精度实数,输出时小数点后默认保留6位

小数。

3、字符型数据(char)

(1)字符常量:用单撇号括起来的单个字符,或转义字符。

如‘a'、'E'、'¥'、'$'、'9'、''t'、'\101'、'\xlf'都是字

符常量(后3个是转义字符)。应当注意,单撇号只是字符常量的一个“标志”,

并非字符常量的一部分,字符常量只能是单个字符,当输出一个字符常量时不输

出单撇号。字符型数据是以ASCH码的形式存储的,关于ASCII码见V后附录P220。

转义字符见课本P17。

活动:

(1)5与'5'是否相同?为什么?

分析:5与'5'不同,5是整数,但‘5'是字符常量,其值为53,'5'远远大

于5<,

(2)a与'a'是否相同?为什么?

分析:不相同,a是个标识符,可看作变量,其值山所赋的值决定。

(2)字符变量

字符变量主要是为了存储字符常量,字符常量是以ASCII码值的方式存储的。

字符变量的定义方法为:

char变量名;

例2本程序用来演示字符常量和字符变量的使用。(先写出来然后分析)

代码:main()

{charch,c;/*定义字符变量ch,c*/

ch='\362';/*给字符变量ch赋一个转义字符,其中362为8进制数*/

c='g';不胜数/*把字符常量g给字符变量c*/

printf("%c\n%c",c,ch);/*\n为转义字符,表示换行*/

)

运行结果:g

说明:字符在内存中是以ASCII的值的形式存在的,所以字符型变量可与整型变

量互相赋值。(写课本P18)

例2-4本程序演示字符型数据与整型数据互相赋值的情况。(先写出来后分析)

代码:main()

{charcl,c2;

inta;

cl='a',c2=98;

a='a,;/*体会“二”两边的a意义有何不同?*/

printf("cl=%cc2=%ca=%d",cl,c2,a);

)

运行结果•.cl=ac2=ba=97

分析:

叵I

011000010110001001100001

二、字符串

。字符串常量:由双引号括起的若干字符序列。

如"CHINA"、"ab$"、"Ilovechongqing都属于字符串常量。字符

串在存贮时、每一个字符元素占一个字节,但是整个串占用的空间并不等于串中

字符元素的个数,而是字符元素个数加1,因为字符串有一个结束标志'\0'要

占一个字节是一个ASCH码为0的“空操作字符”)。如“CHINA”的存储

情况如下:

CHINA\0

说些C语言没有专门的字符串变量,一般用字符数组来存放。

串和字符是不能混为一谈的。单个字符用单引号括起来是字符串常量,如'

a,,但"a"却是一个串常量,它们所占的内存空间大小也不一样。

三、小结:

1.掌握基本数据类型的衣示方法:

2.掌握基本数据类型的数据定义和使用方法;

3.记住基本数据类型在内存中的表示范围;

4.了解字符串的特征及存储特性。

四、作业:

P402.1题的1一8;

P412.2题的1—3;

课题:基本类型修饰符及输入输出函数

教学目标:通过本堂讲授,使学生掌握C语言常用的输入输出函数用法

教学重点:输入输出函数的正确运用

教学难点:类型修饰符的用法

教法:讲授法

所用课时:2节

授课班级:网络45

教学过程:

◊活动

提问:1.int型数据的表示范围;

2.float与double类型分别占多少个字节?

3.字符的ASCH码值是多少?

4.匕,的ASCII码值是多少?

5.2与2是相同的常量(判断并分析)

6.字符串"wangling”占几个字节的单元?

7.说出哪些是合法的常量:3e2el2.3e0.3,\086,,\xhh,

一、基本类型修饰符

△基本类型前面还可以通过添加修饰符实现基本类型的“范围扩充”。类型修

饰符可以改变基本类型的含义,以更加精确地适合特定环境的需要。C语言提供

的修饰符如下:

signed(有符号)

unsigned(无符号)

long(长型)

short(短型)

△以上修饰符均可修饰int基类型,其中部分也可修饰char和double类型,

关于修饰符的用法,我们只关心它与int的搭配,如需要了解其它类型与修饰符组

合用法的,可参阅相关C语言书籍。具体修饰后的表示宽度见P20页表2.3

类型修饰符是为了给用户提供更大范围的数据定义而提供的,我们知道基本

类型int实际上指的是signedint类型,其表示范围相当小,若用到比较大的整

型数据时,可考虑使用修饰符。

当类型修饰符独自使用时,则认为是修饰int型的。因此,下面几种类型修

饰符是等效的:见P21页上面。

修饰符等效于

signedsignedint

unsignedunsignedint

longlongint

shortshortint

教法指引:先写出如下程序例题,然后分析其用法。

例1本程序显示了修饰符long的正确使用。

main()

{intxl,yl;

longx2,y2;

xl=32767;yl=32769;/*注意yl的赋值超出了其表示范围*/

x2=32767L;y2=32769L;/*数字后的L表示该数据是长整型,是合法的书写方法

*/

printf("xl=%d,x2=%ld\nyl=%d,y2=%ld",xl,x2,yl,y2);/*\n为换行符*/

}

运行结果:

xl=32767,x2=32767

yl=-32767,y2=32769

二、常用输入输出函数

Dprintf函数:格式输出函数。

格式:printf(格式控制,输出表列)

格式控制是用双引号括起来的字符串,它包括两种信息:①格式说明:由“%”

和格式字符组成,如:%d,%f等;②普通字符:即需要原样输出的字符:,如

printf(7生二/d”,a);中的划线部分就是普通字符。见书中P22页下边。

输出表列可以是若干个需要输出的数据变量,也可以是表达式。

例见课本P22o

△注意格式控制符总结:见P23中间。

例:2见课本P23例2-8,对其进行解释。

2)scanf函数:格式输入函数

(1)格式:scanf(格式控制,地址表列)

说明:①格式控制的含义与printf函数的相同;②地址表列是由若干个以&打头

的地址项;见书P23下面。

△分析例2-9(P24页)

三、字符数据的输入输出函数

1、putchar函数:字符输出函数

格式:putchar(字符变量/字符常量)

功能:在显示设备上输出一个字符变量的值。

2、getchar函数:字符输入函数

格式:getchar()

功能:从终端设备输入一个字符,一般是从键盘输入字符。

见课本P25例2-10和例2-11:

说明:①使用字符输入输出函数时,必须用#include“stdio.h";②getchar和putchar

函数每次只能处理一个字符,而且getchar函数没有参数。

四、小结

1.printf()的基本用法;

2.scanf()的基本用法;

3.putchar()的基本用法;

4.getchar()的基本用法;

五、作业

P402.17—9

课题:2.4基本运算及表达式中的类型转换

教学目标:通过本堂讲授,使学生掌握C语言基本算术运算符的合理用法,以及

混合运算时类型转换原则

教学重点:运算符的基本用法

教学难点:增量运算与减量运算

教法:讲授法

所用课时:2节

授课班级:网络45

教学过程:

※复习上堂内容;

活动:

△提问

1.长整型数据占儿个字节?

2.无符号整型数据表示的数值范围是多少?

3.字符输入函数有参数吗?

△导入新课内容。

一、算术运算符与算术表达式

1.算术运算符

△见课本P27表2.4

算术演符:+、-、*、/(蹦运算符)、%(模运算符)

△主要讲解/和%运算符。

说明:a尚“/”两边的运算量完全是整数或字符时,结果取整;②模运算符

“%”是一种求余运算,也叫模运算,但是切记,模运算取整数除法的余数,所以

“%”不能用于实型数据的运算。见课本P27表2。4下面一段。

例:7%3=4;10/3=3;

a=8.9%3;时正确?

例见P282T2

2.算术表达式

△用算术运算符和括号将数据对象连接起来的式子,称为算术表达式。如表

达式:a*d/c-2.5+'a'就是一个合法的算术表达式。表达式的运算按照运算符的

结合性和优先级来进行。

C语言规定了运算符的结合方向,即结合性。例如表达式7+9+1计算机在运

算时,是先计算7+9还是先计算9+1呢?这就是一个左结合性还是右结合性的问

题。算术运算的结合性是自左向右的左结合,所以应该先算7+9。

•结合性:左结合(自左向右结合);

如果只有结合性显然不够,上面的例子属于同级运算(只有加运算),但是如

7+9*2,岂能只考虑运算的结合性?这就要考虑运算符的优先级的问题了。其实在

小学里我们就知道混合运算规则:先算括号里面的,然后乘除,最后算加减。C

语言算术运算符的优先级与小学数学中的混合运算规则大致相同,即优先级从高

到低是:

•优先级:见P28第二段下面。

()-负号■**、/、%—+、一

另j*低

优先级

二、赋值运算符及赋值表达式

1.赋值运算

格式:变量名=表达式;

说明:“=”是一种运算符。

2.复合赋值

△赋值表达式有一种变形,称为复合赋值,它简化了一定类型的赋值操作的编

码。例如,x=x+10;

可以改写成x+=10;

操作符“+=”告诉编译程序:X被赋值为:x加10。类似的还有:-它

们的使用方法完全一样,如:

b-=9等价于b=b-9

y*=x+12等价于y=y*(x+12)

t/=3等价于t二t/3

a%=b+2等价于a=a%(b+2)

活动:

思考:下面的算术表达式如何转化为合法的复合赋值表达式?

①y=y+9*x

①a=a%(b*2)

3.自增和自减运算

△C包括两种其它语言•般不支持的非常实用的操作符,即增量操作符++和减

量操作符一也称自增运算符和自减运算符。操作符++对操作数增加一个单位,操

作符--对操作数减一个单位。也就是说,x=x+l;与++X;—•样,而X=X-1;与X--;

完全一样。

增量和减量操作符都能放到操作数前面,也可放到操作数后面。P30表2.5

说明:见P30表2.5下面一段。

例如:

x=10;

y=++x;

X的值先增1,变成n,然后将x的值11置给y,使y的值也为11。当写成:

x=10;

y=x++;

例:见书P312-13:

三、表达式中的类型转换

1.自动类型转换

见P32中间示例:

说明:见P32划线处。

2.强制类型转换

使用强制类型转换,可以把表达式的结果硬性转换为指定类型,其♦•般形式

为:

(类型)表达式

其中类型是将要转换的有效C数据类型。例如,为确保表达式x/2求值成float型,

可以书写成(float)x/2o

实际上强制转换(类型)是操作符,由于它是一元单目运算,所以优先级较高,

它与自增自减运算符属于同一优先等级。

例2-14程序演示了强制类型转换的用法。

代码:main()

{inta=2,b=7,c;

floatx=15.5,y,z;

y=a/b;

z=(float)a/b;/*将整型变量a转换成实型*/

c=(int)x/a;/*变量x不转换类型可以吗?*/

printf("y=%fz=%fc=%dx=%f”,y,z,c,x);

}

运行结果:

y=0.000000z=0.285714c=lx=15.500000

※小结:

1.算术运算符及算术表达式的用法;

2.赋值运算及复合赋值运算;

3.增量运算的用法;

4.表达式中的类型转换。

※作业:

P40:2.1题的10—14;2.2题的6—8

课题:2.4关系运算、逻辑运算

教学目标:通过本堂讲授,使学生掌握C语言关系运算、逻辑运算的基本规则和

其运算过程

教学重点:关系运算、逻辑运算在现实问题中的运用

教学难点:关系运算和逻辑运算的实质意义

教法:讲授法

所用课时:2节

授课班级:网络45

教学过程:

※复习上堂内容

活动:

1.提问:

①将如下表达式转换为合法的复合赋值表达式:y=y%(4+x)

②将如下复合赋值表达式转换为一般形式:a/=b-3

③程序段:inta;floats=9;a=s%4;是否合法,若有错,将如何将其改正?

④语句:ttdefinePI3

main()

{inta;PI++;a=PI;printf(aa=%dw,a);}

是否有错,若有错,错在哪里?

⑤若:inta=4;chart='O";floatd=9;则表达式:19*a-t/d的值类型是什么?

2.讲解,并引入今天课题

一、关系运算

△关系运算是指数据之间的关系(比如数间的大小等),关系运算的结果要么为真,

要么为假,若为真就用1表示,为假就用0表示。

1.关系运算符

<、<=、>、>=、==、1=

TV

优先级相同

高^低

△需要说明的是,关系运算符==是“比较等”,也就是说,两个运算量通过

比较看是否相等?运算结果要么为真/I,要么为假/0,它完全不同于赋值运算符=,

赋值运算是将右值赋给左部变量,赋值运算符没有比较的意思,一定要搞清楚它

们的用法区别。

△说明:见课本:P34中间(1)—(3)

例:如下面每组表达式是等价的:

①b<=a*2与b<=(a*2)

②a==b>7与a==(b>7)

③a=b>c与a=(b>c)

2.关系表达式

用关系运算符将两个表达式连接起来的式子叫关系表达式。关系表达式的值

是1或0。试分析下面表达式的值。

说明:关系表达式的值为真时用1表示,为假时用0表示。

(1)若a3,b=2,c=1,贝IJT歹(K达式的值分别为多少?

①(a>b)==c

②b+c<a

③fa<b>c

分析:

①(a>b)==c②b+c<a③f=a<b>c

1=13<30>1

000

所以f=0°

(2)表达式(a=3)>(b=5)的值是多少?

(3)表达式'c,!=,Cf的值是多少?

例2-15该程序演示关系运算符的运用。(见BP35页)

main()

{inta=3,b=2;

printf(w%d,%d,%d,%d,%d,%d/z,a<b,a<=b,a>b,a>=b,a==b,a!=b);

)

运行结果:

0,0,1,1,0,1

二、逻辑运算

1.逻辑运算符

逻辑运算表示两个数据或表达式之间的逻辑关系。可联系到现实中逻辑关系

的运用。C提供的逻辑运算符有三个,它们分别是:

&&(逻辑与)||(逻辑或)!(逻辑非)

逻辑运算的结果也只有真和假,即:1和0。它们的运用情况看表2.6。

表2.6逻辑运算的真值情况

值情况运吉果

ab!a!ba&&ba11b

001100

011001

100101

110011

关于逻辑运算的符的使用说明:见课本P36上面开始。

(1)&&是双目运算符,仅当两个操作数都为真时,其运算值才为真,否则为假;

(2)II也是双目运算符,其操作数中只要有一个为真,则整个运算值为真,否则

为假:

(3)!是单目运算符,其运算值是取操作数的相反逻辑值。

•优先级及结合性说明:说期①&&和II的优先级低于关系运算符,但!高于算术

运算符;②逻辑表达式中的逻辑量,若不是0,则认为该量为真;③逻辑运算符!

的结合性为“从右向左”,&&和II的结合性仍是“左结合性”。

逻辑运算符的优先级情况是这样的:

||&&!

由以上可知,下面是等效的C语言写法:

(x>y)&&(9<5)与x>y&&9<5

(a+b)||(c=d)与a+b||c==d

(a>c)|(!d)与a>c||!d

2.逻辑表达式

若a=5,b=3试分析下面表达式的逻辑值是多少?

5>3&&27<4-!0

分析:计算机对该表达式的执行先后顺序大致如下:

第一步5>3&&2|7<4-1_0

第二步:5>3&a27<4-1

第三步:5>3&&27<3

第四步:1&&27<3

第五步:1&&20

第六步:10

第七步:1

所以表达式最后结果是:1

画龙点睛

用合法的C语言描述下列命题:

①a和b中有一个大于c;

②a不能被b整除;

③判断某年year是否为闰年;(提示:某年若是闰年,则必须符合下列条件

之一:I.该年可以被4整除,但不能被100整除;II.该年可以被400整除)

解:①a>c||b>c或(a>c)II(b>c)

②a%b!=0

③(year%4==0&&year%100!=0)II(year%400==0)若该表

达式成立,则该年为闰年。

特殊说明:

需要提出的是,在逻辑及达式的求解过程中,并不是所有的逻辑量、运算符

都被执行,只是必须执行该逻辑量才能求出整个表达式的解时,才执行该运算量

或运算符。例如:

表达式1&&表达式2中,若表达式1为0,则计算机不再考虑表达式2的值的情

况,也就是说表达式不再执行。例:inta=5,b=9,s;

s=(a-=5)&&++b;计算机执行该程序段后,s=?,a=?,b=?

a&&b&&c只有a为非零值时,才需判断逻辑量b的值,只有a和b都为真的

情况下才需考虑c的值。如果a为假,则就不用判断b和c的值了,因为这是与运算,

整个表达式的值已经可以确定为假了。

同样的道理,对于逻辑或,如:a||b||c只要a为真,不需再判断b和c了,

就能确定整个表达式的值为真。

思考:

若a=9,b=10,c=l,d=7,x=8,y=15,则计算机执行了语句:m=(x=a>b)&&(y=c<d);

后,m和y的值分别是多少?

※小结

1.关系运算符及其运算规律;

2.理解关系运算在现实中的运用;

3.逻辑运算符及逻辑表达式的用途;

4.深刻理解逻辑运算在现实生活中的运用。

※作业

P4115小题,填空题的9-15

课题:2.5几种特殊的运算符及表达式

教学目标:通过本堂讲授,使学生掌握逗号表达式和条件表达式的用法,同时理

解顺序程序设计的基本思想。

教学重点:条件运算符的运算机理及顺序程序设计的方法

教学难点:条件运算符的灵活运用

教法:讲授法

所用课时:2节

授课班级:网络45

教学过程:

※复习上堂内容

活动:

1.提问:

①写出:"A小于B或小C”的C语言表达式;

②写出:“a和b中有一个小于c”的C语言表达式;

③写出:“a不能被b整除”的C语言表达式

④若有:a=3,b=4,c=5,则表达式:

!(a>b)&&!c||1的值为多少?

2.引入本堂内容

一、逗号运算符和逗号表达式

逗号运算符主要用于连接表达式。例如:a=a+l.b=3*4;用逗号运算符连接起

来的表达式称为逗号表达式。它的一般形式为:

表达式1,表达式2,……,表达式n;

逗号表达式的运算过程是:先算表达式1,再算表达式2,依次算到表达式n。

整个逗号表达式的值是最后一个表达式的值。逗号表达式的结合性从左向右,它

的优先级是最低的。

如:b=(a=4,3*4,a*2)它的运算过程是:a=4—>3*4—>a*2—>b=a*2

二、条件运算符和条件表达式

条件运算符是C语言的唯一的三目运算符,即它需要3个数据或表达式构成条

件表达式。它的一般形式为:

表达式1?表达式2:表达式3

如果表达式1成立,则表达式2的值是整个表达式的值,否则表达式3的值

是整个表达式的值。如图所示:

今后要学习的if-else结构可以替换条件运算符,但是条件运算符不能替换

所有的if-else结构。只有当if-else结构为两个分支情况,并且都给同一个变

量赋值时才可以用条件运算符替换,关于这点,今后再慢慢体会.

例如,将a,b两个变量中大者放到变量max中,我们可以利用条件运算这样

来完成:max=a>b?a:b

条件运算符的结合方向为从右往左。例如:

a>b?a:b>c?b:c等价于a>b?a:(b>c?b:c)

例1该程序的功能是求三个数中的最大数。

代码:main()

{inta,b,c,max;

scanf("%d,%d,%d",&a,&b,&c);

max=a>(b>c?b:c)?a:(b>c?b:c);

printf(,za=%d,b=%d,c=%d,max=%d\n",a,b,c,max);

}

执行情况:

3,4,5〈回车》

运行结果:

a=3,b=4,c=5,max=5

例2从键盘上输入学生的三门成绩,求其总成绩和平均成绩。

※小结

1.逗号运算符及逗号表达式;

2.条件运算符及条件表达式;

3.顺序程序设计的基本过程;

※作业

P412.1-2.2

2.4—2.5(作业本上做)

上机作业:理解验证题

1.P28例:2-12

2.P31例:2-13

3.编程理解验证题:P37思考题。

试验项目:运算符的合理用法及顺序程序设计方法

试验目的:通过本次实验使学生熟练掌握各种运算符的特征及合理应用,同时掌

握顺序程序设计的思想及编程方法。

试验重点:仔细理解揣测程序中各语句的真正作用及运行结果的由来

试验难点:C编译器的熟练运用不够

施用班级:网络45

试验内容:

一、验证理解内容

1.通过调试程序,仔细分析增量运算在不同场景下的使用的不同。

代码:main()

{inta,b,c,d,e,f;

a=b=c=d=10;

a++;++b;

c一;一d;

printfC'a=%db=%dc=%dd=%d\n",a,b,c,d);/*注意输出后换行*/

e=a++;f=++b;/*认真分析e,f的结果是否相同*/

printf(wa=%db=%de=%df=%dw,a,b,e,f);

)

2.通过调试程序,分析运算符/和%的用法特点及其区别。

代码:main()

{inta,b;

floatc;

a=5/3;

c=5/3.0;

b=5%3;/*注意%运算符要求操作数必须为整型*/

printf("a=%d,c=%f,b=%d",a,c,b);

)

3.试编程验证解决如下问题:

^a=9,b=10,c=l,d=7,x=8,y=15,则计算机执行了语句:m=(x=a>b)&&(y=c<d);

后,m和y的值分别是多少?

二、针对问题编程,并通过调试,达到自己程序解决问题

的目的

1.设圆半径r=2.9,编程求圆周长和圆面积。

2.输入一个华氏温度,输出相应的摄氏温度。二者的换算公式是:c=5/9(F-

32),其中F表示华氏温度,c表示摄氏温度。

课题:3.1程序的基本结构及if条件程序设计

教学目标:通过本堂讲授,使学生掌握程序设计的三种基本结构,同时熟练掌握

if条件在编程中的运用

教学重点:if条件语句的运用

教学难点:if的合理嵌套运用

教法:讲授法

所用课时:2节

授课班级:网络45

教学过程:

※复习上堂内容

活动:

1.提问

1)设有语句inta=3;则执行语句a+=a-=a*a后茂量a的值是()

(A)3(B)0(C)9(D)-12

2)判断char型变量cl是否为小写字母的正确表达式是()

A、'a'<=cl<=zz'B、(cl>=a)&&(cl<=z)A98<=cl&&123>=clD、cl>='a'

&&cl<='z'

3)设a、b均为整型,且b=5,执行下列语句后,a的值为()。

a=2+(b+=b++,b+8,++b);

A、11B、12C、14D、15

4)以下程序的输出结果是()

main()

{inta=3;

printf("%d\n",(a+=a-=a*a));

)

A、-6B、12C、0D、-12

5)若chara='a',b='A';则执行s=a>b?97:65;后s的值是多少?

2.引入本堂内容

一、三种基本程序设计结构

1、耐雌

所谓顺序结构是指程序流程自上而下,没有任何分支顺序执行的程序结构,它

是最简单的一种结构。前几章所举例子全部属于顺序结构。

顺序结构的流程图如下:

a

A

B

b

其中,a表示程序入口(程序开始),b表示程序出口(程序结束),A和B分

别表示程序代码段。

2、选择结构

选择结构,乂称分支结构。程序在执行的时候,根据判断条件决定程序流程

走哪条路线,这种结构在今后程序设计中经常用到。

选择结构的流程图如下:

流程图中,P表示判断,其它同顺序结构流程图意义相同。

3、循环结构

循环结构是指程序在执行过程中,当满足某种条件时,反复执行满足条件的

那部分程序段,直到条件不再满足才接着执行下面的程序段。这种情况在现实问

题中经常出现。

下面流程图大致表示了循环结构:

a

A

4、三种基本结构的特点(见书中P45)

从以上•:种结构的流程图可以看出三种基本结构有以卜一共同特点:

(1)程序只有一个入口;

(2)程序只有一个出口;

(3)程序结构内的每一部分都有机会被执行;

(4)程序结构内不存在死循环。

5、复合语句

所谓复合语句,在C语言中是指用“{”和“}”括起来的若干个语句。复合

语句又叫块语句,构成块的所有语句被逻辑地形成一体,这些语句在执行时作为

一个整体,在内存中占用一片连续区域。

例:main()

{inta,b,t;

printf(44Inputa,b:^^);

scanf(tt%d%d,,,a,b);

printf(<<a=%d,b=%d\n,,,a,b);

{t=a;a=b;b=t;}/*复合语句*/

printf(t4a=%d,b=%d,\a,b);

二、if条件语句

1、if(表达式)语句

其语义是:如果表达式的值为真,则执行其后的语句,否则不执行该语句。

例:if(x>y)printf("max=%d”,x);

例1:输入两个整数,输出其中的大数。(见P46)

例2:输入3个数a,b,c,要求按由小到大的顺序输出。

分析:如果a>b那么a互换b

如果a>c那么a互换c

如果b>c那么b互换c

编码:

main()

{floata,b,c,t;

printf("pleaseinputa,b,c:");

scanf(w%f,%f,%f“,&a,&b,&c)

if(a>b)

{t=a;a=b;b=t;}

if(a>c)

{t=a;a=c;c=t;}/*复合语句实现交换*/

if(b>c)

{t=b;b=c;c=t;}/*复合语句实现交换*/

printf(a%f,%f,%fu,a,b,c);

2、if—else二选一结构语句

格式:if(条件)]

S1|J是一条语句

else\

S2Ir是一条语句

其语义是:如果表达式的值为真,则执行语句1,否则执行语句2。

※活动:由学生自己写出如下程序。

例3输入两个整数,输出其中的大数。改

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论