循环结构中:
break 是立即中断循环,退出循环语句。执行循环语句后面的语句。
continue 是中断本步循环,跳到下一步循环。
return 是立即跳出循环语句,并送返return数值,退出此循环语句所在的函数。
exit 是 立即结束整个程序, 退出主函数。
Matlab中实现循环结构的语法包括for循环和while循环。
for循环:
for循环用于对一段指定范围的变量进行循环 *** 作,其基本语法为:
matlabCopy codefor 变量 = 范围循环体
end
其中,变量是一个循环变量,范围是一个包含一组数值的向量或矩阵,循环体是需要重复执行的语句块。
例如,以下程序通过for循环计算1到10的平方和:
matlabCopy codesum = 0;for i = 1:10
sum = sum + i^2;
end
disp(sum);
输出结果为:385
while循环:
while循环用于在满足条件时执行一段语句块,其基本语法为:
matlabCopy codewhile 条件循环体
end
其中,条件是需要满足的逻辑条件,循环体是需要重复执行的语句块。
例如,以下程序通过while循环计算1到10的平方和:
matlabCopy codesum = 0;i = 1;
while i <= 10
sum = sum + i^2;
i = i + 1;
end
disp(sum);
输出结果为:385
众所周知,循环结构是整个程序设计的重中之重,该部分在整个程序设计中起到一个枢纽作用,从一定意义上讲,该部分知识掌握的好与坏,将直接影响学生对整个程序设计语言的把握。下面我就对该章节的内容提一些我的浅见。教参中提出了三个教学要求:⑴掌握For-Next语句的格式和功能,理解For-Next语句的执行过程,学会使用For-Next语句实现计数循环。⑵ 掌握Do While-Loop和Do-Loop Until语句的格式和功能,会使用Do While-Loop和Do-Loop Until语句实现条件循环。⑶ 学会编写具有双重循环结构的程序。从要求来看,这部分知识的重点就是要求学生掌握几种循环结构的语句,并能够熟练运用这些语句编写出程序。教材P193-194,[6-6-1]首先用两个例子引入,旨在提出FOR/NEXT结构,紧接着讲解了该结构的一些固定格式和运行过程。在讲解的过程中,书中没有举出相应的例子,只是给出了两个程序流程图。这对于学生的理解是由一定的困难的。如果我们将语句的格式加以变动,改为FOR I=A TO B STEP C循环体NEXT I然后对其中的A,B,C进行必要的说明,尤其是循环体部分和循环次数的问题。在我所教的学生中普遍有这样的一个问题,在学习循环结构初期,学生对于循环体的含义搞不清,经常出错。另外,对于FOR/NEXT结构的另外一个重点就是计数功能,实际上就是循环次数的问题,从教学要求中我们可以看出这部分知识是要求学生把握的,我们可以给出求循环次数的公式N = INT((B-A)/ C)+1,这样学生在做有些题目的时候就很方便,而且对于后面学习双重循环结构有帮助。书中在讲述这部分知识时的例子不多。大家都知道我们学程序就是要会写程序,可对于刚开始学的人,要写一个程序是不容易的,我个人认为还是让学生们先多读一些程序,多看一些程序,然后再让他们去写去编。课后习题中也只有一两道关于for/next的题目。这几道题目对于巩固这部分知识是远远不够的,该部分的习题应该增加些。紧接着是[6-6-2]的内容P195举了一个for/next结构的例子,为了巩固上一节的内容,顺便引出DO—LOOP循环语句,主要包括以下两种结构DO WHILE /LOOP,DO / LOOP UNTIL ,这两种结构最主要的就是让学生搞清楚条件为真和条件为假的问题,这个书中讲的很清楚。然后分别举了例子进行讲解。我对这两个例子[6-6-3][6-6-4]不是很欣赏,主要原因是这两个例子中都涉及到比较复杂的数学运算,学生不易搞懂。如果又要讲结构又要讲算法,不利于学生对DO-LOOP结构的把握。我个人认为:何不将P194页的那个例题,分别用DO WHILE /LOOP 和DO /LOOP UNTIL 来进行设计,一来可以巩固该结构,二来可以与FOR/NEXT结构联系起来,比较这几种结构的不同,便于学生从整体上理解和把握。该部分的课后练习有两道程序阅读,有两道编程,难度适中,适当的还可以另外再添加一些题目给学生练习加以巩固。循环结构的最后部分是循环的嵌套,这部分是整个循环的一个综合。主要是FOR/NEXT结构以及FOR和DO结构的套用,教材中的程序主要是计数问题和文本输出问题,书中P199[6-6-5]就是一个典型对称型文本输出问题。书中对于该部分知识的讲解颇为简单,只是在程序中给出了多重FOR语句的结构。建议这个地方,最好讲一个计数的程序,然后再来讲文本输出。计数程序如下:FOR I=1 TO 3FOR J=1 TO 3FOR K=J TO 3FOR J=1 TO IFOR K=J TO 3NEXT K , J ,IEND对比两个程序的不同,让学生理解多重循环的执行过程。然后我们可以添一些循环体让学生来计算,巩固所学知识,程序如下:FOR X =1 TO 10R=0FOR Y =1 TO 8S=0FOR Z =1 TO 6T=0R=R+1:S=S+2:T=T+3NEXT Z ,Y, XPRINT “R=”;R,“S=”;S,“T=”;TEND通过这个程序的讲解学生对多重循环的执行有的一定的理解的基础之上,我们来讲文本输出问题可能会好一点,在我教学实践的过程中,发现这样更容易让学生接受。书中P199[6-6-5]这个例题有一定的难度,不适宜一开始就讲解,最好从简单的开始,可以将书中的课后习题中P203的两道题目拿出来先讲,然后再讲对称结构的文本,这样的效果会更好。以上这些都是关于FOR/NEXT结构的套用,书中[6-6-6]就是一个典型的FOR / DO套用的例子,这是一个输出素数的问题。直接讲解,内容比较多,不利于学生掌握。建议将其细化,先讲素数的判别方法,然后再综合讲解,这样学生容易接受。其实这部分知识比较多,也比较难,我们可以将其分开来,一部分一部分讲,比如分成:1、循环次数问题 2、累加和累乘问题 3、素数问题 4、质因子问题 5、哥德巴赫猜想问题 6、文本输出问题 7、数字拆分、水仙花数、同构数等等部分,我们可以根据实际需要进行讲解。现在随着选修课课程的不断深入实施,要想把程序设计这门选修课上好,以上的这些算法可能是必不可少的。也只有将这部分知识讲精讲细,才能真正将循环这一张章节掌握,也才能为后面的数组部分知识打下一个好的基础。以上是我对信息技术教学过程中对循环结构这一章节的一些个人愚见,如有不当之处,恳请广大专家同仁批评指导。
1冒泡排序:时间复杂度为O(n n)
NSArray array ;
int i ,j;
for(i = 0, i < arraycount -1, i++)
{
for( j = i , j < arraycount -1,j++){
if(array[i] > array[j]){
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
2二分查找(折半查找),时间复杂度为o(log n )
int search(int array[], int low, int high, int target)
{
if (low > high) return -1;//第一次,low为0,high为数组的个数。这是用递归实现的。
int mid = (low + high)/2;
if (array[mid]> target)
return search(array, low, mid -1, target);
if (array[mid]< target)
return search(array, mid+1, high, target);
//if (midValue == target)
return mid;
}3单链表反转
使用3个指针遍历单链表,逐个链接点进行反转。
ActList ReverseList2(ActList head)
{
//ActList temp=new ActList;
if(NULL==head|| NULL==head->next) return head; //少于两个节点没有反转的必要。
ActList p;
ActList q;
ActList r;
p = head;
q = head->next;
head->next = NULL; //旧的头指针是新的尾指针,next需要指向NULL
while(q){
r = q->next; //先保留下一个step要处理的指针
q->next = p; //然后p q交替工作进行反向
p = q;
q = r;
}
head=p; // 最后q必然指向NULL,所以返回了p作为新的头指针
return head;
}
4判断一个链表是否为循环链表
判断一个单向链表是否是循环链表比较简单,只要将一个指针p指向表的第一个节点,而另外一个指针q指向
p的下一个节点,然后让q向后滑动,直到q为0或q等于p(此时表是循环链表)为止。
5判断一个单链表是否存在环
设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,fast每次前进二步,如果链表存在环,则fast必定先进入环,而slow后进入环,两个指针必定相遇。(当然,fast先行头到尾部为NULL,则为无环链表)程序如下:
bool IsExitsLoop(slist head)
{
slist slow = head, fast = head;
while ( fast && fast->next )
{
slow = slow->next;
fast = fast->next->next;
if ( slow == fast ) break;
}
return !(fast == NULL || fast->next == NULL);
}
以上就是关于循环结构中break,continue,return和exit的区别全部的内容,包括:循环结构中break,continue,return和exit的区别、程序的循环结构在Matlab中如何实现、循环结构在程序中起到什么样的作用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)