This commit is contained in:
miks1965 2018-10-23 22:06:07 +03:00
parent 421a7dd865
commit a2702ecb73
8 changed files with 61 additions and 26 deletions

View file

@ -1,9 +1,8 @@
// ÷икл for. —умма всех двузначных чисел
var s: integer;
// Цикл for. Сумма всех двузначных чисел
begin
s := 0;
var s := 0;
for var i:=10 to 99 do
s := s + i; // можно s += i
writeln('—умма всех двузначных чисел = ',s);
s += i;
Println('Сумма всех двузначных чисел =',s);
end.

View file

@ -1,13 +1,13 @@
// ÷икл for. a в степени n
var
a: real;
n: integer;
// Цикл for. Вычисление a в степени n
begin
write('¬ведите a,n: ');
readln(a,n);
var p: real := 1;
var a := ReadlnReal('Введите a:');
var n := ReadlnInteger('Введите n:');
var p := 1.0;
for var i:=1 to n do
p := p * a; // можно p *= a
writelnFormat('{0} в степени {1} = {2}',a,n,p);
p *= a;
Println($'{a} в степени {n} = {p}');
Println($'Стандартная операция {a} ** {n} = {a ** n}');
end.

View file

@ -1,4 +1,4 @@
// Öèêë for. Òàáëèöà ôóíêöèè
// Цикл for. Таблица функции
var
a: real := 0;
b: real := 4;
@ -9,7 +9,7 @@ begin
var x := a;
for var i:=0 to n do
begin
writelnFormat('{0:f2} {1:f4}',x,sqrt(x));
WritelnFormat('{0:f2} {1:f4}',x,sqrt(x));
x += h;
end;
end.

View file

@ -1,18 +1,18 @@
// ÷икл while. —умма цифр положительного числа
var m: integer;
// Цикл while. Сумма цифр положительного числа
begin
writeln('¬ведите положительное число: ');
read(m);
write('÷ифры числа в обратном пор¤дке: ');
var m := ReadlnInteger('Введите положительное число: ');
Print('Цифры числа в обратном порядке:');
var s := 0;
while m>0 do
begin
var digit := m mod 10;
write(digit,' ');
Print(digit);
s += digit;
m := m div 10;
end;
writeln;
writeln('—умма цифр = ',s);
Println;
Println('Сумма цифр =',s);
end.

View file

@ -0,0 +1,5 @@
type
Enum<T> = (X, Y);
begin
end.

View file

@ -11248,6 +11248,35 @@ namespace PascalABCCompiler.TreeConverter
//Проверяем параметры шаблона на совпадение друг с другом
check_param_redeclared(ttn.template_args.idents);
context.AddTemplate(ttn.name, tc, t_loc);
// SSM 23.10.18. Bug fix #1395. Пытаемся проверить, что это - enum. Повторяем с изменениями код в enum_type_node
if (_type_declaration.type_def is enum_type_definition etd)
{
// значит это возможно enum
//var etd =
foreach (SyntaxTree.enumerator en in etd.enumerators.enumerators)
{
if (!((en.name is named_type_reference) && (en.name as named_type_reference).names.Count() == 1))
{
// Это tupletype
return;
}
// Все - идентификаторы. Проверяем дальше
SyntaxTree.ident id = (en.name as named_type_reference).FirstIdent;
// Если равен какому-то имени в параметрах обобщения, то это тип - пропускаем. Ищем не тип или неизвестное имя
if (ttn.template_args.idents.Select(ide => ide.name.ToLower()).Any(s => s.Equals(id.name.ToLower())))
continue;
var si = context.CurrentScope.Find(id.name);
if ((si == null) || !(si.FirstOrDefault().sym_info is type_node))
{
// Это точно enum. Выдавать ошибку - enumы не могут быть обобщёнными
AddError(get_location(ttn), "ENUMS_CANNOT_BE_GENERIC");
}
}
}
// Это не enum. Значит, просто выйти. Так было в коде до SSM 23.10.18
return;
//is_template_synonym = true;

View file

@ -13,4 +13,5 @@ MISSED_SEMANTIC_CHECK_FOR_SUGARED_NODE_{0}=Missed semantic check for sugared nod
OPERATOR_DQ_MUST_BE_USED_WITH_A_REFERENCE_TYPE_VALUETYPE=Left operand of ?. operation must have reference type
NAME_IN_PROPERTY_READ_SECTION_MUST_BE_FIELD_OR_METHOD_NAME=Name in property read section must be field name or method name of this class
NAME_IN_PROPERTY_WRITE_SECTION_MUST_BE_FIELD_OR_METHOD_NAME=Name in property write section must be field name or method name of this class
STATIC_PROPERTY_MUST_HAVE_STATIC_ACCESSOR=Static property accessor must be static
STATIC_PROPERTY_MUST_HAVE_STATIC_ACCESSOR=Static property accessor must be static
ENUMS_CANNOT_BE_GENERIC=Enumerator type cannot be generic

View file

@ -14,4 +14,5 @@ OPERATOR_DQ_MUST_BE_USED_WITH_A_REFERENCE_TYPE_VALUETYPE=Левый операн
AUTOCLASS_MUST_NOT_CONTAIN_ENUM_TYPE_DEFINITION_IN_FIELD_TYPE=Автокласс не может содержать поля безымянного перечислимого типа
NAME_IN_PROPERTY_READ_SECTION_MUST_BE_FIELD_OR_METHOD_NAME=Имя в секции read свойства должно быть именем поля или функции-метода этого класса
NAME_IN_PROPERTY_WRITE_SECTION_MUST_BE_FIELD_OR_METHOD_NAME=Имя в секции write свойства должно быть именем поля или процедуры-метода этого класса
STATIC_PROPERTY_MUST_HAVE_STATIC_ACCESSOR=Акцессор статического свойства должен быть статическим
STATIC_PROPERTY_MUST_HAVE_STATIC_ACCESSOR=Акцессор статического свойства должен быть статическим
ENUMS_CANNOT_BE_GENERIC=Перечислимый тип не может быть обобщенным