Основы PascalABC.NET: различия между версиями

1152 байта добавлено ,  2 года назад
м
<source> -> <syntaxhighlight> (phab:T237267)
м (<source> -> <syntaxhighlight> (phab:T237267))
=Синтаксис программ=
Программы в данной IDE строятся так:
<sourcesyntaxhighlight lang="Pascal">
program <название_программы>;
const
<главный_код>;
end.
</syntaxhighlight>
</source>
<text> - произвольный текст.
===Константы===
В данной секции располагаются определенные пользователем константы. Синтаксис объявления констант выглядит так:
<sourcesyntaxhighlight lang="Pascal">
const
<имя> = <значение>;</sourcesyntaxhighlight>
Например:
<sourcesyntaxhighlight lang="Pascal">
const
a = 12;
s = 'ABC.NET';</sourcesyntaxhighlight>
 
===Секция «var»===
Данная секция предназначена для переменных и массивов. Переменные объявляются так:
<sourcesyntaxhighlight lang="Pascal">
var
<имя>: <тип>;
</syntaxhighlight>
</source>
 
===Простейшие типы===
====Тип строка====
Тип строка - это тип переменных, который позволяет хранить в переменной любой текст. Объявление строковой переменной:
<sourcesyntaxhighlight lang="Pascal">
var
<имя>: string;
</syntaxhighlight>
</source>
Строки могут быть не более 255 символов. Изначальное значение строковых переменных - это «пустая строка» - <nowiki>''</nowiki>.
{| class="wikitable"
====Тип целое число integer====
Кроме типа '''string''' в PascalABC.Net есть еще тип целое число - «'''integer'''». Само число a может принимать (в PascalABC.Net) значения от -2147483648 до 2147483647. Пример объявления переменной типа integer:
<sourcesyntaxhighlight lang="Pascal">
var
<имя>: integer;
</syntaxhighlight>
</source>
{| class="wikitable"
|-
====Тип вещественное число real====
Декларация переменной типа '''real''':
<sourcesyntaxhighlight lang="Pascal">
var
<имя>: real;
</syntaxhighlight>
</source>
Пример присваивания переменной данного типа:
<sourcesyntaxhighlight lang="Pascal">
a := 1.0; // Не 1,0!
a := 1; // Эквивалентно 1.0.
</syntaxhighlight>
</source>
{| class="wikitable"
|-
====Тип символ====
Тип символ или «'''char'''» используется в основном для хранения одного любого символа вне зависимости от того, является ли данный символ буквой или цифрой. Объявление переменной символьного типа:
<sourcesyntaxhighlight lang="Pascal">
var
<имя>: char;
</syntaxhighlight>
</source>
 
===Секция «begin - end»===
Данный раздел программы содержит все команды, выполняемые при ее запуске. Данная секция программы выглядит так:
<sourcesyntaxhighlight lang="Pascal">
begin
<команда_1>;
<команда_n>;
end.
</syntaxhighlight>
</source>
 
===Комментарии===
Комментарий - это часть кода, которую игнорирует компилятор. Он создается следующим образом:
<sourcesyntaxhighlight lang="Pascal">
{
<текст_комментария>
}
</syntaxhighlight>
</source>
Или:
<sourcesyntaxhighlight lang="Pascal">
// <текст_комментария>
</syntaxhighlight>
</source>
 
==Массивы==
===Статические===
Статические массивы имеют фиксированный размер. Общий синтаксис объявления данных массивов выглядит так:
<sourcesyntaxhighlight lang="pascal">
var
<имя>: array [0..N - 1] of <тип>;
</syntaxhighlight>
</source>
, где N - длина массива.
 
Пример:
<sourcesyntaxhighlight lang="pascal">
const
N = 5;
WriteFormat('{0} ', A[i]);
end.
</syntaxhighlight>
</source>
[[Книга программиста/Задачи на PascalABC.Net#Вставка_элемента|Посмотреть статью с примером.]]
 
====Двумерные====
Матрица - это n-мерный список значений, имеющий свой тип и ограниченный некоторыми значениями. Пока будем рассматривать только статические двухмерные и трехмерные матрицы. Перед тем, как перейти к их изучению вспомни таблицы в Excel. Каждая таблица имеет свой размер - ширину и длину. Возьмем за правило ассоциировать двухмерные матрицы с таблицами. Объявление матрицы:
<sourcesyntaxhighlight lang="Pascal">
var
<имя>: array [0..N - 1, 0..M - 1] of <тип>;
</syntaxhighlight>
</source>
, где N, M количество строчек и столбцов соответственно.
 
====Трехмерные====
Трехмерный матрицы обладают третьим измерением:
<sourcesyntaxhighlight lang="Pascal">
var
<имя>: arr, 0..K - 1] of <тип>;
</syntaxhighlight>
</source>
 
====N-мерные матрицы====
Декларация N-мерной матрицы:
<sourcesyntaxhighlight lang="Pascal">
var
<имя>: array [0..A - 1, 0..B - 1, ..., 0..Z - 1] of <тип>;
</syntaxhighlight>
</source>
, где A..Z означают количество элементов в соответствующем измерении.
 
! Пример объявления массива: !! Статический !! Динамический !! Вызов SetLength (для динамического массива)
|-
| Векторный || <sourcesyntaxhighlight lang="pascal"><имя>: array [0..N - 1] of <тип></sourcesyntaxhighlight> || <sourcesyntaxhighlight lang="pascal"><имя>: array of <тип></sourcesyntaxhighlight> || <sourcesyntaxhighlight lang="pascal">SetLength(<имя>, N)</sourcesyntaxhighlight>
|-
| Двумерный || <sourcesyntaxhighlight lang="pascal"><имя>: array [0..N - 1, 0..M - 1] of <тип></sourcesyntaxhighlight> || <sourcesyntaxhighlight lang="pascal"><имя>: array [,] of <тип></sourcesyntaxhighlight> || <sourcesyntaxhighlight lang="pascal">SetLength(<имя>, N, M)</sourcesyntaxhighlight>
|-
| Трехмерный || <sourcesyntaxhighlight lang="pascal"><имя>: array [0..N - 1, 0..M - 1, 0..K - 1] of <тип></sourcesyntaxhighlight> || <sourcesyntaxhighlight lang="pascal"><имя>: array [,,] of <тип></sourcesyntaxhighlight> || <sourcesyntaxhighlight lang="pascal">SetLength(<имя>, N, M, K)</sourcesyntaxhighlight>
|}
===Понятие индекса массива===
Индекс массива - это номер элемента массива. Индекс может принимать значения [0, N - 1], где N - количество элементов некоторой размерности. Обращение к элементу одномерного массива с некоторым индексом:
<sourcesyntaxhighlight lang="Pascal">
<имя>[<индекс>]
</syntaxhighlight>
</source>
Составим таблицу, которую следует запомнить:
{| class="wikitable sortable"
! N-мерный массив !! Общий синтаксис указания элемента массива || Пример
|-
| Векторный || <sourcesyntaxhighlight lang="Pascal"><имя>[i]</sourcesyntaxhighlight> || <sourcesyntaxhighlight lang="Pascal">A[1]</sourcesyntaxhighlight>
|-
| Двумерный || <sourcesyntaxhighlight lang="Pascal"><имя>[i, j]</sourcesyntaxhighlight> || <sourcesyntaxhighlight lang="Pascal">A[1, 1]</sourcesyntaxhighlight>
|-
| Трехмерный || <sourcesyntaxhighlight lang="Pascal"><имя>[i, j, k]</sourcesyntaxhighlight> || <sourcesyntaxhighlight lang="Pascal">A[1, 1, 1]</sourcesyntaxhighlight>
|}
Где i, j, k - индексы.
===Индекс в виде значения элемента массива===
Индексом может быть значение элемента массива:
<sourcesyntaxhighlight lang="Pascal">
<имя>[<имя_1>[индекс]]
</syntaxhighlight>
</source>
 
==Операторы, стандартные процедуры и функции==
====Вывод текста====
Вывести текст - это значит отобразить текст на экране. Общий синтаксис для вывода текста выглядит так:
<sourcesyntaxhighlight lang="Pascal">
Write('<текст>');
</syntaxhighlight>
</source>
====Вывод значений переменных====
Вывод значений произвольного количества переменных:
<sourcesyntaxhighlight lang="Pascal">
Write(<имя_1>, <имя_2>, ... , <имя_n>);
</syntaxhighlight>
</source>
Например:
<sourcesyntaxhighlight lang="Pascal">
var
A, B, C: integer;
Write(A, B, C);
end.
</syntaxhighlight>
</source>
Для перехода на новую строку после вывода последнего значения используйте Writeln вместо Write.
 
===Ввод данных с клавиатуры===
Чтение с клавиатуры - это процесс ввода данных с клавиатуры и запись в соответствующий элемент программы этих данных. Элементами программы являются как переменные, так и элементы массивов. Тип данных, вводимых с клавиатуры, должен соответствовать типу элемента, в который записываются данные с клавиатуры. Использование '''Readln''' для чтения с клавиатуры и перехода на новую строку:
<sourcesyntaxhighlight lang="Pascal">
Readln(<имя_переменной_1>, <имя_переменной_2>, ... ,<имя_переменной_n>);
</syntaxhighlight>
</source>
 
===Условный оператор===
Общий синтаксис условного оператора if:
<sourcesyntaxhighlight lang="Pascal">
if (<условие>) then
begin
<команда_N>;
end;
</syntaxhighlight>
</source>
Команды '''<команда_1>...<команда_N>''' будут выполнены только при истинности условия.
====Сравнение====
|}
Общий синтаксис сравнения двух величин:
<sourcesyntaxhighlight lang="Pascal">
<элемент_1><знак_сравнения><элемент_2>;
</syntaxhighlight>
</source>
Пример:
<sourcesyntaxhighlight lang="Pascal">
const
N = 10;
Writeln(Max);
end.
</syntaxhighlight>
</source>
[[Задачи на PascalABC.Net#Поиск максимума|Посмотреть статью с примером.]]
 
===Оператор case===
Оператор case используется для сопоставления значения некоторого выражения с константными значениями:
<sourcesyntaxhighlight lang="pascal">
case <выражение> of
<константное_значение_1>: begin <операторы_1>; end;
else <операторы>
end;
</syntaxhighlight>
</source>
Если некоторое i-тое константное выражение совпадает с значением выражения, то i-ая группа операторов будет выполнена. Группа операторов после else будет выполнена, если значение выражения не совпало ни с одной из констант. begin - end не нужны, если после двоеточия только один оператор.
 
Пример:
<sourcesyntaxhighlight lang="pascal">
var
S, S2: string;
Writeln(S2);
end.
</syntaxhighlight>
</source>
[[Задачи на PascalABC.Net#Замена слов на цифры|Посмотреть статью с примером.]]
 
===Оператор цикла while===
Оператор цикла позволяет выполнять группу операторов (или один) циклически пока условие является истинным.
<sourcesyntaxhighlight lang="Pascal">
while (<условие>) do
begin
<оператор_n>
end;
</syntaxhighlight>
</source>
Пример:
<sourcesyntaxhighlight lang="Pascal">
var
S, S2: string;
Writeln(S);
end.
</syntaxhighlight>
</source>
[[Задачи на PascalABC.Net#Удаление лишних пробелов|Посмотреть статью с примером.]]
 
«Счетчик» - это оператор цикла for, выполняющий группу операторов определенное количество раз.
Общий синтаксис оператора цикла for:
<sourcesyntaxhighlight lang="Pascal">
for var <переменная_цикла> := <значение_1> to <значение_2> do
begin
<оператор_n>;
end;
</syntaxhighlight>
</source>
Если второе значение меньше первого - используйте '''downto''' вместо '''to'''.
 
Пример:
<sourcesyntaxhighlight lang="Pascal">
const
N = 10;
Writeln(A);
end.
</syntaxhighlight>
</source>
[[Задачи на PascalABC.Net#Чтение массива|Посмотреть статью с примером.]]
 
===Оператор break===
Для выхода из цикла можно использовать '''break''':
<sourcesyntaxhighlight lang="Pascal">
const
N = 9;
end;
end.
</syntaxhighlight>
</source>
 
===Новая итерация цикла===
==Функции==
Общий синтаксис описания функции:
<sourcesyntaxhighlight lang="Pascal">
function <имя>(<описание_параметров>): <тип_возвращаемого_значения>;
begin
<оператор_n>;
end;
</syntaxhighlight>
</source>
или:
<sourcesyntaxhighlight lang="pascal">
function <имя>(<описание_параметров>) := <выражение>; // Вывод типа возвращаемого значения производится на основе типа выражения.
</syntaxhighlight>
</source>
Можно устанавливать значение переменной '''Result''' для указания возвращаемого значения.
 
Пример:
<sourcesyntaxhighlight lang="pascal">
function F(a, b: integer): integer;
begin
Writeln(F(ReadlnInteger('A:'), ReadlnInteger('B:')));
end.
</syntaxhighlight>
</source>
[[Книга программиста/Задачи на рекурсию#Остаток от деления a на b|Посмотреть статью с примером.]]
 
==Процедуры==
Синтаксис объявления процедуры:
<sourcesyntaxhighlight lang="pascal">
procedure <имя>(<описание_параметров>);
begin
<оператор_n>;
end;
</syntaxhighlight>
</source>
или:
<sourcesyntaxhighlight lang="pascal">
procedure <имя>(<описание_параметров>) := <оператор>;
</syntaxhighlight>
</source>
Пример:
<sourcesyntaxhighlight lang="Pascal">
uses Crt, GraphABC, ABCButtons;
var
B.OnClick := P;
end.
</syntaxhighlight>
</source>
[[Модуль ABCButtons|Посмотреть статью с примером.]]
 
! Описание !! Комментарии
|-
| <sourcesyntaxhighlight lang="Pascal">Random(<максимальное_значение>)</sourcesyntaxhighlight> || Генерирует случайное число в диапазоне [0, максимальное_значение - 1].
|-
| <sourcesyntaxhighlight lang="Pascal">Inc(<имя>)</sourcesyntaxhighlight> || Увеличивает значение переменной на 1 (переменная типа real не может быть параметром).
|-
| <sourcesyntaxhighlight lang="Pascal">Dec(<имя>)</sourcesyntaxhighlight> || Уменьшает значение переменной на 1 (переменная типа real не может быть параметром).
|-
| <sourcesyntaxhighlight lang="Pascal">Succ(<символ>)</sourcesyntaxhighlight> || Возвращает следующий символу символ.
|-
| <sourcesyntaxhighlight lang="Pascal">Pred(<символ>)</sourcesyntaxhighlight> || Возвращает предыдущий символу символ.
|}
 
==Подключение модулей==
Модуль - это часть программы, вынесенная в отдельный файл. Для подключения модуля следует писать в разделе uses его имя:
<sourcesyntaxhighlight lang="Pascal">
uses <имя_модуля_1>, <имя_модуля_2>, ... , <имя_модуля_n>;
</syntaxhighlight>
</source>
 
==Свои типы==
Примеры объявления своих типов:
<sourcesyntaxhighlight lang="pascal">
type
Int = integer; // Тип числа.
TArray<T> = array of T; // Тип одномерного массива с элементами типа T.
TMatrix<T> = array [,] of T; // Тип матрицы с элементами типа T.
</syntaxhighlight>
</source>
Пример вывода обобщённого массива:
<sourcesyntaxhighlight lang="pascal">
type
TArray<T> = array of T;
Show(ArrRandom());
end.
</syntaxhighlight>
</source>
 
=Примеры=
==Мигание текста==
<sourcesyntaxhighlight lang="pascal">
uses System;
 
end;
end.
</syntaxhighlight>
</source>
 
==Класс ввода данных пользователя==
<sourcesyntaxhighlight lang="pascal">
uses FormsABC;
const
var UserInput := new TUserData('Name', 'Password', 'Ok');
end.
</syntaxhighlight>
</source>
 
=Ссылки=
583

правки