Пожалуйста, объясните этот код Паскаля..?
Я хочу понять этот код перед экзаменом Паскаль лаборатории, особенно ПРОЦЕДУРА
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.
Помогите мне, пожалуйста
1 ответ
В целом: Хорошо, этот код считает количество гласных, введенных во входной строке.
Давай начнем....
ТИП гласная =(a,e,i,o,u); VAR буфер:ARRAY[1..maxchar] из char; vowelcount:ARRAY[гласная] целого числа;
Этот код определяет список гласных на английском языке (a,e,i,o,u).
ПРОЦЕДУРА инициализации; VAR ch: гласный; НАЧАТЬ ДЛЯ ch:=a TO ВЫ ДЕЛАЕТЕ НАЧАТЬ vowelcount[ch]:=0; КОНЕЦ; КОНЕЦ;
Затем он определяет переменную для сбора номера каждого гласного, называемую vowelcount. Эта переменная является массивом, выглядит примерно так:
vowelcount[a]=0;
vowelcount[e]=0;
vowelcount[i]=0; #... etc
Затем процедура "Анализ" определяется. Это берет ввод с экрана (который будет вызван позже в программе) и проходит по каждой букве во вводе.
WHILE index<> maxchar + 1 DO BEGIN IF буфер [index] IN ['a','e', 'i','o','u'] THEN BEGIN CASE буфер [index] OF 'a':ch:= а; 'Е': ч: = е; 'I': ч: = я; 'О': ч: = о; 'И': ч: = и; КОНЕЦ;
Если какая-либо из этих букв окажется в списке букв, совпадающих с гласным, то она добавит один к числу в массиве vowelcount выше. (vowelcount[ch]:=vowelcount[ch]+1) где ch - совпавшая буква. Как вы можете видеть, это срабатывает только в том случае, если это действительный гласный (буфер IF [index] IN ['a','e', 'i','o','u'])
В заключение. Основной код программы или что на самом деле выполняется:
НАЧАЛО clrscr; WriteLn; writeln(' a e i o u'); FOR ch:=a TO, котор вы пишите (vowelcount[ch]:4); WriteLn; КОНЕЦ;
НАЧАТЬ инициализацию; ввод текста; анализ; vowelout; КОНЕЦ.
Это в основном связывает воедино приложение, начиная с очистки экрана (в приглашении dos) и затем выводя гласные на экран. Затем он добавляет некоторое форматирование и выводит текущий счетчик чисел vowelcount (как указано выше). Затем он запросит ваш ввод и, наконец, снова выведет содержимое vowelcount, которое было обновлено с помощью vowelcounts из введенного вами ввода.