我想在pascal实验室考试之前理解这些代码,特别是PROCEDURE
PROGRAM vowels;
USES crt;
{Program that counts the number of vowels in a sentence}
CONST space=' ';
maxchar=80;
TYPE vowel=(a,e,i,o,u);
VAR buffer:ARRAY[1..maxchar] of char;
vowelcount:ARRAY[vowel] of integer;
PROCEDURE initialize;
VAR ch:vowel;
BEGIN
FOR ch:=a TO u DO
BEGIN
vowelcount[ch]:=0;
END;
END;
PROCEDURE textinput;
VAR index:integer;
BEGIN
writeln('Input a sentence');
FOR index:=1 TO maxchar DO
IF eoln THEN buffer[index]:=space
ELSE read(buffer[index]);
readln;
END;
PROCEDURE analysis;
VAR index:integer;
ch:vowel;
BEGIN
index:=1;
WHILE index<>maxchar+1 DO
BEGIN
IF buffer[index] IN ['a','e','i','o','u'] THEN
BEGIN
CASE buffer[index] OF
'a':ch:=a;
'e':ch:=e;
'i':ch:=i;
'o':ch:=o;
'u':ch:=u;
END;
vowelcount[ch]:=vowelcount[ch]+1;
END;
index:=index+1;
END;
END;
PROCEDURE vowelout;
VAR ch:vowel;
BEGIN
clrscr;
writeln;
writeln(' a e i o u');
FOR ch:=a TO u DO
write(vowelcount[ch]:4);
writeln;
END;
BEGIN
initialize;
textinput;
analysis;
vowelout;
END.
请帮帮我
答案 0 :(得分:10)
总体而言:好的,这段代码正在计算输入字符串中提供的元音数量。
让我们开始......
TYPE元音=(a,e,i,o,u); VAR 缓冲区:char的ARRAY [1..maxchar]; vowelcount:整数的ARRAY [元音];
此代码用英语定义元音列表(a,e,i,o,u)。
PROCEDURE初始化; VAR ch:元音; 开始为ch:= a你要开始 vowelcount [CH]:= 0;结束; END;
然后定义一个变量来收集每个元音的数量,称为vowelcount。该变量是一个数组,看起来像这样:
vowelcount[a]=0;
vowelcount[e]=0;
vowelcount[i]=0; #... etc
然后定义“分析”程序。这将从屏幕输入(稍后将在程序中调用)并逐步执行输入中的每个字母。
WHILE index&lt;&gt; maxchar + 1 DO BEGIN IF buffer [index] IN ['a','e','i','o','u'] 那么BEGIN CASE缓冲区[index] OF 'A':CH:= A; 'e' 的CH:= E;的 'i':CH:= I; 'O':CH:= O; 'U':CH:= U; END;
如果这些字母中的任何一个恰好在字母列表中而不是与元音匹配,那么它将在上面的vowelcount数组中添加一个字母。 (vowelcount [ch]:= vowelcount [ch] +1)其中ch是匹配的字母。如你所见,只有当它是一个有效的元音时才触发(IF缓冲区[索引] IN ['a','e','i','o','u'])
最后。该程序的主要代码,或实际运行的内容:
BEGIN clrscr; writeln; writeln('e e i 你好); FOR ch:= a TO TO DO 写(vowelcount [CH]:4); writeln; END;
BEGIN初始化;的TextInput;分析; vowelout; END。
这基本上将应用程序串联起来,首先清除屏幕(在dos提示符下),然后将元音输出到屏幕上。然后它添加一些格式并输出当前的vowelcount计数(如上所述)。 然后它将请求您的输入,最后它将再次输出vowelcount的内容,该内容已使用您输入的元音数据进行更新。