`
小明哥
  • 浏览: 90944 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

斯坦福大学开放课程: 《编程方法》第7课

阅读更多

第七课:循环与“一半”问题
For循环与While循环的对比,例程序CheckerBoad,在Java中创建函数,创建函数举例,FactorialExample程序,用函数返回对象

 

当不知道具体的循环次数时,可以使用while循环。这就是我们所说的模糊循环,不是无限循环。

 

哨兵值,我们将会用一个常量去判断用户什么时候想输入数据,什么时候停止输入数据,所以在编程中这个值常被称之为哨兵。

 

例:从用户那读入一连串数字,直到用户输入0才停止读入,然后计算这些数字的和。

 

public class Add extends ConsoleProgram {

	private static final int SENTINEL = 0;//哨兵
	
	public void run(){
		int total = 0;//输入值总和
		
		int val = readInt("Enter val:");//输入值
		while(val != SENTINEL){
			total += val;
			val = readInt("Enter val:");
		}
		println("Total = " + total);
	}
}

循环会判断如果你给的值不是哨兵值,就不会停止。

在计算机科学或者计算机编程中,我们很讨厌重复的代码。如果能够避免重复代码,即使只有一行我们都会尽力去消除,你能在上面看到重复的代码,对吧。向用户询问数值的这个操作至少要执行一次,但是在第一场执行后,我们需要在循环里面重复这个操作,所以我们遇到了难题,如何避免重复的代码呢?

public class Add extends ConsoleProgram {

	private static final int SENTINEL = 0;//哨兵
	
	public void run(){
		int total = 0;//输入值总和
			
		while(true){
			int val = readInt("Enter val:");//输入值
			if(val == SENTINEL) break;//如果输入值等于哨兵就跳出循环
			total += val;
		}
		println("Total = " + total);
	}
}

循环会判断循环条件永远为真,看起来很奇怪。你会担心它不是一个无限循环吗?只有一种情况会被终止,我们会向用户询问数值,判断这个值是否为哨兵值。如果是,跳出循环。

break语句的作用就是它会跳出围绕代码最里面的那层循环。实际上它的用途是在循环内部检查跳出循环的条件,而不是在开头或每次进入循环的时候检查。

从编程风格来说,一个循环体内有多重终止条件是非常糟糕的。因为这会让程序员很难识别哪个条件为真,才能跳出循环。

你会去计算某些事物的执行次数(for循环),或者会在条件为真时才做某事(while),这就是两种循环的区别。

分享到:
评论

相关推荐

    《斯坦福大学开放课程:编程方法》讲义

    《斯坦福大学开放课程:编程方法》是一门深入浅出的计算机科学入门课程,旨在教授学生基础的编程技能和概念。这门课程的讲义涵盖了多个关键知识点,适合初学者和有经验的程序员来巩固基础。 首先,"编程方法"...

    《斯坦福大学开放课程: 编程方法》(Open Stanford Course : Programming Methodology)[01-47]

    《斯坦福大学开放课程: 编程方法》是面向初学者的一门经典计算机科学课程,旨在教授编程的基础概念和最佳实践。这门课程涵盖了广泛的知识点,从基本的编程语法到高级的设计原则,帮助学生建立坚实的编程基础。下面将...

    斯坦福开放课程 讲义7一:机器人卡雷尔 答案

    本压缩包文件包含了斯坦福大学开放课程——编程方法讲义的第七部分,作业一:机器人卡雷尔的相关解答。这个作业旨在帮助学生掌握基础的编程逻辑和算法设计,特别是与机器人路径规划和环境交互相关的概念。下面将详细...

    斯坦福机器学习公开课编程作业答案ex8

    在本压缩包“machine-learning-ex8”中,包含的是斯坦福大学(Stanford)机器学习课程(Machine Learning)的第八次编程作业的答案。这门课程由吴恩达(Andrew Ng)教授,是全球范围内广受欢迎的在线教育资源,旨在...

    作业一:机器人卡雷尔.pdf

    这份作业来源于《斯坦福大学开放课程:编程方法》的讲义#7,是该课程的一部分实践任务。作业的目标是通过控制一个名为“卡雷尔”的虚拟机器人来完成一系列任务。卡雷尔是一个二维世界中的机器人,只能执行简单的动作...

    各种学习资料

    迷你版+photoshop教程大全(到经典实例第7集).rar+存储过程在企业级开发中的应用(更新至8课时).rar+全新JAVA核心课堂 [完].rar+深入Java虚拟机教学视频(HDTV)(北京圣思园).rar+斯坦福大学开放课程 编程方法...

    斯坦福课件 11-18部分

    这些文件是斯坦福大学课程的第11到18部分,涵盖了移动设备开发中的关键知识点。以下是这些课程涉及的主要IT技术及其详细解释: 1. **Core Data**:苹果的Core Data是一个强大的对象图形管理框架,用于处理应用程序...

Global site tag (gtag.js) - Google Analytics