S:=1; - переменной s присваивается начальное значение 1 for i := 10 to 99 do - начало цикла с параметром, i - параметр цикла, 10 - начальное значение параметра, 99 - конечное значение параметра. Т.е. цикл будет выполняться 90 раз, параметр i будет принимать последовательно значения 10, 11, 12, ..., 99. if (i mod 13 = 0) and (i mod 2 <> 0) then - условный оператор. В условии используется операция mod - определение остатка от целочисленного деления. (i mod 13 = 0) - это условие будет выполняться для чисел, которые делятся на 13 без остатка; (i mod 2 <> 0) - это условие будет выполняться для чисел, которые делятся на 2 с остатком (это нечетные числа). Таким образом, условие (i mod 13 = 0) and (i mod 2 <> 0) будет иметь значение true для нечетных чисел, которые делятся на 13 без остатка (это 13, 39, 65, 91). Программа в целом вычисляет произведение нечетных чисел, которые делятся на 13 без остатка. (В программе есть ошибка. Тип переменной s должен быть integer.)
Const ru : array[1..33] of Char = ('а','б','в','г','д','е','ё','ж','з','и', 'й','к','л','м','н','о','п','р','с','т', 'у','ф','х','ц','ч','ш','щ','ъ','ы','ь', 'э','ю','я'); en : array[0..33] of String = (' ','a','b','v','g','d','e','ye','zh','z','i', 'y','c','l','m','n','o','p','r','s','t', 'u','f','h','c','ch','sh','sch','`','ы','', 'ea','yu','ja'); { транскрипцию записал не заглядывая ни в какие справочники - можете кидаться тапками }
Function GetIndex(ss : Char) : Byte; Var ii : Byte; Begin ii:=1; While (ii<=33) and (LowerCase(ss)<>ru[ii]) do Inc(ii); If ii in [1..33] then GetIndex:=ii else GetIndex:=0; end;
Function Trans(S : String) : String; Begin If Length(S)>0 then Trans:=en[GetIndex(S[1])]+Trans(Copy(S,2,Length(S)-1)) else Trans:=''; end;
Begin Writeln(Trans('паскаль')); Writeln(Trans('ява')); end.
for i := 10 to 99 do - начало цикла с параметром, i - параметр цикла, 10 - начальное значение параметра, 99 - конечное значение параметра. Т.е. цикл будет выполняться 90 раз, параметр i будет принимать последовательно значения 10, 11, 12, ..., 99.
if (i mod 13 = 0) and (i mod 2 <> 0) then - условный оператор. В условии используется операция mod - определение остатка от целочисленного деления. (i mod 13 = 0) - это условие будет выполняться для чисел, которые делятся на 13 без остатка; (i mod 2 <> 0) - это условие будет выполняться для чисел, которые делятся на 2 с остатком (это нечетные числа). Таким образом, условие (i mod 13 = 0) and (i mod 2 <> 0) будет иметь значение true для нечетных чисел, которые делятся на 13 без остатка (это 13, 39, 65, 91).
Программа в целом вычисляет произведение нечетных чисел, которые делятся на 13 без остатка.
(В программе есть ошибка. Тип переменной s должен быть integer.)
ru : array[1..33] of Char = ('а','б','в','г','д','е','ё','ж','з','и',
'й','к','л','м','н','о','п','р','с','т',
'у','ф','х','ц','ч','ш','щ','ъ','ы','ь',
'э','ю','я');
en : array[0..33] of String = (' ','a','b','v','g','d','e','ye','zh','z','i',
'y','c','l','m','n','o','p','r','s','t',
'u','f','h','c','ch','sh','sch','`','ы','',
'ea','yu','ja');
{ транскрипцию записал не заглядывая ни в какие справочники - можете кидаться тапками }
Function GetIndex(ss : Char) : Byte;
Var ii : Byte;
Begin
ii:=1;
While (ii<=33) and (LowerCase(ss)<>ru[ii]) do Inc(ii);
If ii in [1..33] then GetIndex:=ii else GetIndex:=0;
end;
Function Trans(S : String) : String;
Begin
If Length(S)>0 then Trans:=en[GetIndex(S[1])]+Trans(Copy(S,2,Length(S)-1))
else Trans:='';
end;
Begin
Writeln(Trans('паскаль'));
Writeln(Trans('ява'));
end.