跳转至

课件

此页面收集了计算机实验班的课件。有 AI 生成的摘要。请读者自行取用。

0-overview-p

西安交通大学计算机学院副教授李昊开设的计算机程序设计课程概述了学习计算机科学的重要性,包括其高薪就业前景和广泛的应用领域,如生成式人工智能、芯片设计与制造等。课程强调编程与写作的相似性,要求学生掌握C++语言的基础语法,编写高效且优雅的代码,并解决从简单到中等难度的问题。课程使用《C++ Primer Plus》等教材,考核方式包括平时成绩和期末考试,后者为全机试编程。教学团队还包括唐亚哲教授。

课程内容涵盖计算机科学的多个层次,从机器语言到高级编程语言,特别强调C++语言的重要性和实用性。介绍了C++的基本结构、语句、函数,以及如何编写和运行C++程序。还讨论了程序错误的类型、调试方法和编程工具链的重要性。课程旨在帮助学生建立与计算机沟通的桥梁,构筑计算机系统观,为深入研究计算机科学打下基础。

0-overview-p

1-type-p

西安交通大学计算机学院的李昊教授在COMP250205课程中介绍了计算机程序设计的基础概念。课程内容涉及变量和基本数据类型,包括冯诺依曼体系架构、不同进制的记数法(如二进制、八进制、十六进制)及其与十进制的转换方法。强调了二进制在计算机科学中的重要性,并介绍了数据存储单位(如比特和字节)以及ASCII码。课程还探讨了数据类型的重要性,包括整型、字符型、浮点型和布尔型,以及它们的存储宽度和基本操作。此外,讨论了变量的声明、使用、命名规则、作用域和初始化,以及常量和立即数的概念。最后,课程涵盖了类型转换,包括隐式和显式类型转换,以及它们在编程中的应用和潜在问题。这些内容为学生提供了扎实的计算机程序设计基础。

1-type-p

2-expression-p

西安交通大学计算机学院李昊教授的《COMP250205:计算机程序设计》课程介绍了表达式、运算符、优先级、算术运算符、按位运算符、逻辑运算符、赋值运算符、递增/递减运算符和逗号运算符等基本概念和使用方法。课程强调了表达式求值的优先级和结合律,以及不同运算符在程序设计中的应用。通过实例和QUIZ,课程讲解了如何正确使用这些运算符来控制程序流程和处理数据。此外,课程还讨论了数据类型、整型范围、浮点数精度和隐式类型转换等编程中需要注意的问题。通过这些内容,学生可以更好地理解如何在C++等编程语言中有效地使用表达式和运算符。

2-expression-p

3-statement-p

西安交通大学计算机学院的李昊老师在COMP250205:计算机程序设计课程中讲解了程序语句的概念和分类。语句是处理器执行的动作,包括简单语句、条件语句和迭代语句。简单语句包括表达式语句、空语句和语句块。条件语句包括if语句和switch语句,用于根据条件选择不同的执行路径。迭代语句如while和do-while循环用于重复执行操作直到满足特定条件。此外,还介绍了如何使用break和continue语句控制循环流程,以及goto语句的使用,尽管不推荐使用。课程还涉及了实际编程中的循环问题,如文本输入处理,强调了cin和cin.get()在读取输入时的区别。最后,总结了简单语句、条件语句和迭代循环语句的基本概念和使用。

3-statement-p

4-array-p

这份文件是西安交通大学计算机学院的李昊教授为COMP250205课程“计算机程序设计”准备的讲义,主要介绍了数组和字符串的使用方法。内容包括:

  1. 数组:使用数组来存储大量相同类型的数据,如记录水果店每月营业额。数组的声明、初始化和访问方式,以及越界问题。

  2. 使用数组解决实际问题:例如计算零售店销售三种商品的总收入。

  3. 多维数组:如何使用数组存储多维数据,如10x10矩阵,并使用双重循环遍历。

  4. 字符串:字符数组和以'\0'结尾的字符串,以及它们的区别。字符串的输出和输入方法,以及常见的字符串操作函数如strlen、strcmp、strcat和strcpy。

  5. 字符串操作的陷阱:操作函数对字符串的假设条件,以及不当使用可能导致的问题。

总结:本讲义强调了数组和字符串在程序设计中的重要性,以及如何正确使用它们来处理数据和解决问题。

4-array-p

5-pointer-p

西安交通大学计算机学院的李昊教授在《计算机程序设计》课程中讲解了指针的概念和使用。指针是一种复合类型,用于存储和访问数据的地址。通过取地址操作符(&)和解引用操作符(*),可以获取变量的地址和地址对应的值。指针允许基于地址的访问方式,与基于变量名的访问相比,它提供了更底层的存储逻辑控制能力。例如,在函数参数传递时,使用指针可以避免拷贝大对象带来的开销。

指针也有其特殊情况,如未初始化的指针(野指针)和空指针(nullptr)。指针可以进行赋值操作,但只能修改指向的值,不能修改变量的地址。指针的指针和指针算术进一步扩展了指针的使用,允许对指针进行整数加减运算,这在处理数组和字符串时非常有用。数组名在C++中是数组首地址的右值,通过指针可以灵活地访问数组元素。字符串在底层以字符数组存储,使用字符指针处理字符串时需要注意野指针和未定义行为的问题。

5-pointer-p

6-memory-p

西安交通大学计算机学院的李昊教授在《计算机程序设计》课程中讲解了动态内存管理。他介绍了全局变量和局部变量的区别,全局变量在程序启动时分配,结束时销毁;局部变量则在进入和离开程序块时分配和销毁。他还讲解了变量的存储位置,包括静态内存和栈内存。李教授强调了自动变量分配的优缺点,指出其内存管理虽然对程序员透明,但灵活性有限。他通过实例说明了自动变量分配的问题,如无法灵活管理生存周期和高效使用内存。李教授进一步讲解了动态内存分配的概念,包括堆内存的使用、动态内存的初始化和回收,以及动态分配内存的生存周期。他还讨论了动态数组的创建和回收,以及使用动态数组时应注意的问题,如内存泄漏、悬挂指针和二次回收。最后,他总结了动态内存分配的关键点,强调了new和delete必须配对使用的重要性。

6-memory-p

7-container

西安交通大学计算机学院的李昊老师在课程“现代C++:标准库与容器”中,介绍了C++标准库中的stringvectorstring类封装了C风格字符串,提供了重载操作符和方法,如读写、判断长度、比较和相加。vector是动态数组的封装,支持添加、删除元素,以及遍历操作。课程还涉及了迭代器的使用,包括如何通过迭代器访问和修改容器中的元素。此外,还包括了关于引用的讲解,强调了引用是变量的别名,以及如何通过引用来访问数据。课程通过多个编程示例和QUIZ,展示了stringvector在实际编程中的应用。

7-container

8-function

西安交通大学计算机学院李昊教授的《计算机程序设计》课程介绍了C++函数的基础概念和使用。课程内容包括函数的定义、调用、原型,以及参数传递的方式。函数是可复用的代码块,可以接收参数并产生结果。参数传递分为按值传递和按引用传递,其中按值传递会创建实参的副本,而按引用传递则直接操作实参。课程还讨论了指针形参、数组参数、二维数组参数的传递方式,以及如何使用引用或指针返回额外信息。最后,课程总结了函数的基础知识,包括接收参数、返回值、形参与实参的概念,以及函数参数传递的不同方式。

8-function

编程与调试环境的使用(3) (1)

本文介绍了编程与调试环境的基本概念和工具。代码编辑器如VS Code和IntelliJ IDEA提供了语法高亮、自动完成等功能。编译器如GCC将高级语言代码转换为机器代码。IDE集成了编辑器、编译器、调试器等工具,简化开发流程。调试器如gdb允许设置断点、单步执行,帮助查找错误。

文中还介绍了WSL和虚拟机两种Linux运行环境的安装方法,以及Linux基本命令和vim编辑器的使用。通过示例代码演示了在Linux环境下使用vim编写、编译和使用gdb调试C++程序的过程。最后提供了相关参考资料链接。

总的来说,本文为初学者提供了一套完整的编程和调试工具介绍及使用方法,涵盖了代码编辑、编译、调试和运行环境的搭建,适合Linux编程入门学习。

编程与调试环境的使用(3) (1)