array语句、do over语句、attrib语句、window语句
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了array语句、do over语句、attrib语句、window语句相关的知识,希望对你有一定的参考价值。
参考技术A array语句
(1)显示下标array语句:
形如:�ARRAY array-name subscript < aaa bbb(\'data\' \'process\');
file print;
put x2=;
run;
data;
规定数组中每一维的上下界:�array x1:5,1:3 score1-score15;
array x6:9,0:9 x60-x99;
file print;
put x7,0;
run;
{ 表示SAS系统通过数组中变量的个数来确定下标。可用dim(数组名)函数计算数组元素个数。
data zz;
input d1-d7;
array day( ) d1-d7;
do i=1 to dim(day);
day(i)=day(i)+10;
end;
drop i;
cards;
99 11 22 222 22 3 44
1 2 3 4 5 6 7
;
run;
PROC PRINT;RUN;
(2)隐藏下标array语句
形如:ARRAY array-name <(index-variable)> <$> array-elements <(initial-values)>
如果没有规定下标变量,SAS系统使用自动变量 i 作为下标变量,下标变量范围从1到这个数组元素的个数
data test;
input sco1-sco5;
array s sco1-sco5;
do i =1 to 5;
s=s*100;
end;
cards;
0.95 0.88 0.57 0.90 0.65
1 2 3 4 5
;
run;
PROC PRINT;RUN;
do over语句
Do over 语句对每个数组元素自动地执行Do组中的语句,它等价于 do i=1 to k;�其中i是这个数组的下标变量,k是数组元素的个数。
Do over语句常用在对隐含下标数组元素执行Do组里的语句
data test;
input sc01-sc05;
array s sc01-sc05;
do over s;
s=s*100;
end;
cards;
0.95 0.88 0.57 0.90 0.65
1 2 3 4 5
;
PROC PRINT;
RUN;
attrib语句
在data步内允许用一个attrib语句来规定一个或几个变量的输出、输入格式,标签和长度,即规定变量属性
data a;
input x @@;
attrib x label=\'中国载人飞船\'
length=8
informat=comma8.
format=dollar12.;
cards;
12,345,678
;
run;
proc print;
run;
window语句
创建用户专用的窗口,可用来显示文字说明或接受输入的数据
data null ;
window start
#5 @26 \'welcome to the sas system\' color=yellow
#7 @19 \'this program creates two sas data sets\'
#8 @26 \'and uses three procedures\'
#12 @27 \'press enter to continue\';
display start;
stop;
run;
作业五总结
一、知识点:
1.while语句基本格式:
while(表达式)
{
语句;
……
语句;
}
2.do……while语句基本格式:
do
{
语句;
……
语句;
}
while(表达式);
3.while和do……while的比较
- while语句根据表达式的值的真假决定是否执行循环体。
- 不管表达式的值是什么,do……while语句至少执行一次循环体。
- 当while语句和do……while语句具有相同的循环体时:
(1)如果while后面的表达式的值为“真”,两种语句的结果相同。
(2)否则,两种语句的结果不同。
4.for语句的一般形式:
(1)for(表达式1;表达式2;表达式3)
单个语句;
或者
for(表达式1;表达式2;表达式3)
{
语句;
……
语句;
}
(2)for语句的执行过程
for(表达式1;表达式2;表达式3)
for(赋初值;循环条件;循环变量增值)
表达式1对应赋初值,表达式2对应循环条件,表达式3对应循环变量增值。
(3)for语句的各种形式
- 表达式2省略,或者3个表达式都省略时,循环体将无休止地循环,出现错误。
- 表达式1可以省略,但是分号不能省略,表达式1可以是逗号表达式。
- 表达式3可以省略,但为程序能正常运行,需要根据不同情况在循环体内稍作改动,表达式3也可以是逗号表达式。
5.三种循环语句的选择:
- 三种循环在一般情况下可以互相替代;
- 若给定循环次数,首选for;
- 若循环次数不明确,需要通过其它条件控制循环,通常首选while;
- 若必须先进入循环,经循环体运算得到控制条件后,再判断是否进入下一次循环,使用do-while最合适。
注:循环变量的初始值可以比结束值小,也可以比结束值大。
6.循环的嵌套:
(1)概念:一个循环体内又包含另一个完整的循环结构。
(2)说明:
1)嵌套可以是多层的;
2)一个循环体必须完完整整嵌套在另一个循环体内,不能出现交叉;
3)三种循环可以互相嵌套。
7.break和continue改变循环状态
- 执行break语句,提前结束循环,不再执行其余的几次循环。
- break语句只能用于循环语句和switch语句。
- 执行continue语句只结束本次循环中continue语句下面尚未执行的语句,其余的循环还要继续执行。
- continue语句只能用于循环语句。
二、实验过程中遇到的问题及解决方法:
1.遇到的问题:
(1)在for语句转化成do……while语句时,在while语句的后面忘记加上分号,导致运行结果和for语句不一样。
(2)在使用while语句时,程序运行时变成了死循环。
(3)在做实验时,很难将运行结果转化成程序表达式。
2.解决方法:
(1)仔细查看老师的课件和书上的格式后,发现while语句后面没有分号,do……while语句后面有分号。
(2)在while语句使用时要注意将循环体用大括号括起来,但也要注意范围。
(3)在编辑程序前应有一个清晰的思路,选取什么语句编辑,先执行什么,后执行什么,在纸上先将自己的简单思路理清。
三、实验心得体会:
在做语句的实验时,应理清自己的思路,将实验结果转化成程序框图,先做什么,后做什么,最好动动笔,可以有效减少实验失败的次数,其次,当你完成实验编辑时,应仔细检查一遍程序的细节,点击运行程序时应对错误提示较为敏感,能够通过错误提示迅速找出自己编辑的程序的症结所在。
以上是关于array语句、do over语句、attrib语句、window语句的主要内容,如果未能解决你的问题,请参考以下文章
for...of语句在可迭代对象(包括 Array,Map,Set,String,TypedArray,arguments 对象等等)上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语