Инструменты пользователя

Инструменты сайта


cp:edu-school

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
Следующая версия Следующая версия справа и слева
cp:edu-school [2022/07/02 19:37]
iadenisov [Отличия]
cp:edu-school [2022/07/02 19:47]
iadenisov [Программный модуль]
Строка 86: Строка 86:
 Способ объявления переменных не изменился: Способ объявления переменных не изменился:
  
-VAR a, b: REAL; i, k: INTEGER; +<code>VAR a, b: REAL; i, k: INTEGER; 
-              ch: CHAR;+             ch: CHAR;</code>
                              
 Работа с массивами изменилась, но незначительно. Первый элемент массива всегда имеет индекс 0. При объявлении массива указывается не диапазон индексов, а количество элементов: Работа с массивами изменилась, но незначительно. Первый элемент массива всегда имеет индекс 0. При объявлении массива указывается не диапазон индексов, а количество элементов:
  
-VAR d: ARRAY 20 OF INTEGER;+<code>VAR d: ARRAY 20 OF INTEGER;</code>
  
 Для определения длины массива в программе используется стандартная процедура LEN(d). Например, чтобы обнулить массив d, можно воспользоваться следующим циклом: Для определения длины массива в программе используется стандартная процедура LEN(d). Например, чтобы обнулить массив d, можно воспользоваться следующим циклом:
  
-FOR i := 0 TO LEN(d)-1 DO d[i]:= 0 END;+<code>FOR i := 0 TO LEN(d)-1 DO d[i]:= 0 END;</code>
  
 или или
  
-i := 0;+<code>i := 0;
  
-WHILE i < LEN(d) DO d[i]:= 0; INC(i) END;+WHILE i < LEN(d) DO d[i]:= 0; INC(i) END;</code>
  
 Для объявления двухмерного массива используется конструкция следующего вида: Для объявления двухмерного массива используется конструкция следующего вида:
  
-VAR table: ARRAY 3, 15 OF INTEGER;+<code>VAR table: ARRAY 3, 15 OF INTEGER;</code>
  
 или или
  
-VAR table: ARRAY 3 OF ARRAY 15 OF INTEGER;+<code>VAR table: ARRAY 3 OF ARRAY 15 OF INTEGER;</code>
  
 Узнать размер многомерного массива по любому измерению можно так: Узнать размер многомерного массива по любому измерению можно так:
Строка 119: Строка 119:
 Компонентный Паскаль корректно работает с многомерными динамическими массивами. Динамический массив объявляется с помощью указателя: Компонентный Паскаль корректно работает с многомерными динамическими массивами. Динамический массив объявляется с помощью указателя:
  
-VAR a: POINTER TO ARRAY OF INTEGER;+<code>VAR a: POINTER TO ARRAY OF INTEGER;
  
-VAR b: POINTER TO ARRAY OF ARRAY OF REAL;+VAR b: POINTER TO ARRAY OF ARRAY OF REAL;</code>
  
 Непосредственно перед использованием массива его необходимо разместить в памяти специальным оператором, указывая нужный в данный момент размер: Непосредственно перед использованием массива его необходимо разместить в памяти специальным оператором, указывая нужный в данный момент размер:
Строка 153: Строка 153:
  
 PROCEDURE Делать*; PROCEDURE Делать*;
- 
 VAR VAR
- +  x, n: INTEGER; 
-x, n: INTEGER; +  a: ARRAY 25 OF INTEGER;
- +
-a: ARRAY 25 OF INTEGER; +
 BEGIN BEGIN
 +  In.Open; In.Int(n);
 +  IF n < LEN(a) THEN
 +    FOR x := 0 TO n - 1 DO
 +      In.Int(a[x])
 +    END;
 +    FOR x := n - 1 TO 0 BY -1 DO
 +      L.Int(a[x])
 +    END
 +  ELSE
 +    L.String("Слишком большое n.");
 +    L.Ln
 +  END
 +END Делать;
  
-In.Open; In.Int(n);+END МоиПример.</code>
  
-IF n < LEN(a) THEN+{{:cp:commander.gif|}} МоиПример.Делать 6 0 -58 39 14 2 3 
  
-FOR x := 0 TO n – 1 DO +Вместо ключевого слова uses в Компонентном Паскале используется слово IMPORT, после которого перечисляются имена используемых модулейПри импорте длинному имени модуля можно задать краткий синоним-заменуВ нашем примере имени StdLog мы назначили замену “LЭтот прием может быть очень полезен потому, что в Компонентном Паскале (в отличие от Turbo Pascal) всякий вызов процедуры, импортированной из другого модуля, должен сопровождаться указанием модуля-экспортераНеобходимость указания имени модуля исключает возможную путаницу с одинаковыми именами процедур (или переменных), находящихся в разных модулях.
- +
-In.Int(a[x]) +
- +
-END; +
- +
-FOR x := n 1 TO 0 BY -1 DO +
- +
-L.Int(a[x]) +
- +
-END +
- +
-ELSE +
- +
-L.String(лишком большое n."); +
- +
-L.Ln +
- +
-END +
- +
-END Делать; +
- +
-END МоиПример.</code>+
  
 +Компиляция и выгрузка модуля в школьной версии Блэкбокса производится нажатием клавиши F8 или выбором пункта “Компилировать и выгрузить” в меню “Разработка”. Выгрузка нужна для того, чтобы при успешной компиляции старая версия машинного кода модуля была заменена в памяти на новую. Компиляция происходит очень быстро, поэтому ее рекомендуется использовать для постоянного самоконтроля при написании программы. Сообщения об ошибках выводятся в строку состояния и рабочий журнал, а в исходном тексте программы места ошибок отмечаются серыми перечеркнутыми квадратиками: 
  
  
cp/edu-school.txt · Последнее изменение: 2022/07/02 20:03 — iadenisov