Редактировать
Описания переменных внутри блока и автовывод типов
В большинстве случаев переменные описываются в блоке begin-end и описание совмещается с инициализацией:
begin
var a := 5;
var r := 3.14;
var s := 'ABC';
end.
Это решает сразу несколько проблем:
- можно не говорить о типах в первых программах или лишь упоминать их
- невозможно забыть инициализировать переменную
- переменные описываются по мере необходимости близко к месту их использования. Это улучшает читаемость. Проблема старого Паскаля, когда груда переменных описывалась до beginа, отсутствует
При таком способе возникает одна проблема: если надо накопить сумму вещественных, то такой код приведет к ошибке типов:
begin
var sum := 0;
loop 10 do
sum += ReadReal;
end.
Для исправления этой ошибки всё равно придётся говорить о типах и инициализировать sum одним из двух способов:
или
Цикл for var
Переменная — счётчик цикла for всегда должна описываться в заголовке цикла:
for var i:=1 to 9 do
Print(i);
for var i:=21 to 29 do
Print(i);
Это делает невозможным использование счётчика цикла вне цикла
Цикл loop
Если количество повторений цикла заранее известно, но неважен номер повторения, то используется цикл loop:
Множественное описание переменных с инициализацией
Можно инициализировать сразу несколько переменных в момент описания:
var (a,b) := (1,2);
var (Имя,Возраст) := ('Иванов',15);
Вывод
Для вывода вместо процедуры Write предпочтительно использовать процедуру Print. В отличие от Write она разделяет элементы вывода пробелами. Например:
begin
var (a,b,c) := (1,2,3);
Println(a,b,c);
for var i:=1 to 9 do
Print(i);
end.
Для вывода нескольких значений с пояснениями рекомендуется использовать интерполированные строки:
begin
var (a,b) := ReadInteger2;
Println($'Сумма {a} и {b} равна {a + b}');
end.
вместо режущего глаз
Writeln('Сумма ', a ' и ', b, ' равна ', a + b);
Ввод
Ввод принято осуществлять, используя функции вида ReadInteger, ReadReal и т.д.:
begin
var a := ReadInteger;
end.
Это позволяет совмещать описание переменной с инициализацией и автовыводом типа. В качестве дополнительных бонусов: можно делать приглашение к вводу как параметр функции ввода и вводить сразу несколько переменных одного типа:
begin
var a := ReadReal('Введите a: ');
var (m,n,p) := ReadInteger3;
var (x,y) := ReadReal2('Введите координаты точки: ');
end.
Для ввода с контролем ошибок используется функция TryRead. Она возвращает False если ввод осуществлён неверно (введено не число или число выходит за границы диапазона). Типичный пример её использования:
begin
var i: integer;
while not TryRead(i,'Введите i:') do
Println('Повторите ввод!');
end.
Тип BigInteger
Для работы с длинными целыми используется тип BigInteger. Например, чтобы вычислить 100!, достаточно написать следующий код:
begin
var p: BigInteger := 1;
for var i := 2 to 100 do
p *= i;
Println(p);
end.
Константу BigInteger можно также создать, используя суффикс bi — тогда предыдущий код изменится следующим образом:
begin
var p := 1bi;
for var i := 2 to 100 do
p *= i;
Println(p);
end.
Некоторые полезные стандартные процедуры, функции и операции
Для обмена значений двух переменных a
и b
используйте стандартную функцию Swap(a,b)
:
begin
var (a,b) := ReadReal2;
Println(a,b);
Swap(a,b);
Println(a,b);
end.
Разумеется, первый раз необходимо показать, что обмен значений осуществляется через третью переменную:
begin
var a,b := ReadReal2;
Println(a,b);
var t := a;
a := b;
b := t;
Println(a,b);
end.
Но далее следует использовать Swap.
Минимальное и максимальное среди множества значений можно вычислить, используя стандартные функции Min и Max:
begin
var a,b,c,d := ReadReal4;
Println(Min(a,b),Max(c,d));
Println(Min(a,b,c,d)); // произвольное количество значений
end.
Для возведения в степень используется операция **
:
begin
Println(2 ** 10);
Println(2 ** 0.5);
end.
Возведение в целую степень оптимизировано и работает быстрее стандартной функции Power(a,n)
.
Для проверки принадлежности диапазону используется конструкция x in a..b
:
begin
var x := ReadInteger;
if x in 10..99 then
Print('Двузначное число');
end.
Эта операция эффективна и переводится в
begin
var x := ReadInteger;
if (x >= 10) and (x <= 99) then
Print('Двузначное число');
end.
Диапазоны также можно использовать для вещественных значений и для символов:
r in 2.5..3.8
c in 'a'..'z'
Для проверки принадлежности множеству значений используется либо множество:
либо массив:
Мы рекомендуем второй способ — он существенно более эффективен по скорости и по памяти.
Условная операция
Если переменной необходимо присвоить значение в зависимости от условия, то вместо условного оператора иногда нагляднее использовать условную операцию:
begin
var (a,b) := ReadInteger2;
var min := if a<b then a else b;
Print(min);
end.
Методы в стандартных типах
В PascalABC.NET внутри каждого типа имеется ряд полезных методов. В отличие от внешних процедур и функций, они “вшиты” в тип — переменная знает все свои методы и может вызывать их, используя точечную нотацию.
Например, чтобы вывести значение переменной базового типа, можно
использовать метод Print:
begin
var i: integer := 5;
i.Print;
end.
Из других интересных методов для начинающих для целых типов отметим:
i.IsEven - является ли i чётным
i.IsOdd - является ли i нечётным
i.InRange(a,b) - находится ли значение i между a и b (включительно)
i.Sqrt - квадратный корень
Например, в следующей программе вычисляется количество четных двузначных из 10 введённых:
begin
var count := 0;
loop 10 do
begin
var x := ReadInteger;
if i.IsEven and i.InRange(10,99) then // не требует написания скобок
count += 1;
end;
count.Print
end.
Для вещественных значений полезными являются методы
r.Sqrt
r.Round
r.Trunc
r.InRange(a,b) - находится ли значение r между a и b (включительно)
В частности, удобно использовать цепочечную точечную нотацию:
begin
var x := 17;
var IsPrime := True;
for var i:=2 to x.Sqrt.Round do
if x mod i = 0 then
begin
IsPrime := False;
break
end;
IsPrime.Print;
end.
Для всех числовых типов также определены константы MinValue и MaxValue. Чтобы обратиться к ним, следует использовать имя типа:
integer.MinValue
real.MaxValue
Кортежи
Кортежи представляют собой способ объединить несколько значений в одно целое. Значения типа Кортеж записываются в круглых скобках: (1,2,3)
или ('Иванов',15)
. с помощью кортежей можно выполнять одновременные присваивания нескольким переменным:
begin
var a,b: integer;
(a,b) := (3,5);
(a,b) := (b,a);
end.
Присваивание (a,b) := (b,a)
позволяет поменять значения двух переменных.
Использование кортежей даже в начальных задачах крайне многообразно.
Пример 1. Нахождение наибольшего общего делителя
begin
var (a,b) := ReadInteger2;
while b>0 do
(a,b) := (b, a mod b);
Print('НОД = ', a);
end.
Пример 2. Числа Фибоначчи
begin
var (a,b) := (1,1);
loop 20 do
begin
Print(a);
(a,b) := (b, a + b);
end;
end.
- Основы
- Таблица типов
- Справочные примеры PascalABC
Синтаксис программ[править]
Минимальная структура программы:
begin {main code here} end.
Пример:
begin writeln('Hello world'); end.
Константы[править]
В данной секции располагаются определенные пользователем константы. Синтаксис объявления констант выглядит так:
const <имя> = <значение>;
Например:
const a = 12; s = 'ABC.NET';
Секция «var»[править]
Данная секция предназначена для переменных и массивов. Переменные объявляются так:
Простейшие типы[править]
Тип строка[править]
Тип строка — это тип переменных, который позволяет хранить в переменной любой текст. Объявление строковой переменной:
Строки могут быть не более 255 символов. Изначальное значение строковых переменных — это «пустая строка» — ».
Операция | Описание |
---|---|
s1 + s2 | Объединение строк |
s1*n | Дублирование строки n раз |
Тип целое число integer[править]
Кроме типа string в PascalABC.Net есть еще тип целое число — «integer». Само число a может принимать (в PascalABC.Net) значения от -32768 до 32767. Пример объявления переменной типа integer:
Операция | Описание |
---|---|
a + b | Сложение чисел |
a — b | Разность чисел |
a * b | Произведение чисел |
a div b | Целочисленное деление |
a mod b | Остаток от деления |
Тип вещественное число real[править]
Декларация переменной типа real:
Пример присваивания переменной данного типа:
a := 1.0; // Не 1,0! a := 1; // Эквивалентно 1.0.
Операция | Описание |
---|---|
a + b | Сложение чисел |
a — b | Разность чисел |
a * b | Произведение чисел |
a / b | Частное чисел |
Тип символ[править]
Тип символ или «char» используется в основном для хранения одного любого символа вне зависимости от того, является ли данный символ буквой или цифрой. Объявление переменной символьного типа:
Секция «begin — end»[править]
Данный раздел программы содержит все команды, выполняемые при ее запуске. Данная секция программы выглядит так:
begin <команда_1>; ... <команда_n>; end.
Комментарии[править]
Комментарий — это часть кода, которую игнорирует компилятор. Он создается следующим образом:
Или:
Массивы[править]
Массивы — это именованный список элементов одного типа.
P. S. Для работы с массивами существует учебный модуль Arrays.
Статические[править]
Статические массивы имеют фиксированный размер. Общий синтаксис объявления данных массивов выглядит так:
var <имя>: array [0..N - 1] of <тип>;
, где N — длина массива.
Пример:
const N = 5; var A: array [0..N] of integer; K: integer; j: integer; Found: boolean; begin Found := false; K := ReadInteger('K:'); for var i := 0 to N - 1 do begin if not Found then Readln(A[i]) else Readln(A[i + 1]); if not Found and (A[i] = K) then begin Found := true; j := i + 1; end; end; A[j] := A[N]; for var i := 0 to N do WriteFormat('{0} ', A[i]); end.
Посмотреть статью с примером.
Матрицы[править]
Двумерные[править]
Матрица — это n-мерный список значений, имеющий свой тип и ограниченный некоторыми значениями. Пока будем рассматривать только статические двухмерные и трехмерные матрицы. Перед тем, как перейти к их изучению вспомни таблицы в Excel. Каждая таблица имеет свой размер — ширину и длину. Возьмем за правило ассоциировать двухмерные матрицы с таблицами. Объявление матрицы:
var <имя>: array [0..N - 1, 0..M - 1] of <тип>;
, где N, M количество строчек и столбцов соответственно.
Трехмерные[править]
Трехмерный матрицы обладают третьим измерением:
var <имя>: arr, 0..K - 1] of <тип>;
N-мерные матрицы[править]
Декларация N-мерной матрицы:
var <имя>: array [0..A - 1, 0..B - 1, ..., 0..Z - 1] of <тип>;
, где A..Z означают количество элементов в соответствующем измерении.
Статические и динамические массивы[править]
Динамические массивы позволяют управлять количеством элементом в каждом из их измерений во время выполнения программы.
Пример объявления массива: | Статический | Динамический | Вызов SetLength (для динамического массива) |
---|---|---|---|
Векторный |
<имя>: array [0..N - 1] of <тип> |
<имя>: array of <тип> |
SetLength(<имя>, N) |
Двумерный |
<имя>: array [0..N - 1, 0..M - 1] of <тип> |
<имя>: array [,] of <тип> |
SetLength(<имя>, N, M) |
Трехмерный |
<имя>: array [0..N - 1, 0..M - 1, 0..K - 1] of <тип> |
<имя>: array [,,] of <тип> |
SetLength(<имя>, N, M, K) |
Понятие индекса массива[править]
Индекс массива — это номер элемента массива. Индекс может принимать значения [0, N — 1], где N — количество элементов некоторой размерности. Обращение к элементу одномерного массива с некоторым индексом:
Составим таблицу, которую следует запомнить:
N-мерный массив | Общий синтаксис указания элемента массива | Пример |
---|---|---|
Векторный |
<имя>[i] |
A[1] |
Двумерный |
<имя>[i, j] |
A[1, 1] |
Трехмерный |
<имя>[i, j, k] |
A[1, 1, 1] |
Где i, j, k — индексы.
Индекс в виде значения элемента массива[править]
Индексом может быть значение элемента массива:
Операторы, стандартные процедуры и функции[править]
Вывода на экран[править]
Вывод текста[править]
Вывести текст — это значит отобразить текст на экране. Общий синтаксис для вывода текста выглядит так:
Вывод значений переменных[править]
Вывод значений произвольного количества переменных:
Write(<имя_1>, <имя_2>, ... , <имя_n>);
Например:
var A, B, C: integer; begin A := 1; B := 6; C := 2; Write(A, B, C); end.
Для перехода на новую строку после вывода последнего значения используйте Writeln вместо Write.
Ввод данных с клавиатуры[править]
Чтение с клавиатуры — это процесс ввода данных с клавиатуры и запись в соответствующий элемент программы этих данных. Элементами программы являются как переменные, так и элементы массивов. Тип данных, вводимых с клавиатуры, должен соответствовать типу элемента, в который записываются данные с клавиатуры. Использование Readln для чтения с клавиатуры и перехода на новую строку:
Readln(<имя_переменной_1>, <имя_переменной_2>, ... ,<имя_переменной_n>);
Условный оператор[править]
Общий синтаксис условного оператора if:
if (<условие>) then begin <команда_1>; ... <команда_N>; end;
Команды <команда_1>…<команда_N> будут выполнены только при истинности условия.
Сравнение[править]
Условные обозначения в программировании операций сравнения приведены в таблице:
Операция | Эквивалент в Паскале |
---|---|
≤ (меньше или равно) | <=
|
≥ (больше или равно) | >=
|
< (меньше) | <
|
> (больше) | >
|
= (равно) | =
|
≠ (не равно) | <>
|
Общий синтаксис сравнения двух величин:
<элемент_1><знак_сравнения><элемент_2>;
Пример:
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.
Посмотреть статью с примером.
Оператор case[править]
Оператор case используется для сопоставления значения некоторого выражения с константными значениями:
case <выражение> of <константное_значение_1>: begin <операторы_1>; end; ... <константное_значение_n>: begin <операторы_n>; end; else <операторы> end;
Если некоторое i-тое константное выражение совпадает с значением выражения, то i-ая группа операторов будет выполнена. Группа операторов после else будет выполнена, если значение выражения не совпало ни с одной из констант. begin — end не нужны, если после двоеточия только один оператор.
Пример:
var S, S2: string; i: integer := 1; // Выделение слова из строки: function GetWord(s: string; var from: integer): string; begin while (from <= Length(s)) and char.IsLetter(s.Chars[from]) do begin Result += s.Chars[from]; Inc(from); end; end; begin Readln(S); var L := Length(S); while i <= L do begin while (i <= L) and not char.IsLetter(S.Chars[i]) do begin S2 += S.Chars[i]; Inc(i); end; var w := GetWord(S, i); // Преобразование числа в слово: case LowerCase(w) of 'ноль', 'нуль': S2 += '0'; 'один': S2 += '1'; 'два': S2 += '2'; 'три': S2 += '3'; 'четыре': S2 += '4'; 'пять': S2 += '5'; 'шесть': S2 += '6'; 'семь': S2 += '7'; 'восемь': S2 += '8'; 'девять': S2 += '9'; else S2 += w end; end; S := S2; Writeln(S2); end.
Посмотреть статью с примером.
Оператор цикла while[править]
Оператор цикла позволяет выполнять группу операторов (или один) циклически пока условие является истинным.
while (<условие>) do begin <оператор_1>; ... <оператор_n> end;
Пример:
var S, S2: string; i: integer := 1; begin Readln(S); // Пока не дошли до конца строки: while i <= Length(S) do begin if S.Chars[i] = ' ' then begin S2 += ' '; Inc(i); end; // Пропускаем все лишние пробелы. while (i <= Length(S)) and (S.Chars[i] = ' ') do Inc(i); // Бежим по строке до тех пор пока не встретим пробел. while (i <= Length(S)) and (S.Chars[i] <> ' ') do begin S2 += S.Chars[i]; Inc(i); end; end; S := S2; Writeln(S); end.
Посмотреть статью с примером.
Счетчик[править]
«Счетчик» — это оператор цикла for, выполняющий группу операторов определенное количество раз.
Общий синтаксис оператора цикла for:
for var <переменная_цикла> := <значение_1> to <значение_2> do begin <оператор_1>; ... <оператор_n>; end;
Если второе значение меньше первого — используйте downto вместо to.
Пример:
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.
Посмотреть статью с примером.
Оператор break[править]
Для выхода из цикла можно использовать break:
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.
Новая итерация цикла[править]
Для завершения текущей итерации цикла и начала другой используйте оператор continue.
Функции[править]
Общий синтаксис описания функции:
function <имя>(<описание_параметров>): <тип_возвращаемого_значения>; begin <оператор_1>; ... <оператор_n>; end;
или:
function <имя>(<описание_параметров>) := <выражение>; // Вывод типа возвращаемого значения производится на основе типа выражения.
Можно устанавливать значение переменной Result для указания возвращаемого значения.
Пример:
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.
Посмотреть статью с примером.
Процедуры[править]
Синтаксис объявления процедуры:
procedure <имя>(<описание_параметров>); begin <оператор_1>; ... <оператор_n>; end;
или:
procedure <имя>(<описание_параметров>) := <оператор>;
Пример:
uses Crt, GraphABC, ABCButtons; var B: ButtonABC; procedure P() := Writeln('Привет мир!'); // Сокращённый синтаксис объявления процедур, содержащих один оператор. begin B := new ButtonABC(0, 0, 100, 40, 'Button', clRed); B.OnClick := P; end.
Посмотреть статью с примером.
Оператор exit[править]
Для выхода из некоторой функции или процедуры можно использовать оператор exit.
Встроенные процедуры и функции[править]
Описание | Комментарии |
---|---|
Random(<максимальное_значение>) |
Генерирует случайное число в диапазоне [0, максимальное_значение — 1]. |
Inc(<имя>) |
Увеличивает значение переменной на 1 (переменная типа real не может быть параметром). |
Dec(<имя>) |
Уменьшает значение переменной на 1 (переменная типа real не может быть параметром). |
Succ(<символ>) |
Возвращает следующий символу символ. |
Pred(<символ>) |
Возвращает предыдущий символу символ. |
Подключение модулей[править]
Модуль — это часть программы, вынесенная в отдельный файл. Для подключения модуля следует писать в разделе uses его имя:
uses <имя_модуля_1>, <имя_модуля_2>, ... , <имя_модуля_n>;
Свои типы[править]
Примеры объявления своих типов:
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.
Пример вывода обобщённого массива:
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.
Примеры[править]
Мигание текста[править]
uses System; begin var rnd := new Random(); while true do begin Console.SetCursorPosition(0, 0); Console.ForegroundColor := ConsoleColor(rnd.Next(15)); Console.Write('Hello world!'); Sleep(200); end; end.
Класс ввода данных пользователя[править]
uses FormsABC; const Width = 50; type TUserData = class private _Name, _Password: Field; _LogIn: Button; _W: integer; function GetW() := _W; procedure SetW(v: integer); begin _Name.FieldWidth := v; _Password.FieldWidth := v; _W := v; end; public property Name: Field read _Name; property Password: Field read _Password; property LogIn: Button read _LogIn; property W: integer read GetW write SetW; constructor(nText, pText, logInText: string); begin _Name := new Field(nText, Width); _Password := new Field(pText, Width); _LogIn := new Button(logInText); end; end; begin var UserInput := new TUserData('Name', 'Password', 'Ok'); end.
var x, y: real;
begin
writeln('введите введите x'); readln(x); if x>0 then y:=sqrt(x) else y:=sqr(x); writeln(y); writeln('введите x'); readln(x); if x=0 then y:=0 else y:=0; writeln(y); writeln('введите x'); readln(x); if x<0 then y:=x+x else y:=x+x; writeln(y); end.
PascalABC.NET – это
система
программирования и язык Pascal нового поколения для платформы Microsoft .NET.
Язык PascalABC.NET содержит все основные
элементы
современных языков программирования:
модули,
классы,
перегрузку операций,
интерфейсы,
исключения,
обобщенные классы,
сборку мусора,
лямбда-выражения, а
также некоторые средства параллельности, в том числе
директивы OpenMP. Система PascalABC.NET включает
в себя также простую интегрированную среду, ориентированную на эффективное
обучение современному программированию.
- Описание языка PascalABC.NET.
- Преимущества PascalABC.NET для
разработки программ и для обучения. - Отличия PascalABC.NET от Delphi (Object
Pascal). - Примеры, иллюстрирующие основные особенности PascalABC.NET,
находятся в меню «Помощь/Коротко о главном».
Язык Паскаль был разработан швейцарским ученым Никлаусом Виртом в 1970 г. как
язык со строгой типизацией и интуитивно понятным синтаксисом. В 80-е годы
наиболее известной реализацией стал компилятор Turbo Pascal
фирмы Borland, в 90-е ему на смену пришла среда
программирования Delphi, которая стала одной из
лучших сред для быстрого создания приложений под Windows.
Delphi ввела в язык Паскаль ряд удачных объектно-ориентированных расширений,
обновленный язык получил название Object Pascal. С версии Delphi 7
язык Delphi Object Pascal стал называться
просто Delphi. Из
альтернативных реализаций Object Pascal следует отметить
многоплатформенный open source компилятор Free
Pascal.
Создание PascalABC.NET
диктовалось двумя основными причинами: устаревание
стандартного языка Pascal и систем, построенных на его основе (Free Pascal), а
также необходимость в современной простой, бесплатной и мощной
интегрированной среде
программирования.
PascalABC.NET опирается на передовую платформу
программирования Microsoft.NET, которая обеспечивает язык PascalABC.NET
огромным количеством стандартных библиотек и позволяет легко
сочетать его с другими .NET-языками: C#,
Visual Basic.NET, управляемый C++, Oxygene и др. Платформа .NET предоставляет также такие языковые
средства как единый механизм обработки исключений, единый механизм управления
памятью в виде сборки мусора, а также возможность свободного использования классов, наследования,
полиморфизма и интерфейсов между модулями, написанными на разных .NET-языках.
О том, что такое платформа Microsoft.NET, о ее преимуществах для программирования
и для обучения можно прочитать здесь.
Язык PascalABC.NET близок к реализации Delphi (Object Pascal). В нем
отсутствует ряд специфических языковых конструкций Delphi,
некоторые конструкции изменены. Кроме этого,
добавлен ряд возможностей: имеется автоопределение типа при описании, можно описывать переменные внутри блока, имеются операции +=
,
,
-=*=
, /=
, методы можно описывать непосредственно в теле класса или
записи, можно пользоваться встроенными в стандартные типы методами и свойствами, память под объекты управляется
сборщиком мусора и
не требует явного освобождения, множества
set
могут быть
созданы на основе произвольных типов, введен операторы foreach
, переменные
циклов for
и foreach
можно описывать непосредственно в заголовке цикла, имеются
обобщенные классы и подпрограммы (generics), последовательности, кортежи, срезы, лямбда-выражения и др.
Близким по идеологии к PascalABC.NET
является язык RemObjects Oxygene (Object Pascal 21 века). Однако он сильно изменен в
сторону .NET: нет глобальных описаний, все описания
помещаются в класс, содержащий статический метод Main,
отсутствует ряд стандартных подпрограмм языка Паскаль. Кроме того, система
RemObjects Oxygene — платная
и не содержит собственной оболочки (встраивается в Visual Studio
и другие IDE), что практически делает невозможным ее использование в сфере образования.
Интегрированная среда PascalABC.NET
обеспечивает подсветку синтаксиса, подсказку по коду (подсказка по точке,
подсказка параметров подпрограмм, всплывающая подсказка по коду), форматирование
текста программы по запросу, переход к определению и реализации имени, элементы
рефакторинга.
Все права на систему программирования PascalABC.NET
принадлежат PascalABCCompiler Team (web-сайт
http://pascalabc.net).
Содержание:
От автора.
Глава I. Основы языка Pascal.
§1. Основные сведения о языке программирования Pascal. Первая программа.
§2. Переменные. Основы ввода вывода. Имена программ. Комментарии.
§3. Оператор присваивания. Арифметические выражения.
§4. Процедуры и функции. Константы.
§5. Условия. Логические выражения. Оператор выбора Case.
§6. Оператор безусловного перехода. Циклы. Блок-схемы.
Глава II. Типы данных.
§7. Типы данных. Порядковые типы. Целые типы.
§8. Логический, символьный, перечисляемый типы и тип-диапазон.
§9. Системные подпрограммы для работы с порядковыми типами. Вещественные типы.
§10. Структурированные типы. Массивы. Записи. Множества.
§11. Строки.
§12.Файлы. Типизированные и текстовые файлы.
§13.Нетипизированные файлы. Подпрограммы для работы с файлами.
Глава III. Дополнительные сведения к пройденному материалу.
§14. Сведения по различным темам.
Цикл For downto do.
Процедуры Halt и Sleep.
Математические функции.
Тригонометрические функции.
Создание переменных в теле программы.
Идентификаторы.
Венгерская нотация.
Инициализация переменных.
§15. Сведения по подпрограммам.
Работа подпрограммы с переменной напрямую.
Вызов подпрограммы подпрограммой.
Рекурсия.
Специальная переменная Result.
Подпрограммы с одним именем.
§16. Работа в PascalABC.NET.
Глава IV. Модули. Программирование под ОС DOS.
§17. Модули.
§18. Сведения необходимые для программирования под ОС DOS.
Консольное приложение. Исполняемый файл.
Текущий каталог.
Модуль CRT.
§19. Клавиатурный тренажёр. Игра «Гонки».
Глава V. Графика. Программирование под ОС Windows.
§20. Модуль GraphABC.
Текст.
Цвета.
Точка.
Отрезок.
Подпрограммы для настройки пера.
§21. Геометрические фигуры.
Круг и окружность.
Подпрограммы для работы с кистью.
Дуга. Часть круга.
Прямоугольник.
Прямоугольник со скруглёнными краями.
Эллипс.
Заливка области заданным цветом.
Движущийся предмет.
§22. Модель мяча.
§23. Отталкивающиеся мячи.
§24. Процедурный тип. Использование клавиатуры и мыши.
§25. Программа «Калькулятор».
Глава VI. Объектно-ориентированное программирование.
§26. Принципы ООП. Инкапсуляция.
§27. Наследование. Полиморфизм. Абстрактные методы.
§28. Свойства. Видимость членов класса.
§29. Оставшиеся темы по ООП. Подготовка объектов для игры «Гонки».
Глава VII. Заключительная часть.
§30. Динамическая память.
Динамическая память, указатели.
Динамический список.
Динамические массивы.
§31. Исключения.
§32. Обзор классов и модулей PascalABC.NET.
§33. Задачи для закрепления пройденного материала.
Заключение.
Среда программирования PascalABC.Net используется в качестве начального обучения программированию школьников на языке программирования Паскаль. Среда содержит мощную справочную систему и встроенный задачник с автопроверяемыми заданиями. Это позволит вам быстро научиться писать программы на паскале.
В бесплатной мини-версии задачника доступно 270 заданий по всем основным разделам. Этого вполне достаточно для самостоятельного освоения начального уровня программирования. В настоящее время актуальная версия 3.8 и выше скачать можно здесь PascalABC.Net. Рекомендую скачать последнюю. Итак, начинаем pascal abc обучение.
Содержание
- Внешний вид интерфейса программы PascalABC
- Работа с PascalABC.Net
- Работа с электронным задачником
Внешний вид интерфейса программы PascalABC
Окно среды программирования выглядит стандартно. В нем присутствует строка меню (1), ниже располагается панель инструментов быстрого доступа (2). Далее расположена рабочая зона редактора кода.
Вверху отображены ярлыки открытых файлов с текстами программ (3). Одновременная работа с несколькими текстами значительно упрощает создание программ. Можно копировать и переносить участки кода из одного файла в другой (4).
В режиме выполнения программы можно увидеть зону ввода данных и вывода результатов (5).
Работа с PascalABC.Net
После набора текста программы необходимо выполнить ее сохранение и задать имя. Для этого можно воспользоваться командой Файл-Сохранить как или соответствующей кнопкой на панели инструментов.
Давайте имя отличное от предлагаемого по умолчанию. Это облегчит вам в дальнейшем поиск нужного кода.
Запуск
Теперь можно запустить программу для проверки ее работы. Команда запуска Программа -Выполнить или кнопкой в виде зеленого треугольника на панели инструментов. Перед запуском выполняется компиляция кода. Если в коде есть ошибки, то появится красная строка с описанием ошибки.
Курсор будет указывать место вероятной ошибки, но это не всегда совпадает с её описанием. Вот, например, на скриншоте выше курсор указывает на цикл For, но ошибка содержится в строке выше. Там пропущен символ «точка с запятой», который обязательно должен быть по завершению каждой командной строки. После исправления ошибки, снова запускаем выполнение программы.
Остановка
Остановка программы происходит по ее завершению. Но возможны случаи, когда программу необходимо остановить принудительно. Для этого есть кнопка «Стоп» на панели инструментов или команда Программа — Завершить.
Настройка текстового редактора abc паскаль
По умолчанию в редакторе кода задан минимальный размер шрифта. Если вы испытываете дискомфорт при наборе текста, то зайдите в меню Сервис — Настройки. Установите желаемый размер шрифта. Можно показать нумерацию строк.
Работа с электронным задачником
Научиться писать программы pascal невозможно без практики. Система автоматического тестирования работы программы для паскаля поможет вам освоить программирование на языке pascal.
Зайдите в меню Модули — Создать шаблон программы. У вас откроется следующее окно (смотрите ниже)
Здесь нужно написать название группы заданий. Смотрим на список и вписываем нужную группу в точности как она записана в списке окна. После указания имени группы заданий, подсказка поменяется.
Теперь будет указано количество доступных заданий в этой группе или будут перечислены номера конкретных заданий. Вы добавляете номер к названию группы без пробела. Нажимаем кнопку Загрузка. Откроется вкладка с выбранным заданием. В новом файле будет присутствовать автоматически сгенерированный код. Его удалять нельзя.
Теперь для просмотра текста задания нажмем на кнопку запуска программы.
Посмотрите на окно выше. Оно разделено на три части. В первой части дано условие задачи, для которой нужно написать код. Во второй части желтым цветом указаны числа. Это исходные данные, сгенерированные задачником. Они будут прочитаны командой Read. В третьей части отображается результат, который будет получен при выполнении вашей программы.
Для вызова задачника можно пройти в пункт меню Модули — Посмотреть задания. Кнопкой F3 можно поменять цвет фона окна на белый.
Теперь закрываем окно и дописываем код.
Запускаем на выполнение. Если нет ошибок, то получим окно.
Нужно провести несколько повторных запусков программы, чтобы пройти все тесты. И только после прохождения всех тестов задание получит статус «Задание выполнено!» Теперь можно переходить к выполнению следующего задания.
Следующая тема для изучения Линейные алгоритмы