Массивом называют структуру данных, которая содержит упорядоченное множество однотипных переменных (элементов) с одним и тем же именем (именем массива). Для обращения к конкретным элементам массива используется индекс (условный номер элемента).
x1,x2,...x10 – обозначения, принятые в математике, x[1],x[2],...x[10] – в ТР.
Индексами могут служить выражения.
Объявление массива в программе:
VAR <Имя>: ARRAY[<Нач_индекс>..<Кон_индекс>] of <Тип>;
где
· <Имя> - имя переменной-массива;
· ARRAY, of - ключевые слова;
· <Нач_индекс> и <Кон_индекс> - целые числа (пока), определяющие диапазон изменения индексов (номеров) элементов массива;
· <Тип> - тип элементов массива.
Таким образом, при объявлении массива необходимо указать его идентификатор (имя), тип данных элементов массива и размер. В квадратных скобках указываются величины, соответствующие начальному и конечному индексам, разделенные двумя точками.
Например,
VAR Matrix : ARRAY [1 .. 10] OF REAL;Koef : ARRAY [1 .. 3] OF INTEGER;
Ввести несколько чисел и распечатать их в обратном порядке.
Массив Х, содержащий 100 элементов.
Ввести n (n<=100).
(Нарисовать схемы и записать тексты)
i:=1;
WHILE i<=n DO BEGIN
READLN(Х[i]);
i:=i+1
END;
i:=n;
WHILE i>=1 DO BEGIN
WRITELN(X[i]);
i:=i-1
END;
i:=1;
REPEAT
READLN(X[i]);
i:=i+1
UNTIL i>n;
i:=n;
REPEAT
WRITELN(X[i]);
i:=i-1
UNTIL i<1;
Цикл с параметром:
For i:=1 to n do readln(X[i]);
For i:=n downto 1 do writeln(X[i]);
For i:=1 to n do writeln(X[n-i+1]);
1. Защищается алгоритм, а не текст программы на Паскале. Если Вы не в состоянии вразумительно объяснить ход решения, рисуйте схему алгоритма.
2. Текст на ТР должен соответствовать алгоритму.
3. После заголовка - комментарий, в котором ФИО, номер задачи и стоимость в баллах.
4. Перед каждым вводом должна быть подсказка о том, что вводить и с какими ограничениями.
5. Зацикливание программы, если это имеет смысл.
6. Задержка пользовательского экрана, если это необходимо.
Вот шаблон для оформления текста программы:
program <имя_программы>;
{Фамилия И.О., ПМ-1Х, задача I.15.3 сложность 3 балла}
…<Секция описаний>
var c:char;
begin <Начало секции действий>
repeat
…
writeln(‘Введите значение n, 0<n<=100’);
readln(n);
…
writeln(‘Конец работы? - yes, no’);
readln(c);
until c=’y’;
end.
· Алгоритмический язык TP ориентирован на работу в среде MS-DOS.
Базовый язык Pascal разработан Н.Виртом (1968) как язык обучения программированию. Все реализации языка унаследовали принципы, позволяющие разрабатывать читабельные, структурные, надежные и эффективные программы.
· В основе этих принципов заложена концепция типа данных, которую можно сформулировать следующим образом:
1)каждая переменная, константа, выражение и функция относятся к определенному типу данных;
2)тип данных задается явно;
3)над данными каждого типа допустимы определенные операции.
· Язык Pascal называют языком со строгой типизацией данных. Строгая типизация данных требует некоторых дополнительных затрат от разработчика программы на этапе проектирования и реализации на алгоритмическом языке, однако эти затраты окупаются на стадии отладки и модификации программы, поскольку у компилятора имеется возможность более детального синтаксического анализа исходного текста во время компиляции и создания машинного кода, способного более строго контролировать корректность операций на шаге выполнения.
· Каждая реализация языка ТP является расширением базового (стандартного) языка Pascal. Для того чтобы создавать мобильные программы, необходимо в данной конкретной реализации отличать средства, относящиеся к стандарту, и возможности, относящиеся к расширению стандарта.
· Программа - цепочка символов, слова, разделители, пробелы.
· Программа - последовательность предложений (вложенность)
· Структура программы: [Заголовок], секция описаний, секция действий.
· Алфавит языка TP содержит прописные и строчные буквы латинского алфавита (буквой считается символ подчеркивания "_"), цифры от 0 до 9, символы + - * / = > < ( ) [ ] { } . , ; : ' @ # ^ $ и пробел.
· К элементам языка относятся:
идентификаторы - имена переменных, констант, процедур, функций и т.д., зарезервированные (или ключевые) слова,
специальные символы - комбинации символов алфавита.
· Идентификатором в TP может быть любое слово, состоящее из букв и цифр, начинающееся с буквы. Компилятор не различает прописные и строчные буквы, кроме того, следует иметь в виду, что компилятор анализирует лишь первые 63 символа идентификатора.
· Все зарезервированные (ключевые) слова алгоритмического языка следует помнить, поскольку нельзя использовать в программе идентификаторы, совпадающие с ключевым словом. В списке ключевых слов значком "+" помечены слова, не используемые в стандарте языка Pascal:
and
Mod
shr+
asm
file
Nil
string+
array
for
Not
then
begin
object+
to
case
function
Of
type
const
goto
or
unit+
constructor+
if
packed
until
destructor+
implementation+
procedure
uses+
div
in
program
var
do
inline+
record
downto
interface+
repeat
while
else
set
with
end
label
shl+
xor+
· Стандартные идентификаторы могут быть переопределены в программе, однако при этом теряется возможность использования соответствующих предопределенных средств. Например, в программе можно описать переменную "sin", но доступ к стандартной функции синуса будет закрыт в области действия этой переменной.
· Специальные символы обозначают следующие элементы языка:
+ - * / - арифметические операции;
+ - * - операции над множествами;
= < > <= >= <> - отношения;
:= - присваивание;
. - конец программы, составной идентификатор, селектор поля записи;
, - разделитель элементов списка;
: - используется при описаниях;
; - разделитель операторов языка;
.. - диапазон;
[ ] или (. .) - селектор элемента массива;
{ } или (* *) - скобки для выделения комментариев;
+ - операция конкатенации строк
# - обозначение символа по его коду;
@ - обозначение адреса переменной;
$ - обозначение директивы компилятора или шестнадцатеричной константы;
^ - обозначение указателя.
· Комментарии { } (* *)
· Классификация типов данных:
· О совместимости типов данных.
TP - язык со строгой типизацией данных. Это означает, что во время выполнения программы производится проверка справедливости (допустимости) выполняемых операций. Строгая типизация налагает определенные ограничения, которые объединены понятием совместимости типов данных. В основном программист должен сам предвидеть и обеспечивать явное преобразование типов данных там, где это необходимо. В TP явное преобразование типа данных осуществляется по схеме NewType(value), где значение value будет преобразовано к новому типу данных NewType.
Однако существуют ситуации, когда происходит неявное преобразование типов. Эти ситуации реализуются в операциях, при присваивании, при передаче параметров и регламентированы законами совместимости.
· В TP выделены три вида совместимости типов данных, и каждый вид предоставляет определенные возможности по совместному использованию данных. Два типа данных могут характеризоваться как одинаковые, совместимые по операциям (или просто совместимые) и совместимые по присваиванию.
· Две переменные относятся к одинаковым (эквивалентным) типам, если описания переменных:
а)ссылаются на одно и то же имя типа;
б)ссылаются на различные имена типов (пусть Т1 и Т2), которые в разделе описания типов объявлены идентичными (TYPE T1=T2);
· Бинарные операции могут быть выполнены над операндами, относящимися к совместимым (по операциям) типам данных. Два типа совместимы (по операциям), если:
а)типы одинаковы (эквивалентны);
б)оба типа целые или оба типа вещественные;
в)один тип есть диапазон другого, или оба есть диапазоны от третьего;
г)оба типа - строка (STRING);
д)один тип - строка, а другой - ARRAY[1..n] of CHAR, или просто CHAR;
е)оба типа - множества с совместимыми по операциям базовыми типами;
ж)один тип - ссылочный, другой бестиповый указатель;
з)оба типа - процедурные типы с одинаковым числом параметров, типы которых соответственно эквивалентны. Для функциональных типов необходима еще и эквивалентность типов результатов.
и)Считается, что каждый объект типа "множество" совместим с пустым множеством и каждый объект типа "указатель" совместим с константой NIL.
· Величина может быть присвоена переменной, если их типы совместимы по присваиванию. Выражение f типа F называется совместимым по присваиванию с переменной w типа W, если :
а)F и W - эквивалентные, не файловые типы (и не содержат файловые типы в качестве полей);
б)оба типа - совместимые ординарные типы и значения выражения f попадают в диапазон допустимых значений типа W;
в)оба вещественные типы и значение выражения f допустимо для типа W;
г)W - вещественный тип , F - целый;
д)W - строка, F - либо строка, либо символ, либо массив символов;
е)W и F - совместимые множественные типы, причем множество f целиком входит во множество W;
ж)W и F - совместимые ссылочные типы или совместимые процедурные типы;
з)W - процедурный тип, а f - имя процедуры или функции (параметры и типы должны быть согласованны);
и)W и F - объектные типы, причем тип F потомок типа W, либо оба типа ссылочные на совместимые объектные типы.
Хотя формулировки совместимости типов представляются довольно громоздкими, в их основе лежит простой здравый смысл. Разрешены действия, приводящие к естественному осмысленному результату без потери информации (или точности). Все операции округлений и усечений должны быть предусмотрены разработчиком программы и кодироваться явно.