华清远建-C编程(精简版).doc

上传人:hw****26 文档编号:4047974 上传时间:2019-09-16 格式:DOC 页数:37 大小:204KB
下载 相关 举报
华清远建-C编程(精简版).doc_第1页
第1页 / 共37页
华清远建-C编程(精简版).doc_第2页
第2页 / 共37页
华清远建-C编程(精简版).doc_第3页
第3页 / 共37页
华清远建-C编程(精简版).doc_第4页
第4页 / 共37页
华清远建-C编程(精简版).doc_第5页
第5页 / 共37页
点击查看更多>>
资源描述

1、实验实训大纲一、实验实训的目的和基本要求 通过第一阶段的课程的学习,可以使学生对嵌入式 linux 程序设计的基本编程规则与开发有一个比较全面的了解和认识,并最终能熟练掌握程序设计的理论知识和实际操作,也为以后学习更高一层的程序设计打下很牢固的理论知识基础和实践基础,尤其是有过硬的操作技术,较强的动手能力。 实验实训的基本要求是: 1、严格按要求使用计算机等相关实验设备; 2、通过实验实训提高动手操作能力; 3、通过实验实训学会用专业知识分析问题、解决问题的基本方法和步骤; 4、能够用理论指导实践; 5、通过实验实训加深对理论知识的理解; 6、能够掌握一定软件开发技术,具备一定的软件开发能力。

2、 二、实验实训的内容及要求 实验实训内容: 1 .熟练掌握 linux 的基本命令和 vi 编辑器和 gdb 调试器的使用。2、熟识 c 语言的运行环境,尤其是 vi 编辑器和 gdb 调试器的使用。 3、熟练掌握数据结构的使用.4熟练掌握 shell,Makefile 的编写实验实训要求: 1、掌握 c 语言,数据结构,shell,Makefile 有关专业知识分析问题、解决问题的基本方法和步骤; 2、能够所学知识的学习来理解程序设计的基本理论知识; 4、能够熟练地使用第一阶段所学知识,为以后打下基础。5、能够掌握一定软件开发技术,具备一定的软件开发能力。三、考核形式及要求 (一)日常实验考

3、核 1、实验过程占 70%,实验结果占 30%。 2、每单元实验结束为每个同学打出成绩,整个学期的平均成绩作为该同学的技能考核成绩; 3、要求在规定时间内独立完成; 四实验实训教材及教学参考书目 (一)推荐教材 C 程序设计谭浩强 著C 程序设计题解与上机指导(第二版) 谭浩强 著 GNU Makefile 编程实验实训指导实验一 Linux 常用命令和 vi,gdb 的使用【实验内容】本课程要求学员对 Linux 基本操作命令有一定了解和掌握。下面列出的一些常用命令作为参考。最好针对每一个都能亲自练习、掌握。【实验平台】PC 机【实验步骤】1ls 命令-ls 以默认方式显示当前目录文件列表l

4、s a 显示所有文件包括隐藏文件ls l 显示文件属性,包括大小,日期,符号连接,是否可读写及是否可执行-2.cd 命令cd dir 切换到当前目录下的 dir 目录cd . 切换到到上一级目录cd 切换到用户目录,比如是 root 用户,则切换到/root 下- 3rm 命令rm file 删除某一个文件rm -rf dir 删除当前目录下叫 dir 的整个目录- 4.cp 命令cp source target 将文件 source 复制为 targetcp av soure_dir target_dir 将整个目录复制,两目录完全一样cp fr source_dir target_dir

5、将整个目录复制,并且是以非链接方式复制,当 source 目录带有符号链接时,两个目录不相同- 5.mv 命令mv source target 将文件或者目录 source 更名为 target- 6.diff 命令diff dir1 dir2 比较目录 1 与目录 2 的文件列表是否相同,但不比较文件的实际内容,不同则列出diff file1 file2 比较文件 1 与文件 2 的内容是否相同,如果是文本格式的文件,则将不相同的内容显示,如果是二进制代码则只表示两个文件是不同的- 7.echo 命令echo message 显示一串字符8。cat 命令cat file 显示文件的内容,和

6、DOS 的 type 相同cat file | more 显示文件的内容并传输到 more 程序实现分页显示,使用命令less file 可实现相同的功能more 分页命令,一般通过管道将内容传给它,如 ls | more- 9du 命令du 计算当前目录的容量du -sm /root 计算/root 目录的容量并以 M 为单位10.find 命令find -name /path file 在/path 目录下查找看是否有文件 file-11grep 命令grep -ir “chars” 在当前目录的所有文件查找字串 chars,并忽略大小写,-i 为大小写,-r 为下一级目录-12.vi 的

7、使用- vi file 编辑文件 filevi 原基本使用及命令: vi 分为编辑状态和命令状态。输入命令要先按 ESC,退出编辑状态, 然后输入命令。常用命令有::x(退出):x!(退出不保存):w(保存文件):w!(不询问方式写入文件):r file(读文件 file) :%s/oldchars/newchars/g(将所有字串 oldchars 换成 newchars) i 进入编辑插入状态ESC 退出编辑状态13man 命令- man ls 读取关于 ls 命令的帮助- 14.启动关闭计算机命令reboot 重新启动计算机halt 关闭计算机init 0 关闭所有应用程序和服务,进入纯

8、净的操作环境init 1 重新启动应用及服务init 6 重新启动计算机- 15.tar 命令tar xfzv file.tgz 将文件 file.tgz 解压tar -zcvf file.tgz 将文件或目录 压缩为 file.tgzgzip directory.tar 将覆盖原文件生成压缩的 directory.tar.gzgunzip directory.tar.gz 覆盖原文件解压生成不压缩的 directory.tar。- 16dmesg,uname 命令dmesg 显示 kernle 启动及驱动装载信息uname -a 显示操作系统的类型- 17.string 命令strings

9、file 显示 file 文件中的 ASCII 字符内容- 18rpm 命令rpm -ihv program.rpm 安装程序 program 并显示安装进程- 19.文件目录管理命令su root 切换到超级用户chmod a+x file 将 file 文件设置为可执行,脚本类文件一定要这样设置一个,否则得用 bash file 才能执行chmod 666 file 将文件 file 设置为可读写chown user /dir 将/dir 目录设置为 user 所有- 20mknod 命令mknod /dev/hda1 b 3 1 创建块设备 hda1,主设备号为 3,从设备号为 1,即

10、master 硬盘的的第一个分区mknod /dev/tty1 c 4 1 创建字符设备 tty1,主设备号为 4,众设备号为 1,即第一个 tty 终端- touch /tmp/running 在/tmp 下创建一个临时文件 running,重新启动后消失- 21.磁盘管理的命令fdisk /dev/hda 就像执行了 dos 的 fdisk 一样mount -t ext2 /dev/hda1 /mnt 把/dev/hda1 装载到 /mnt 目录df 显示文件系统装载的相关信息 mount -t nfs 192.168.1.1:/sharedir /mnt 将 nfs 服务的共享目录 sh

11、aredir 加载到/mnt/nfs 目录umount /mnt 将/mnt 目录卸载,/mnt 目录必须处于空闲状态sync 刷新缓冲区,使内容与磁盘同步,mkfs /dev/hda1 格式化/dev/hda1 为 ext2 格式dd if=/dev/zero of=root.ram bs=1024,count=1024 生成一个大小为 1M 的块设备,可以把它当作硬盘的一个分区来用- 22程序开发有关命令gcc hello.c -o hello 将 hello.c 编译成名为 hello 的二进制执行文件ldd program 显示程序所使用了哪些库- 23系统有关命令ps 显示当前系统进

12、程信息ps ef 显示系统所有进程信息kill -9 500 将进程编号为 500 的程序杀死top 显示系统进程的活动情况,按占 CPU 资源百分比来分free 显示系统内存及 swap 使用情况time program 在 program 程序结束后,将计算出 program 运行所使用的时间网络命令ifconfig eth0 192.168.1.2 捆绑网卡 1 的 IP 地址为 192.168.1.2- telnet 192.168.1.1 登陆 IP 为 192.168.1.1 的 telnet 服务器ftp 192.168.1.1 登陆到 ftp 服务器24使用 vi 编辑器,编写

13、 helloworld.c 程序代码如下:#include int main (int argc,char *argv)printf(“hello,world!n”);return 0;(2)用 gcc 编译$gcc o hello helloworld.c(3)执行 hello 程序$./hello25用 Gdb 调试有问题的程序实验目的:通过调试一个有问题的程序,使读者进一步熟练使用 vi 操作,熟练使用 gcc 编译命令及gdb 的调是命令,通过对有问题程序的跟踪调试,进一步提高发现问题和解决问题的能力。这是一个很小的程序,只有 35 行,希望读者认真调试。实验内容:(1)使用 vi 编

14、辑器,将以下代码输入到名为 greet.c 的文件中。此代码的原意为输出倒序输出 main 函数中定义的字符串,但结果显示没有输出。#include #include #include int display1(char *string);int display2(char *string);int main (int argc,char *argv)char string = “Embedded Linux“;display1 (string);display2 (string);int display1 (char *string)printf (“The original string

15、is %s n“, string);int display2 (char *string1)char *string2;int size,i;size = strlen (string1);string2 = (char *) malloc (size+1);for (i = 0; i size; i+)string2size - i = string1i;string2size+1 = ;printf(“The string afterward is %sn“,string2);free(string2);(2)使用 gcc 编译这段代码,注意要加上-g选项以方便之后的调试。(3)运行生成的

16、可执行文件,观察运行结果。(4)使用 gdb 调试程序,通过设置断点、单步跟踪,一步步找出错误所在。(5)纠正错误,更改源程序并得到正确的结果。实验步骤:(1)在工作目录上新建文件 greet.c,并用 vi 启动:vi greet.c(2)在 vi 中输入以上代码。(3)在 vi 中保存并退出:wq(4)用 gcc 编译:gcc g greet.c o greet(5)运行 greet:./greet,输出为:The original string is Embedded LinuxThe string afterward is可见,该程序没有能够倒序输出。(6)启动 gdb 调试:gdb

17、greet(7)查看源代码,使用命令l 。(8)在 30 行(for 循环处)设置断点,使用命令b 30(9)在 33 行(printf 函数处)设置断点,使用命令b 33(10)查看断点设置情况,使用命令info b(11)运行代码,使用命令r(12)单步运行代码,使用命令n(13)查看暂停点变量值,使用命令p string2size - i(14)继续单步运行代码数次,并使用命令查看,发现 string2size-1的值正确。(15)继续程序的运行,使用命令c(16)程序在 printf 前停止运行,此时依次查看 string20、string21,发现 string0没有被正确赋值,而后

18、面的复制都是正确的,这时,定位程序第 31 行,发现程序运行结果错误的原因在于size-i 。由于 i 只能增到size-i ,这样 string20就永远不能被赋值而保持NULL,故输不出任何结果。(17)退出 gdb,使用命令 q(18)重新编辑 greet.c,把其中的 “string2size - i = string1i”改为“string2size i - 1 = string1i;”即可(19)使用 gcc 重新编译:gcc g greet.c o greet(20)查看运行结果:./greetThe original string is Embedded LinuxThe st

19、ring afterward is xuniL deddedbmE这时,输入结果正确实验结果:将原来有错的程序经过 gdb 调试,找出问题所在,并修改源代码,输出正确的倒序显示字符串的结果。实验二 C 语言的基础知识 【实验内容】掌握 c 语言的基础知识,并能编写简单的程序,并熟悉在 linux 环境下编程。【实验目的】1、掌握 C 语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。 2、学会使用 C 的有关算术运算符,以及包含这些运算符的表达式,特别是自加(+)和自减(-)运算符的使用。 3、进一步熟悉 C 程序的编辑、编译、

20、连接和运行的过程。 【实验平台】PC 机【实验步骤】1、输入程序,运行出结果。 int main(int argc,char *argv) char c1 , c2; c1=97;c2=98; printf(“%c %cn”, c1, c2);return 0; 2、分析下程序,写出运行结果,再输入计算机运行,将得到的结果与你分析得到的结果比较对照。 int main(int argc,char *argv) char c1=a,c2=b,c3=c,c4=101 ,c5=116 ; printf(“a%c b%ctabcn”,c1,c2,c3); printf(“tb%c %c”,c4,c5)

21、;return 0; 3、分析下程序,写出运行结果,再输入计算机运行,将得到的结果与你分析得到的结果比较对照。 int main(int argc,char *argv) int i , j , m , n ; i=8; j=10; m=+i; n=j+; printf(“%d,%d,%d,%dn”,i,j,m,n);return 0; 4.分析下列程序,并输入计算机运行,总结结果。int main(int argc,char *argv) char c1 , c2; c1=97;c2=98; printf(“%c %c”, c1, c2); return 0; 1)在此基础上,加一个 pri

22、ntf 语句,并运行之。 printf(“%d,%d”, c1, c2 ); 2)再将第二行改为: int c1, c2; 再使之运行。 3)再将第三行改为: c1=300; c2=301; 再使之运行,分析其运行结果。 在该程序中,说明了字符型数据在特定情况下可作为整型数据处理,整型数据有时也可以作为字符型数据处理。 在该程序中,主要考查对转义字符的掌握情况。 此程序主要考查自加、自减运算符以及复合运算符的用法。5、实验实训思考题 1、 “=”和“=”有什么区别? 2、 “&”和“&” 、 “|”和“|”有什么区别? 6能力测试阶段单元一:运算符、表达式、输入输出语句 能力要求: a) 能够

23、正确定义、输入、输出并使用常用数据类型:整型、实型、字符型 b) 掌握五种基本算术运算符的使用:、,知道优先级与结合性 c) 掌握逻辑运算符和关系运算符、条件运算符的使用 d) 能够正确使用 printf()和 scanf()进行各种数据正确格式的输入输出 e) 编写简单顺序结构程序 基础能力落实: 1)编写一个程序,要求输入一个 ASCII 码值,然后输出相应的字符。2)编写程序,从键盘输入两个整数,分别计算出它们的商和余数,输出时,商数要求保留 2 位小数,并对第三位进行四舍五入。3)输入一个华氏温度,要求输出摄氏温度,公式为 C=5/9(F-32),输出取两位小数.要求:注意”/”的使用,通过测试来加深理解

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。