第一步:观察图形。首行是1颗星,其余的每一行都比上一行多1颗星;其次,每一行的星号数和行数值相等,第一行有1颗星,第二行有2颗星,以此类推,第n行有n颗星。
第二步:设计方案。根据进阶1的经验,可以先封装一个自定义活动printN,用来实现传入行数n,则打印n颗星。其次,主程序中编写循环,数出当前是第几行,将行数传给自定义活动即可。
第三步:实现。
首先实现自定义活动。需要传递行数,所以,首先进入自定义活动中创建形式参数。
紧接着编写逻辑,循环n遍,每一遍都拼接上一颗星,循环结束后,拼接出n颗星并打印。
紧接着先测试该自定义活动是否能准确运行,测试输入任意一个值(大于0的整数),查看打印出来的星号数是否等于输入的数。如果相等,则可以进行下一步。
其次实现Main程序:编写循环,对行数进行计数,从1开始数。
发现结果只打印了一颗星,也就是第二行没有打印出来。
查找问题:i=1,i<=5成立,进入自定义活动,然后打印后,就可以工作流出来,所以后续的程序都没有执行。
于是,把工作流连通,也就是下图标记为1的地方对应的连线(完整的自定义活动)。
再次运行查看测试结果。
将Main中的state.i<=5改为state.i<=10,再次测试观察结果。
程序完成,没有什么问题了。
当然,i也可以从0开始数,那么,第0行打印1颗星,第1行打印2颗星,以此类推,可以找到规律,第n行打印n+1颗星,传递参数的时候,就先计算出n+1再传递给自定义活动即可。
最后进行测试
第一步:观察图形。一共有5行,第一行打印5颗星;第二行打印4颗星,以此类推,第n(最大取值为5)行打印的星号数是5-n。
第二步:设计方案: 根据进阶1的经验,可以先封装一个自定义活动printN,用来实现传入数据n,则打印n颗星。其次,主程序中编写循环,数出当前是第几行,通过计算出第i行需要打印5-i颗星,将计算结果直接传递给自定义活动即可。
第三步:实现。
自定义活动和上面的【完整的自定义活动】一样,这里直接给出
Main程序:根据设计方案,需要先计算出第i行要打印的星号数是5-i,再传入自定义活动。
还可以将5改为10,再测试打印效果:
还有一种比较便捷的打印方法:观察到低一行打印5颗星,那么,让i的值从5开始,
第二行打印4颗星,就让i的值-1,再传入自定义活动。
观察图形,发现第0行打印5颗星,第1行打印4颗星,第4行打印1颗星,如果行数是i,则星号数是5-i
其次,第0行看不出空格,可能是0个,第1行有1个空格,第2行有2个,以此类推,第4行有4个空格,如果行数是i,则空格数等于i
最后,每一行都是先打印空格再打印星号数。
设计方案:设计自定义活动,并且需要两个形式参数,分别表示空格数和打印的星号数。
自定义活动中:
Main中,循环数出行数,再通过行数计算出该行应该有多少个空格,多少个星号,将这两个参数传入自定义活动即可
观察图形找规律,第0行,有2个空格,1个星号
第1行,有1个空格,1个星号
第2行,有0个空格,3个星号
如果行数为i,则空格数时2-i,星号数是i+1
自定义活动
Main中: