Этому есть несколько причин.
1. Если имеется требование объявлять ВСЕ переменные в программе, то это хранит программиста от искаженного указания имен переменных, например, xl вместо x1 или suma вместо summa.
2. Объявление переменных позволяет явно указать их типы, а использование типизированных переменных позволяет с меньшими усилиями добиться правильной записи алгоритма. Например, при типизации переменных последовательность команд c=5 a=3*c c=a/3 недопустима. В самом деле, присваивание необъявленной переменной "с" значения целочисленной константы 5 подразумевает, что она тоже становится целочисленной. Далее, по той же причине необъявленная переменная "а" также получает целый тип. И третий оператор выполняет деление. А такая операция деления дает вещественный результат и присваивание его целочисленной переменной "с" недопустимо, потом что приведет к потере дробной части. И мы получаем сообщение об ошибке, т.е. можем вовремя ошибку увидеть и исправить её.
3. Некоторые системы программирования независимо от того, объявлена переменная или нет, очищают её нулём (или делают пустой, если переменная символьная). А некоторые этого не делают. Появление в программе необъявленной переменной с таким неопределенным значением может вызывать неожиданное поведение этой программы. Многие системы, в которых объявление переменных обязательно, выдают сообщение, что переменной не было присвоено начальное значение, что также помогает избегать ошибок.
4. При объявлении переменных в одном месте, им всем отводится одна область памяти, что уменьшает затраты вычислительной системы на адресацию памяти и делает программу компактнее, а также ускоряет её работу. Особенно это важно при нехватке оперативной памяти, когда программа вынужденно использует виртуальную память, которая располагается на внешнем носителе.
// PascalABC.NET 3.1, сборка 1201 от 18.03.2016
begin
var n:=ReadInteger('n=');
var m:=18;
var a:=MatrixRandom(m,n,-999,999);
var imax:=0;
var jmax:=0;
for var i:=0 to m-1 do begin
for var j:=0 to n-1 do begin
Write(a[i,j]:5);
if abs(a[i,j])>abs(a[imax,jmax]) then begin
imax:=i; jmax:=j
end
end;
Writeln
end;
Writeln('Максимум по модулю А[',imax+1,',',jmax+1,
']=',a[imax,jmax])
end.
<u><em>Тестовое решение:</em></u>
n= 10
-275 257 -860 744 -263 843 8 667 425 -547
-392 635 636 -441 -64 973 201 -864 -126 -868
-764 43 -884 -667 -113 807 354 966 -155 -527
532 -790 -911 0 -303 -471 453 431 -741 -582
-121 548 -946 610 724 -426 963 -589 -591 845
-846 629 728 634 -581 681 141 807 -142 -70
-510 42 -177 -48 -80 -601 547 -364 862 -593
-480 770 876 -544 253 -312 -11 -494 -391 -687
843 -56 558 0 -681 903 -519 -545 -418 15
387 646 -427 329 928 837 -274 101 -310 325
27 327 -452 -998 325 -616 752 273 -619 731
-307 -364 199 -454 86 546 483 823 -367 17
917 92 -945 -152 19 -126 198 -453 -473 416
961 888 815 283 286 -483 -604 557 674 935
-849 207 -926 -149 -677 -248 -552 -972 -756 -617
-646 -97 -532 673 407 934 272 700 -18 -548
186 206 -253 -35 769 -196 -179 915 259 -431
151 926 -851 -302 -134 -289 19 204 -474 -732
Максимум по модулю А[11,4]=-998
Program dsdasd;
var i,y: integer;
begin
y:=0;
For i:=-100 to 100 do
if i mod 10=5 then y:=y+i;
Writeln(y);
<span>end.
у будет равен 500. Считается он так: из чисел -100,-99,-98...98,99,100 остаток 5 при делении на 10 получается у чисел:
5, 15....75,85,95, то есть нужно эти 10 чисел сложить.</span>