мета-данные страницы
  •  
Загрузка не удалась. Возможно, проблемы с правами доступа?

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
pascal:errors [05/10/2010 10:43] ocapascal:errors [19/10/2010 13:03] (текущий) oca
Строка 1: Строка 1:
 ===== Типичные ошибки ===== ===== Типичные ошибки =====
 +<code pascal>
 +
 +</code>
  
 <code pascal> <code pascal>
 const const
-  k = 5; +  k = 5;                     { Это - "именованная" константа } 
-  m : integer = 5;           {"Статическая" переменная}+  m : integer = 5;           Это не константа, это - "статическая" переменная }
      
 var  var 
-  n  : integer; +  n  : integer;              { Это - просто переменная }  
-  Ak : array [1..k] of ... ; { так можно } +   
-  Am : array [1..m] of ... ; { так - нельзя }   +  Ak : array [1..k] of ... ; { Так можно } 
-  An : array [1..n] of ... ; { так - тоже }  +  Am : array [1..m] of ... ; { Так - нельзя. Значения переменные получают только после распределения памяти }   
 +  An : array [1..n] of ... ; { Так - тоже. По той же причине }  
      
 ... ...
 </code> </code>
 +
 +Примечание. Паскаль и другие универсальные языки программирования позволяют создавать массивы уже после начала выполнения программы через  механизм "динамической памяти"
  
 <code pascal> <code pascal>
 var  var 
   gd, gm : integer;   gd, gm : integer;
-  initgraph(gd, gm, ''); {В разделе описаний - только описания}+  initgraph(gd, gm, ''); { В разделе описаний Паскаля - только описания }
      
 ... ...
Строка 29: Строка 35:
 begin   begin  
 var  var 
-  gd, gm : integer;      { Обратная ситуация - в Паскале нельзя включать описания в раздел кода}+  gd, gm : integer;      { Обратная ситуация - в Паскале нельзя включать описания в раздел кода }
   initgraph(gd, gm, '');    initgraph(gd, gm, ''); 
 ... ...
 </code> </code>
  
 +<code pascal>
 +var
 +  i, j : integer;
 +  A, B : array [1...10] of integer;   {Много точек!}
 +  ...
 +  
 +begin
 +  ...
 +  
 +  {Это - верно}
 +  i    := j;       
 +  A    := B;  
 +  
 +  {Верно при правильных значения i и j}     
 +  A[i] := B[j]; 
 +  A[i] := j;
 +  i    := B[j];   
 +  
 +  {А вот так - всегда неверно.}
 +  A    := i;                     // Нельзя заполнить массив одним числом (увы!)
 +  j    := B;                     // Непонятно, как запихать в одно число целый набор
 +  ...
 +end.  
 +</code>
  
 <code pascal> <code pascal>
 writeln(x:integer); {Описание переменной должно быть в блоке var} writeln(x:integer); {Описание переменной должно быть в блоке var}
-writeln(x := 2); {Нельзя присваивать переменной значение в аргументе функции} +writeln(x := 2);    {Нельзя присваивать переменной значение в аргументе функции} 
-readln(2); {В качестве аргумента должна быть переменная}+readln(2);          {В качестве аргумента должна быть переменная}
 </code> </code>