讨论课实施方法:
每次讨论课布置三道选题,每个班分为六个小组,同一道题有两个小组选择(小组间协商或随机分配)并进行准备。在讨论课时,每道题随机选择一组进行汇报,另外一组或其他组进行质疑与提问。
讨论课的成绩由本组表现及个人表现组成。
第一次讨论课选题
选题一:
在linux环境中,用gdb对c语言程序进行汇编代码级别的调试。(要求代码中至少包括整数加减乘等运算、判断语句及调用一个函数)。调试过程至少包括如下的内容:
(1)如何打印变量的值?
(2)如何打印变量的地址?
(3)如何打印地址的数据值?
(4)如何查看内存?
(5)如何立即执行完当前的函数,但是不执行完整个应用程序?
(6)如果循环次数很多,如何执行完当前的循环?
(7)如何跟踪变量值?
(8)layout的使用。
选题二:
在课堂上,已经演示了一个hello.c源文件通过预处理、编译、汇编、链接等过程,最终生成一个可执行文件的过程。
在此过程中,我们是在linux操作系统下,使用gcc编译器,最后得到的是x86架构下的可执行文件。
请讨论在不同的环境下(不同的操作系统、不同的编译器、不同的指令集架构等),这个由源文件到可执行文件的过程会有什么样的不同?为什么会有这样的不同?
选题三
在本课程中,选用c语言程序来进行演示与说明。而我们大一的高级程序设计和数据结构等课程是使用的c++语言。
请讨论:
(1)日常编程序时,有非常多的语言,除了上述提到的c,c++外,还有java,python,php,c#等,有哪些分类方法,都是按照什么来分类?
(2)为什么本课程要采用c语言?如果是采用c++语言来进行演示,会带来哪些影响?

