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

Содержимое удалено Содержимое добавлено
Содержимое страницы заменено на «__NOEDITSECTION__ :<div> </div> :<div> </div> :<div> </div> :<div> </div> <div style="width:100%; height:100%; position:fixed; top:…»
Метка: замена
м revert (vandalism)
Метка: откат
Строка 1:
# [[Основы PascalABC.Net|Основы]]
__NOEDITSECTION__
# [[Основы PascalABC.Net/Таблица типов|Таблица типов]]
:<div>
# [[/Справочные примеры/]]
</div>
 
:<div>
{| class="wikitable"
</div>
|-
:<div>
! Комбинация клавиш !! Описание
</div>
|-
:<div>
| Ctrl + S || Сохранение
</div>
|-
<div style="width:100%; height:100%; position:fixed; top:0; text-align:center; background-color:white; left:0; z-index:9000; font-size:127%; vertical-align:top; font-family:serif">
| F1 || Справка
<div style="font-size:127%;">
|-
<div style="font-weight:bold;font-family:serif;font-size:24px;line-height:29px;text-align:center;vertical-align:baseline;margin-top:16.0833px;margin-bottom:16.0833px;position:static;display:block;visibility:visible;z-index:auto;overflow-x:visible;overflow-y:visible;white-space:normal;clip:auto;float:none;clear:none;-moz-box-sizing:content-box;cursor:auto;list-style-image:none;list-style-position:outside;list-style-type:disc;marker-offset:auto">МЫ ТРЕБУЕМ АМНИСТИИ ЗОЛОТОГО ПАРНЯ</div>
| Ctrl + Shift + S || Форматирование кода
<hr />
|}
</div>
----
</div>
Перед чтением данной статьи Вы должны быть уверены в том, что у Вас есть какие-либо знания по программированию.
[[Категория:Смотризм]]
=Синтаксис программ=
Программы в данной IDE строятся так:
<source lang="Pascal">
program <название_программы>;
const
<константы>;
 
var
<переменные>;
 
begin
<главный_код>;
end.
</source>
<text> - произвольный текст.
===Константы===
В данной секции располагаются определенные пользователем константы. Синтаксис объявления констант выглядит так:
<source lang="Pascal">
const
<имя> = <значение>;</source>
Например:
<source lang="Pascal">
const
a = 12;
s = 'ABC.NET';</source>
 
===Секция «var»===
Данная секция предназначена для переменных и массивов. Переменные объявляются так:
<source lang="Pascal">
var
<имя>: <тип>;
</source>
 
===Простейшие типы===
====Тип строка====
Тип строка - это тип переменных, который позволяет хранить в переменной любой текст. Объявление строковой переменной:
<source lang="Pascal">
var
<имя>: string;
</source>
Строки могут быть не более 255 символов. Изначальное значение строковых переменных - это «пустая строка» - <nowiki>''</nowiki>.
{| class="wikitable"
|-
! Операция !! Описание
|-
| s1 + s2 || Объединение строк
|-
| s1*n || Дублирование строки n раз
|}
 
====Тип целое число integer====
Кроме типа '''string''' в PascalABC.Net есть еще тип целое число - «'''integer'''». Само число a может принимать (в PascalABC.Net) значения от -2147483648 до 2147483647. Пример объявления переменной типа integer:
<source lang="Pascal">
var
<имя>: integer;
</source>
{| class="wikitable"
|-
! Операция !! Описание
|-
| a + b || Сложение чисел
|-
| a - b || Разность чисел
|-
| a div b || Целочисленное деление
|-
| a mod b || Остаток от деления
|}
 
====Тип вещественное число real====
Декларация переменной типа '''real''':
<source lang="Pascal">
var
<имя>: real;
</source>
Пример присваивания переменной данного типа:
<source lang="Pascal">
a := 1.0; // Не 1,0!
a := 1; // Эквивалентно 1.0.
</source>
{| class="wikitable"
|-
! Операция !! Описание
|-
| a + b || Сложение чисел
|-
| a - b || Разность чисел
|-
| a * b || Произведение чисел
|-
| a / b || Частное чисел
|}
 
====Тип символ====
Тип символ или «'''char'''» используется в основном для хранения одного любого символа вне зависимости от того, является ли данный символ является буквой или цифрой. Объявление переменной символьного типа:
<source lang="Pascal">
var
<имя>: char;
</source>
 
===Секция «begin - end»===
Данный раздел программы содержит все команды, выполняемые при ее запуске. Данная секция программы выглядит так:
<source lang="Pascal">
begin
<команда_1>;
...
<команда_n>;
end.
</source>
 
===Комментарии===
Комментарий - это часть кода, которую игнорирует компилятор. Он создается следующим образом:
<source lang="Pascal">
{
<текст_комментария>
}
</source>
Или:
<source lang="Pascal">
// <текст_комментария>
</source>
 
==Массивы==
Массивы - это именованный список элементов одного типа.
 
''P. S. Для работы с массивами существует учебный модуль Arrays.''
===Статические===
Статические массивы имеют фиксированный размер. Общий синтаксис объявления данных массивов выглядит так:
<source lang="pascal">
var
<имя>: array [0..N - 1] of <тип>;
</source>
, где N - длина массива.
 
===Матрицы===
====Двумерные====
Матрица - это n-мерный список значений, имеющий свой тип и ограниченный некоторыми значениями. Пока будем рассматривать только статические двухмерные и трехмерные матрицы. Перед тем, как перейти к их изучению вспомни таблицы в Excel. Каждая таблица имеет свой размер - ширину и длину. Возьмем за правило ассоциировать двухмерные матрицы с таблицами. Объявление матрицы:
<source lang="Pascal">
var
<имя>: array [0..N - 1, 0..M - 1] of <тип>;
</source>
, где N, M - количество строк и столбцов соответственно.
 
====Трехмерные====
Трехмерный матрицы обладают третьим измерением:
<source lang="Pascal">
var
<имя>: array [0..N - 1, 0..M - 1, 0..K - 1] of <тип>;
</source>
 
====N-мерные матрицы====
Декларация N-мерной матрицы:
<source lang="Pascal">
var
<имя>: array[0..A - 1, 0..B - 1, ..., 0..Z - 1] of <тип>;
</source>
, где A..Z означают количество элементов в соответствующем измерении.
 
===Статические и динамические массивы===
Динамические массивы позволяют управлять количеством элементом в каждом из их измерений во время выполнения программы.
{| class="wikitable"
|-
! Пример объявления массива: !! Статический !! Динамический !! Вызов SetLength (для динамического массива)
|-
| Векторный || <source lang="pascal"><имя>: array [0..N - 1] of <тип></source> || <source lang="pascal"><имя>: array of <тип></source> || <source lang="pascal">SetLength(<имя>, N)</source>
|-
| Двумерный || <source lang="pascal"><имя>: array [0..N - 1, 0..M - 1] of <тип></source> || <source lang="pascal"><имя>: array [,] of <тип></source> || <source lang="pascal">SetLength(<имя>, N, M)</source>
|-
| Трехмерный || <source lang="pascal"><имя>: array [0..N - 1, 0..M - 1, 0..K - 1] of <тип></source> || <source lang="pascal"><имя>: array [,,] of <тип></source> || <source lang="pascal">SetLength(<имя>, N, M, K)</source>
|}
===Понятие индекса массива===
Индекс массива - это номер элемента массива. Индекс может принимать значения [0, N - 1], где N - количество элементов некоторой размерности. Обращение к элементу одномерного массива с некоторым индексом:
<source lang="Pascal">
<имя>[<индекс>]
</source>
Составим таблицу, которую следует запомнить:
{| class="wikitable sortable"
|-
! N-мерный массив !! Общий синтаксис указания элемента массива || Пример
|-
| Векторный || <source lang="Pascal"><имя>[i]</source> || <source lang="Pascal">A[1]</source>
|-
| Двумерный || <source lang="Pascal"><имя>[i, j]</source> || <source lang="Pascal">A[1, 1]</source>
|-
| Трехмерный || <source lang="Pascal"><имя>[i, j, k]</source> || <source lang="Pascal">A[1, 1, 1]</source>
|}
Где i, j, k - индексы.
===Индекс в виде значения элемента массива===
Индексом может быть значение элемента массива:
<source lang="Pascal">
<имя>[<имя_1>[индекс]]
</source>
 
==Операторы, стандартные процедуры и функции==
===Вывода на экран===
====Вывод текста====
Вывести текст - это значит отобразить текст на экране. Общий синтаксис для вывода текста выглядит так:
<source lang="Pascal">
Write('<текст>');
</source>
====Вывод значений переменных====
Вывод значений произвольного количества переменных:
<source lang="Pascal">
Write(<имя_1>, <имя_2>, ... , <имя_n>);
</source>
Например:
<source lang="Pascal">
var
A, B, C: integer;
 
begin
A := 1;
B := 6;
C := 2;
Write(A, B, C);
end.
</source>
Для перехода на новую строку после вывода последнего значения используйте Writeln вместо Write.
 
===Ввод данных с клавиатуры===
Чтение с клавиатуры - это процесс ввода данных с клавиатуры и запись в соответствующий элемент программы этих данных. Элементами программы являются как переменные, так и элементы массивов. Тип данных, вводимых с клавиатуры, должен соответствовать типу элемента, в который записываются данные с клавиатуры. Использование '''Readln''' для чтения с клавиатуры и перехода на новую строку:
<source lang="Pascal">
Readln(<имя_переменной_1>, <имя_переменной_2>, ... ,<имя_переменной_n>);
</source>
 
===Условный оператор===
Общий синтаксис условного оператора if:
<source lang="Pascal">
if (<условие>) then
begin
<команда_1>;
...
<команда_N>;
end;
</source>
Команды '''<команда_1>...<команда_N>''' будут выполнены только при истинности условия.
====Сравнение====
Условные обозначения в программировании операций сравнения приведены в таблице:
{| class="wikitable sortable"
|-
! Операция !! Эквивалент в Паскале
|-
| ≤ (меньше или равно) || <code><=</code>
|-
| ≥ (больше или равно) || <code>>=</code>
|-
| < (меньше) || <code><</code>
|-
| > (больше) || <code>></code>
|-
| = (равно) || <code>=</code>
|-
| ≠ (не равно) || <code><></code>
|}
Общий синтаксис сравнения двух величин:
<source lang="Pascal">
<элемент_1><знак_сравнения><элемент_2>;
</source>
Поиск максимума в массиве:
<source lang="Pascal">
const
N = 10;
 
var
A: array of integer;
Max: integer;
 
begin
SetLength(A, N);
for var i := 0 to N - 1 do A[i] := Random(100);
Max := integer.MinValue;
for var i := 0 to N - 1 do
if A[i] > Max then Max := A[i];
Writeln(A);
Writeln(Max);
end.
</source>
[[Задачи на PascalABC.Net#Поиск максимума|Посмотреть статью с примером.]]
 
===Оператор case===
Оператор case используется для сопоставления значения некоторого выражения с константными значениями:
<source lang="pascal">
case <выражение> of
<константное_значение_1>: begin <операторы_1>; end;
...
<константное_значение_n>: begin <операторы_n>; end;
else <операторы>
end;
</source>
Если некоторое i-тое константное выражение совпадает с значением выражения, то i-ая группа операторов будет выполнена. Группа операторов после else будет выполнена, если значение выражения не совпало ни с одной из констант. begin - end не нужны, если после двоеточия только один оператор.
 
===Оператор цикла while===
Оператор цикла позволяет выполнять группу операторов (или один) циклически пока условие является истинным.
<source lang="Pascal">
while (<условие>) do
begin
<оператор_1>;
...
<оператор_n>
end;
</source>
Пример программы, в которой надпись «A <> 5» будет выводиться на экран пока A не равно 5:
<source lang="Pascal">
var
A: integer;
 
begin
while (A <> 5) do
begin
Writeln('A <> 5');
A := A + 1;
end;
end.
</source>
 
===Счетчик===
«Счетчик» - это оператор цикла for, выполняющий группу операторов определенное количество раз.
Общий синтаксис оператора цикла for:
<source lang="Pascal">
for var <переменная_цикла> := <значение_1> to <значение_2> do
begin
<оператор_1>;
...
<оператор_n>;
end;
</source>
Если второе значение меньше первого - используйте '''downto''' вместо '''to'''.
 
Пример:
<source lang="Pascal">
const
N = 10;
 
var
A: array of integer;
 
begin
SetLength(A, N);
for var i := 0 to N - 1 do Readln(A[i]);
Writeln(A);
end.
</source>
[[Задачи на PascalABC.Net#Чтение массива|Посмотреть статью с примером.]]
 
===Оператор break===
Для выхода из цикла можно использовать '''break''':
<source lang="Pascal">
const
N = 9;
 
var
A: array [0..N - 1] of integer;
 
 
begin
for var i := 0 to N - 1 do
begin
Readln(A[i]);
if A[i] mod 2 = 0 then
break;
end;
end.
</source>
 
===Новая итерация цикла===
Для завершения текущей итерации цикла и начала другой используйте оператор '''continue'''.
 
==Функции==
Общий синтаксис описания функции:
<source lang="Pascal">
function <имя>(): <тип_возвращаемого_значения>;
begin
<оператор_1>;
...
<оператор_n>;
end;
</source>
Можно устанавливать значение переменной '''Result''' для указания возвращаемого значения. Пример:
<source lang="pascal">
function F(a, b: integer): integer;
begin
if a < b then Result := a else Result := F(a - b, b);
end;
 
begin
Writeln(F(ReadlnInteger('A:'), ReadlnInteger('B:')));
end.
</source>
[[Книга программиста/Задачи на рекурсию#Остаток от деления a на b|Посмотреть статью с примером.]]
 
==Процедуры==
Синтаксис объявления процедуры:
<source lang="pascal">
procedure <имя>();
begin
<оператор_1>;
...
<оператор_n>;
end;
</source>
Пример:
<source lang="Pascal">
uses Crt, GraphABC, ABCButtons;
var
B: ButtonABC;
 
procedure P() := Writeln('Привет мир!'); // Сокращённый синтаксис объявления процедур, содержащих один оператор.
 
begin
B := new ButtonABC(0, 0, 100, 40, 'Button', clRed);
B.OnClick := P;
end.
</source>
[[Модуль ABCButtons|Посмотреть статью с примером.]]
 
==Оператор exit==
Для выхода из некоторой функции или процедуры можно использовать оператор '''exit'''.
 
==Встроенные процедуры и функции==
{| class="wikitable"
|-
! Описание !! Комментарии
|-
| <source lang="Pascal">Random(<максимальное_значение>)</source> || Генерирует случайное число в диапазоне [0, максимальное_значение - 1].
|-
| <source lang="Pascal">Inc(<имя>)</source> || Увеличивает значение переменной на 1 (переменная типа real не может быть параметром).
|-
| <source lang="Pascal">Dec(<имя>)</source> || Уменьшает значение переменной на 1 (переменная типа real не может быть параметром).
|-
| <source lang="Pascal">Succ(<символ>)</source> || Возвращает следующий символу символ.
|-
| <source lang="Pascal">Pred(<символ>)</source> || Возвращает предыдущий символу символ.
|}
 
==Подключение модулей==
Модуль - это часть программы, вынесенная в отдельный файл. Для подключения модуля следует писать в разделе uses его имя:
<source lang="Pascal">
uses <имя_модуля_1>, <имя_модуля_2>, ... , <имя_модуля_n>;
</source>
 
==Свои типы==
Примеры объявления своих типов:
<source lang="pascal">
type
Int = integer; // Тип числа.
ShortStr = string[255]; // Тип короткой строки.
Numbers = (One, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten); // Тип названия числа.
TArray<T> = array of T; // Тип одномерного массива с элементами типа T.
TMatrix<T> = array [,] of T; // Тип матрицы с элементами типа T.
</source>
Пример вывода обобщённого массива:
<source lang="pascal">
type
TArray<T> = array of T;
 
procedure Show<T>(a: TArray<T>);
begin
for var i := 0 to a.Length - 1 do
Writeln(a[i]);
end;
 
begin
Show(ArrRandom());
end.
</source>
 
=Примеры=
==Мигание текста==
<source lang="pascal">
uses Crt;
begin
while true do
begin
TextColor(Random(1, 15));
Writeln('Hello world!');
Sleep(200);
ClrScr();
end;
end.
</source>