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

Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
pascal:errors [22/10/2009 02:02] ybezrukovpascal:errors [19/10/2010 13:03] (текущий) oca
Строка 1: Строка 1:
 ===== Типичные ошибки ===== ===== Типичные ошибки =====
 +<code pascal>
 +
 +</code>
 +
 +<code pascal>
 +const
 +  k = 5;                     { Это - "именованная" константа }
 +  m : integer = 5;           { Это не константа, это - "статическая" переменная }
 +  
 +var 
 +  n  : integer;              { Это - просто переменная } 
 +  
 +  Ak : array [1..k] of ... ; { Так - можно }
 +  Am : array [1..m] of ... ; { Так - нельзя. Значения переменные получают только после распределения памяти }  
 +  An : array [1..n] of ... ; { Так - тоже. По той же причине }  
 +  
 +...
 +</code>
 +
 +Примечание. Паскаль и другие универсальные языки программирования позволяют создавать массивы уже после начала выполнения программы через  механизм "динамической памяти"
 +
 +<code pascal>
 +var 
 +  gd, gm : integer;
 +  initgraph(gd, gm, ''); { В разделе описаний Паскаля - только описания }
 +  
 +...
 +</code>
 +
 +<code pascal>
 +var 
 +  i,j : integer;
 +
 +begin  
 +var 
 +  gd, gm : integer;      { Обратная ситуация - в Паскале нельзя включать описания в раздел кода }
 +  initgraph(gd, gm, ''); 
 +...
 +</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>