《程序初步设计》课件.pptx
程序初步设计 制作人:PPT制作者时间:2024年X月目录第第1 1章章 简介简介第第2 2章章 数据类型与变量数据类型与变量第第3 3章章 控制语句控制语句第第4 4章章 面向对象程序设计面向对象程序设计第第5 5章章 数据结构数据结构第第6 6章章 总结总结 0101第1章 简介 程序设计的概念程序设计的概念程序设计是指通过编写计算机程序实现特定功能的过程。程序设计是指通过编写计算机程序实现特定功能的过程。程序员需要使用编程语言来编写代码,并调用计算机的硬程序员需要使用编程语言来编写代码,并调用计算机的硬件和操作系统等资源来实现程序的执行。件和操作系统等资源来实现程序的执行。程序设计的重要性程序可以自动完成重复性、繁琐的工作自动化通过程序设计,可以提高工作效率,节省时间和资源提高效率程序设计可以解决很多实际问题,例如数据分析、人工智能等解决问题程序设计可以创造出有价值的产品或服务,带来商业和社会价值创造价值课程学习目标及评估方法考试成绩、课堂表现掌握基本编程语言的语法和规则上机实践、课堂表现熟悉程序的开发流程和工具作业、考试成绩能够设计并实现简单的程序课堂表现、项目作业具备良好的编程习惯和团队协作能力数据类型用于表示整数,包括有符号和无符号整数整型用于表示实数,包括单精度和双精度浮点数浮点型用于表示字符,包括ASCII和Unicode字符字符型用于表示真或假,只有两个取值布尔型变量声明变量声明变量名变量名变量类型变量类型变量初始值(可选)变量初始值(可选)变量赋值变量赋值使用赋值运算符使用赋值运算符变量名变量名 值值可以多次赋值可以多次赋值变量作用域变量作用域全局变量全局变量局部变量局部变量变量变量变量类型变量类型整型整型浮点型浮点型字符型字符型编辑器编辑器编辑器是程序员编写代码的工具,可以提供代码高亮、自编辑器是程序员编写代码的工具,可以提供代码高亮、自动补全、错误提示等功能。常用的编辑器有动补全、错误提示等功能。常用的编辑器有VS CodeVS Code、Sublime TextSublime Text、AtomAtom等。等。微软开发的IDE,支持多种语言和平台VisualStudio0103Python开发的IDE,支持科学计算和Web开发PyCharm02Java开发的IDE,支持插件扩展Eclipse调试工具调试工具GDBGDBLLDBLLDBWinDbgWinDbg调试技巧调试技巧用类比法找错误用类比法找错误学会查看日志学会查看日志多使用断言多使用断言调试流程调试流程重现问题重现问题定位问题定位问题修复问题修复问题验证修复验证修复调试器调试器调试方式调试方式断点调试断点调试单步执行单步执行查看变量查看变量需求分析需求分析是程序开发的第一步,需要明确用户需求和功能需求,以便后续的设计和开发。在分析需求时,需要考虑功能性、非功能性、安全性、易用性等方面。采用模块化、层次化的方式进行设计结构化设计0103常用的设计模式有工厂模式、单例模式、观察者模式等设计模式02采用类、继承、多态等概念进行设计面向对象设计编写代码常用的编程语言有C、C+、Java、Python等编程语言常用的开发工具有VSCode、Eclipse、PyCharm等开发工具常用的库函数有stdio.h、math.h、string.h等库函数测试测试是程序开发的最后一步,需要对程序进行功能测试、性能测试、压力测试等,以确保程序的正确性、鲁棒性和可靠性。在进行测试时,需要编写测试用例、测试报告和测试计划。0202第2章 数据类型与变量 数据类型int,float,double,char,bool等基本数据类型数组,指针,结构体,枚举,联合等引用数据类型自动类型转换,强制类型转换和类型提升数据类型转换变量变量是程序中的基本数据单位,占用内存空间变量的定义变量名由字母、数字、下划线组成,不能以数字开头变量的命名规范变量的作用域决定了变量在程序中的可见性变量的作用域数组数组是一种连续的内存空间,用来存储多个同类型的数据数组的定义数组遍历是指对数组中的每个元素进行访问数组的遍历多维数组是指数组中包含其他数组的数组多维数组指针指针是一个变量,存储另一个变量的地址指针的定义指针可以用来访问数组元素,指针和数组名是等价的指针与数组的关系指针可以用来动态分配内存,实现数据结构,提高程序效率等指针的作用数据类型与变量数据类型与变量数据类型是编程语言中的基础概念。不同的数据类型可以数据类型是编程语言中的基础概念。不同的数据类型可以存储不同类型的数据,如整数、浮点数、字符串等。变量存储不同类型的数据,如整数、浮点数、字符串等。变量是用来存储这些数据的内存空间,变量名用来标识这个内是用来存储这些数据的内存空间,变量名用来标识这个内存空间。在本章中,我们将学习数据类型和变量的概念,存空间。在本章中,我们将学习数据类型和变量的概念,以及它们在程序中的使用方法。以及它们在程序中的使用方法。变量名应该反映变量存储的数据的含义使用有意义的变量名0103变量名不能和编程语言中的保留字相同避免使用保留字02变量名应该遵循命名规范,如不能以数字开头遵循命名规范数组的遍历数组遍历可以使用for循环,也可以使用while循环。for循环更为常用,可以使用数组的长度作为循环终止条件,遍历数组中的每个元素。while循环则需要使用数组下标作为循环变量,需要注意循环终止条件。强制类型转换强制类型转换强制类型转换指程序显式将一强制类型转换指程序显式将一种数据类型转换为另一种种数据类型转换为另一种转换可以是从低精度类型到高转换可以是从低精度类型到高精度类型,如精度类型,如intint到到floatfloat也可以是从高精度类型到低精也可以是从高精度类型到低精度类型,如度类型,如floatfloat到到intint强制类型转换可能会产生数据强制类型转换可能会产生数据精度的损失精度的损失类型提升类型提升类型提升是指在表达式中将一类型提升是指在表达式中将一种数据类型提升为另一种种数据类型提升为另一种提升可以是从低精度类型到高提升可以是从低精度类型到高精度类型,如精度类型,如intint到到floatfloat也可以是从高精度类型到低精也可以是从高精度类型到低精度类型,如度类型,如floatfloat到到intint类型提升不会产生数据精度的类型提升不会产生数据精度的损失损失 数据类型转换数据类型转换自动类型转换自动类型转换自动类型转换指程序自动将一自动类型转换指程序自动将一种数据类型转换为另一种种数据类型转换为另一种转换可以是从低精度类型到高转换可以是从低精度类型到高精度类型,如精度类型,如intint到到floatfloat也可以是从高精度类型到低精也可以是从高精度类型到低精度类型,如度类型,如floatfloat到到intint自动类型转换可能会导致数据自动类型转换可能会导致数据精度的损失精度的损失 0303第3章 控制语句 条件语句条件语句条件语句用来判断特定条件是否成立,包括条件语句用来判断特定条件是否成立,包括 if if语句语句 和和 switchswitch语句。语句。if if语句用于基于不同的条件执行不同的代码语句用于基于不同的条件执行不同的代码块。块。switchswitch语句与语句与if if语句类似,但它是根据表达式的值来语句类似,但它是根据表达式的值来选择要执行的语句块。选择要执行的语句块。if语句if(condition)statement1elsestatement2语法如果条件为真,执行语句1,否则执行语句2。else语句是可选的。说明if(x10)println(xisgreaterthan10.)elseprintln(xisnotgreaterthan10.)示例switch语句switch(expression)casevalue1:statement1;break;casevalue2:statement2;break;default:defaultStatement;语法根据表达式的值,选择要执行的语句块。每个case语句都代表一个可能的值,并且如果表达式与之匹配,则执行那个case。default可选,表示如果表达式与所有case都不匹配,则执行default语句。说明switch(day)case1:println(Monday);break;case2:println(Tuesday);break;default:println(Otherday);示例循环语句循环语句循环语句用于重复执行一个代码块,包括循环语句用于重复执行一个代码块,包括 while while语句,语句,do-whiledo-while语句和语句和 for for语句。语句。whilewhile语句在执行前先测试条语句在执行前先测试条件,如果不成立,则不执行循环体。件,如果不成立,则不执行循环体。do-whiledo-while语句与语句与whilewhile语句类似,但它会先执行一次循环体,然后再测试语句类似,但它会先执行一次循环体,然后再测试条件。条件。forfor语句包括三个表达式:初始化表达式,循环条语句包括三个表达式:初始化表达式,循环条件表达式和递增表达式。件表达式和递增表达式。while语句while(condition)statement语法只要条件为真,就一直执行循环体。如果循环条件一开始就为假,则循环体不会执行。说明vari0while(i10)println(i)i+示例do-while语句dostatementwhile(condition);语法与while语句类似,但它会先执行一次循环体,然后再测试条件。这意味着循环体至少会执行一次。说明vari=0doprintln(i)i+while(i10)示例for语句for(initialization;condition;increment)statement语法包括三个表达式:初始化表达式,循环条件表达式和递增表达式。初始化表达式在循环开始前执行一次,循环条件表达式在每次循环开始前测试,递增表达式在每次循环结束后执行。说明for(iin1.10)println(i)示例跳转语句跳转语句跳转语句可以改变代码的执行顺序,包括跳转语句可以改变代码的执行顺序,包括 break break语句,语句,continuecontinue语句和语句和 return return语句。语句。breakbreak语句用于跳出循环,语句用于跳出循环,结束当前的循环体。结束当前的循环体。continuecontinue语句用于跳过循环中的某个语句用于跳过循环中的某个迭代,继续执行下一次迭代。迭代,继续执行下一次迭代。returnreturn语句用于返回函数的语句用于返回函数的值,如果在函数体的外部使用,则会终止程序的执行。值,如果在函数体的外部使用,则会终止程序的执行。break语句break;语法用于跳出循环,结束当前的循环体。说明for(iin1.10)if(i=5)breakprintln(i)示例continue语句continue;语法用于跳过循环中的某个迭代,继续执行下一次迭代。说明for(iin1.10)if(i%2=0)continueprintln(i)示例return语句returnexpression;语法用于返回函数的值。如果在函数体的外部使用,则会终止程序的执行。说明funsquare(x:Int):Intreturnx*x示例函数函数函数是封装了一段可重用的代码的逻辑块,包括函数的定函数是封装了一段可重用的代码的逻辑块,包括函数的定义,函数的调用和函数参数。函数定义了一个代码块,它义,函数的调用和函数参数。函数定义了一个代码块,它接受零个或多个参数,并且可能会返回一个值。函数可以接受零个或多个参数,并且可能会返回一个值。函数可以在定义后重新使用,以便让代码更简洁,易于维护和阅读。在定义后重新使用,以便让代码更简洁,易于维护和阅读。函数的定义funfunctionName(parameter1:type1,parameter2:type2,.):returnTypefunctionbody语法函数由函数头和函数体组成。函数头包括函数名,参数和返回类型(如果有的话)。函数体包含函数的实际代码。说明funsquare(x:Int):Intreturnx*x示例函数的调用functionName(argument1,argument2,.)语法函数调用时,传递给函数的参数必须与函数定义中的参数类型和顺序匹配。说明valresult=square(4)示例函数参数funfunctionName(parameter1:type1,parameter2:type2,.)语法函数参数是传递给函数的值,可以是常量、变量、表达式或函数调用。函数的参数列表用于定义函数所需的参数类型和名称。说明funsquare(x:Int):Intreturnx*x示例 0404第4章 面向对象程序设计 面向对象程序设计概念面向对象编程是一种程序设计思想,它将程序分解成一个个对象,通过对象之间的相互作用来实现程序的功能。面向对象编程的核心概念是类和对象、继承和多态。类与对象属性和方法的定义方式类的定义与属性对象的实例化和调用方法对象的创建与使用构造函数和析构函数的作用构造函数与析构函数继承与多态子类继承父类的属性和方法继承的概念子类继承父类的属性和方法,也可以重写父类的方法子类与父类的关系不同的子类对象可以调用相同的父类方法,实现多态多态的实现根据不同的需求创建不同的类实例工厂模式0103解释器将一种语言转换为另一种语言解释器模式02保证一个类只有一个实例对象单例模式面向过程编程面向过程编程将程序看作一系列的步骤将程序看作一系列的步骤每个步骤都是一系列指令的集每个步骤都是一系列指令的集合合核心思想是函数、变量和流程核心思想是函数、变量和流程控制控制区别区别面向对象编程更加灵活,可扩面向对象编程更加灵活,可扩展性更强展性更强面向过程编程更加直观,效率面向过程编程更加直观,效率更高更高 面向对象编程与面向过程编程面向对象编程与面向过程编程面向对象编程面向对象编程将程序分解成一个个对象将程序分解成一个个对象通过对象之间的相互作用来实通过对象之间的相互作用来实现程序的功能现程序的功能核心概念是类和对象、继承和核心概念是类和对象、继承和多态多态类与对象类与对象类是面向对象程序设计的基本概念,它描述了一类具有相类是面向对象程序设计的基本概念,它描述了一类具有相同属性和方法的对象。对象是类的实例,它具有类的所有同属性和方法的对象。对象是类的实例,它具有类的所有属性和方法,并可以调用这些方法。属性和方法,并可以调用这些方法。继承与多态子类继承父类的属性和方法继承的概念不同的子类对象可以调用相同的父类方法,实现多态多态的实现封装可以隐藏类的实现细节,提高代码的安全性和可维护性封装的作用设计模式设计模式设计模式是面向对象程序设计中常用的一种编程思想,它设计模式是面向对象程序设计中常用的一种编程思想,它可以提高程序的可读性、可维护性和可扩展性。常用的设可以提高程序的可读性、可维护性和可扩展性。常用的设计模式包括工厂模式、单例模式、解释器模式等。计模式包括工厂模式、单例模式、解释器模式等。面向对象编程的优点1.代码更加灵活,可扩展性更强;2.更易于维护和测试;3.提高程序的可读性和重用性;4.更加适合大型软件系统的开发。0505第5章 数据结构 线性结构线性结构线性结构包括数组、链表、栈和队列等。数组是一种随机线性结构包括数组、链表、栈和队列等。数组是一种随机存储结构,支持下标访问,但是插入和删除效率较低。链存储结构,支持下标访问,但是插入和删除效率较低。链表是一种动态存储结构,支持快速插入和删除,但是访问表是一种动态存储结构,支持快速插入和删除,但是访问元素需要遍历链表。栈和队列是特殊的线性结构,支持快元素需要遍历链表。栈和队列是特殊的线性结构,支持快速入栈和出栈、入队和出队。速入栈和出栈、入队和出队。线性结构是最基本、最简单的数据结构之一,它的每个数据元素都只有一个直接前驱和一个直接后继。数组一段连续的存储空间,用于存储一组相同类型的数据元素定义支持下标访问,插入和删除效率较低特点适用于随机访问和修改元素的场景应用链表一组零散的存储空间,通过指针连接起来定义支持快速插入和删除,但是访问元素需要遍历链表特点适用于频繁插入和删除元素的场景应用栈和队列特殊的线性结构,支持快速入栈和出栈、入队和出队定义先进后出,适用于表达式求值、函数调用等场景栈先进先出,适用于任务调度、消息队列等场景队列树结构树结构树结构是一种非线性的数据结构,它由若干个节点和边组树结构是一种非线性的数据结构,它由若干个节点和边组成,每个节点最多有一个直接前驱和多个直接后继。树结成,每个节点最多有一个直接前驱和多个直接后继。树结构包括二叉树、构包括二叉树、AVLAVL树和堆等,其中二叉树是最常用的树树和堆等,其中二叉树是最常用的树结构之一。结构之一。二叉树每个节点最多有两个子节点的树结构定义查找和插入效率较高,但是不适用于存储基数较大的数据集合特点适用于排序、查找等场景应用AVL树一种自平衡二叉搜索树,任何节点的左右子树高度差不超过1定义查找和插入效率较高,适用于存储基数较大的数据集合特点适用于排序、查找等场景应用堆一种完全二叉树,满足任何节点的值都不大于其子节点的值定义查找和插入效率较高,适用于优先级队列、排序等场景特点适用于优先级队列、排序等场景应用图结构图结构图结构是一种非线性的数据结构,它由若干个节点和边组图结构是一种非线性的数据结构,它由若干个节点和边组成,每个节点可以有多个直接前驱和直接后继。图结构包成,每个节点可以有多个直接前驱和直接后继。图结构包括有向图、无向图和加权图等。括有向图、无向图和加权图等。图的定义由点和边组成的非线性结构定义节点之间的关系可以是无序的、有序的、有权的特点适用于网络拓扑、社交网络、路线规划等场景应用图的遍历访问图中所有节点的过程定义从起点开始,递归访问与其相邻的节点,直到找到目标节点或遍历完整张图深度优先搜索从起点开始,按照距离逐层访问与其相邻的节点,直到找到目标节点或遍历完整张图广度优先搜索最短路径算法寻找两个节点之间最短路径的算法定义从起点开始,计算到某个节点的最短距离,并标记该节点为已访问,如此反复直到遍历完整张图Dijkstra算法通过动态规划的方法,计算任意两个节点之间的最短距离Floyd算法排序算法排序算法排序算法是一种常用的算法,用于将一个数据集合按照某排序算法是一种常用的算法,用于将一个数据集合按照某种规则排列成有序的序列。常见的排序算法包括冒泡排序、种规则排列成有序的序列。常见的排序算法包括冒泡排序、快速排序和归并排序等。快速排序和归并排序等。冒泡排序一种简单的排序算法,通过交换相邻的元素,逐步将最大的元素移到序列的末尾定义效率低下,不适用于大规模数据集合特点适用于小规模数据集合的排序应用快速排序一种高效的排序算法,通过分治思想,将大规模的数据集合分解成小规模的子问题定义效率高,适用于大规模数据集合特点适用于大规模数据集合的排序应用归并排序一种稳定的排序算法,通过分治思想,将大规模的数据集合分解成小规模的子问题,并将子问题的解归并起来定义效率高,稳定性好,适用于大规模数据集合特点适用于大规模数据集合的排序应用 0606第6章 总结 课程回顾数据类型、变量、运算符、条件语句、循环语句重要概念面向对象、函数、模块、文件读写、异常处理重点知识点简易计算器、学生信息管理系统、文件备份工具典型案例分析学习反思深入理解编程思想、自我学习能力的提升学习体会多实践、多思考、多交流、多反思学习方法掌握Python编程基础、学会实际应用、开拓思维方式、认识团队意识的重要性学习收获实践建议巩固知识、提升技能、为未来发展打基础实践的重要性编写小程序、参加项目、参加比赛、阅读源码、与人合作实践方法勇于尝试、坚持不懈、注重代码规范、关注实际需求、及时反馈实践建议课程评估作业打分、考试成绩、课程反馈问卷评估方式大部分同学掌握了编程基础、具备了一定的编程实践能力评估结果加强实践环节、增加案例分析、提供更多实用的编程技巧对课程改进的建议多问问题、多分析解决方案多思考0103总结经验、发现不足、及时调整多反思02参加讨论、交换经验、寻求帮助多交流实践的力量实践的力量实践是巩固知识、提升技能的重要途径。在实践过程中,实践是巩固知识、提升技能的重要途径。在实践过程中,我们能够更加深入地理解编程思想,发现自身不足,掌握我们能够更加深入地理解编程思想,发现自身不足,掌握实际应用的技巧,不断提高自己的水平。实际应用的技巧,不断提高自己的水平。实践建议通过独立编写小程序来增加编程经验编写小程序参加实际项目,锻炼合作能力参加项目参加编程比赛,提升动手能力参加比赛学习优秀项目的代码风格和技巧阅读源码模块化模块化模块化是指将大的复杂问题分模块化是指将大的复杂问题分割为较小的子问题割为较小的子问题算法化算法化算法化是指将问题转化为计算算法化是指将问题转化为计算机可执行的步骤机可执行的步骤优化优化优化是指提高计算机程序的效优化是指提高计算机程序的效率率编程思维编程思维抽象抽象抽象是指忽略信息中的细节,抽象是指忽略信息中的细节,从而把不同的事物归入到同一从而把不同的事物归入到同一类别中类别中学习收获通过本门课程的学习,我掌握了Python编程的基础知识,学习了编程的基本思想和方法,深入了解了面向对象、函数、模块、异常处理、文件读写等内容,同时也学会了一些实用的编程技巧。在实践的过程中,我不断提高了自己的编程能力,并且认识到了团队合作的重要性。通过课程的学习,我也进一步开拓了自己的思维方式,增加了自己的求知欲和自我实现的动力。谢谢观看!下次再会