Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия Следующая версия Следующая версия справа и слева | ||
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; | + | < |
- | ch: CHAR; | + | |
| | ||
Работа с массивами изменилась, | Работа с массивами изменилась, | ||
- | VAR d: ARRAY 20 OF INTEGER; | + | < |
Для определения длины массива в программе используется стандартная процедура LEN(d). Например, | Для определения длины массива в программе используется стандартная процедура LEN(d). Например, | ||
- | FOR i := 0 TO LEN(d)-1 DO d[i]:= 0 END; | + | < |
или | или | ||
- | i := 0; | + | < |
- | WHILE i < LEN(d) DO d[i]:= 0; INC(i) END; | + | WHILE i < LEN(d) DO d[i]:= 0; INC(i) END;</ |
Для объявления двухмерного массива используется конструкция следующего вида: | Для объявления двухмерного массива используется конструкция следующего вида: | ||
- | VAR table: ARRAY 3, 15 OF INTEGER; | + | < |
или | или | ||
- | VAR table: ARRAY 3 OF ARRAY 15 OF INTEGER; | + | < |
Узнать размер многомерного массива по любому измерению можно так: | Узнать размер многомерного массива по любому измерению можно так: | ||
Строка 119: | Строка 119: | ||
Компонентный Паскаль корректно работает с многомерными динамическими массивами. Динамический массив объявляется с помощью указателя: | Компонентный Паскаль корректно работает с многомерными динамическими массивами. Динамический массив объявляется с помощью указателя: | ||
- | 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;</ |
Непосредственно перед использованием массива его необходимо разместить в памяти специальным оператором, | Непосредственно перед использованием массива его необходимо разместить в памяти специальным оператором, | ||
Строка 153: | Строка 153: | ||
PROCEDURE Делать*; | PROCEDURE Делать*; | ||
- | |||
VAR | VAR | ||
- | + | | |
- | 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(" | ||
+ | L.Ln | ||
+ | END | ||
+ | END Делать; | ||
- | In.Open; In.Int(n); | + | END МоиПример.</ |
- | IF n < LEN(a) THEN | + | {{: |
- | FOR x := 0 TO n – 1 DO | + | Вместо ключевого слова uses в Компонентном Паскале используется слово IMPORT, после которого перечисляются имена используемых модулей. При импорте длинному имени модуля можно задать краткий синоним-замену. В нашем примере имени StdLog мы назначили замену “L”. Этот прием может быть очень полезен потому, |
- | + | ||
- | In.Int(a[x]) | + | |
- | + | ||
- | END; | + | |
- | + | ||
- | FOR x := n - 1 TO 0 BY -1 DO | + | |
- | + | ||
- | L.Int(a[x]) | + | |
- | + | ||
- | END | + | |
- | + | ||
- | ELSE | + | |
- | + | ||
- | L.String("Слишком | + | |
- | + | ||
- | L.Ln | + | |
- | + | ||
- | END | + | |
- | + | ||
- | END Делать; | + | |
- | + | ||
- | END МоиПример.</ | + | |
+ | Компиляция и выгрузка модуля в школьной версии Блэкбокса производится нажатием клавиши F8 или выбором пункта “Компилировать и выгрузить” в меню “Разработка”. Выгрузка нужна для того, чтобы при успешной компиляции старая версия машинного кода модуля была заменена в памяти на новую. Компиляция происходит очень быстро, | ||