Основы языка Паскаль

Основы языка Паскаль.

Алфавит языка.

В алфавит любого алгоритмического языка входит фиксированный набор основных символов.

В алфавите языка Паскаль можно выделить три группы знаков: буквы, цифры и специальные символы.

В качестве букв используют буквы латинского алфавита. Слова, состоящие из букв русского алфавита, могут быть использованы только как комментарии.

К цифрам относятся все арабские цифры от 0 до 9.

В группе специальных символов можно выделить три подгруппы – знаки арифметических операций, знаки операций сравнения, разделители (. , : и т.д.)



Константы, переменные, типы данных.

Константа – величина, значение которой не изменяется в период её существования. Существуют числовые и символьные константы.

Числовые константы в программе записываются в десятичной системе, вместо запятой пишется точка.

Например:	0, -17, 0.26, 3.1415, + 12.7, -0.18, 0.23Е+06.

Переменная – величина, которая может изменяться, принимая в процессе работы с ней различные значения.

Переменные всегда начинаются буквой, за которой могут следовать буквы, цифры и знак подчеркивания. Пробелы и специальные символы не могут входить в имя переменной.

Например:	X1, alfa, N4_65, A1_5, X[I].



Данные – информация, представленная в формальном виде, который обеспечивает возможность её хранения, обработки и передачи.

В языке Паскаль любая константа, переменная, значение функции или выражения характеризуются своим типом.

Тип объекта определяет множество значений этого объекта, набор операций, которые могут быть к нему применены, а также тип результата выполнения этих операций. Формат внутреннего представления объекта зависит от его типа.



Набор типов данных, используемых в Паскале.

Простые 

Структурированные

Порядковые - целые

Integer - целое

Shortint - короткое целое

Longint - длинное целое

Byte - байт

Word – слово



логический

Boolean

символьный

Char

вещественные

Real

Single

Double 

Extended

Comp



Массивы

                                       Array

Записи

                                       Record

Множества

                                        Set



Файлы

                                        File

Строки

                                        String





 Указатели

                                       Pointer





		



Для порядковых типов характерно, что объект имеет конечное множество значений. Каждому из них можно сопоставить некоторое целое число.

Для объектов вещественного типа количество возможных значений настолько велико, что не возможно сопоставить каждому из них целое число.

Необходимо помнить, исходная информация представляется в числовом виде, символьном виде, звуковом или графическом. Программа может работать с постоянными величинами (константами) и переменными. Каждая величина должна быть объявлена, т.е. указан её тип.



Понятие идентификатора.

В программировании слово «имя» часто заменяют словом «идентификатор». Это слово произошло от латинского identifico – отождествлять.

Надо помнить, что идентификатор не обязательно представляет собой переменную, т.к. имя можно присвоить и самой программе, и функции, например sin, cos и т.п. Кстати, запрещено использовать их имена в качестве имен переменных. Правила образования идентификаторов, аналогичны правилам образования имен переменных. Зарезервированные слова (такие как BEGIN, END, PROGRAM и др.) в качестве идентификаторов не используют.

Идентификаторы могут быть любой длинны, но сравнение их между собой производится по первым 63 символам.



Арифметические операции.

Арифметические операции записываются с помощью знаков:

+ - сложение;

- вычитание:

* - умножение:

/ - деление вещественное:

div - деление целочисленное:

mod - получение остатка от деления целых чисел.

Операция возведения в степень отсутствует. (x3=x*x*x).







Математические функции.

Для вычисления значений наиболее часто употребляемых математических функций фирмой производителем разработаны специальные алгоритмы решения и программы к ним, которые поставляются вместе с языком. Они хранятся в специальной библиотеке и называются встроенными функциями.





Функция

Запись на папке

Тип аргумента

Тип результата

|x|

Abs(x)

Integer

Real

Integer

Real

Cos x

Cos(x)

Integer

Real

Real

Sin x 

Sin(x)

Integer

Real

Real

Arctg x

Arctan(x)

Integer

Real

Real

ex

Exp(x)

Real

Real

Ln x

Ln(x)

Real

Real

 π

Pi

Real

Real

x2

Sqr(x)

Integer

Real

Integer

Real

 

Sqrt(x)

Integer

Real

Real

[x] целая часть вещественного числа

Trunc(x)

Real

Integer

Real

Выделение дробной части

Frac(x)

Real

Real

Выделение целой части аргумента

Int(x)

Real

Real

Округление вещественного числа до целого

Round(x)

Real

Integer

Real

Генератор случайных чисел от 0 до x (если функция задана без аргумента, то генерируются числа от 0 до 1)

Random(x)







Random(x)

Word







аргумент не задан



Integer







real

Проверка четности

Odd(x)

Longint

Boolean (true если число четное)







Математические процедуры



Процедура

Паскаль

Увеличение числа x на y (если y не задано, x увеличивается на 1)

Inc(x, y)

Уменьшение значения числа x на y (если y не задано, x увеличивается на 1)

Dec(x, y)

Обеспечение несовпадения последовательностей случайных чисел, генерируемых функцией random

randomize



Необходимо знать, что угол (аргумент) тригонометрических функций задается в радианах  R= градус*3.14/1800



Арифметические выражения



Выражение, в котором используются знаки арифметических операций и математические функции, называется арифметическим выражением. 

Приоритет выполнения операций в арифметическом выражении:

действие в скобках;

взятие стандартных функций;

деление или умножение;

сложение или вычитание.



Пример: → ln(exp(2*x)+abs(x))/(sin(x)*sin(x)+cos(x*x))



xn записать выражением нельзя, т.к. в Паскале нет знака обозначающего возведение в степень. Однако данное выражение можно представить как:

xn ==en*lnx

Аналогичным образом

xn/m =  = en/m lnx



Структура программы на языке Паскаль



Программа – упорядоченная последовательность действий для ЭВМ, реализующая алгоритм решения какой-либо задачи.

Программа, записанная на языке паскаль, начинается заголовком PROGRAM, за которым следует имя программы, и заканчивается служебным словом END и точкой. Заголовок при программировании может быть опущен, но по правилам хорошего тона следует указать некоторые сведения о назначении программы. Между этими словами располагаются два раздела программы: раздел описания данных и раздел описания действий.

Действие будем называть оператором.

Схематично это выглядит так:







	

Заголовок

	PROGRAM <имя>;

	



Раздел описания данных











Раздел операторов

		BEGIN {начало раздела операторов}







	

Конец программы	END.













В разделе описания данных используются служебные слова: LABEL, CONST, TYPE, VAR, PROCEDURE, FUNCTION .

Раздел операторов начинается служебным словом BEGIN. Каждое предложение (инструкция) программы заканчивается точкой с запятой.

Чтобы в разделе описания переменных объявить константу используется слово CONST, например:

CONST

             X =10;

Чтобы объявить переменную используется служебное слово VAR и слово, определяющее тип переменной, например:

VAR

        a, b: integer;

        c: integer;

(слово VAR написано строчкой выше для наглядности).



Логические операции



В Паскале существует четыре логические операции:

NOT – логическое отрицание «не»		NOT(x)

AND – логическое «и»				(X) AND (Y)

OR – логическое «или»				(X) OR (Y)

XOR – логическое исключающее «или»	(X) XOR (Y)

Операции сравнения:

> - больше;

< - меньше;

= - равно;

<> - неравно;

>= - больше или равно;

<= - меньше или рано.

Тип у всех операций логический, и по приоритету они выполняются самыми последними.



Операторы языка Паскаль



Оператор – предписание в данном языке программирования, предназначенное для задания некоторого завершенного действия, в процессе переработки информации на ЭВМ.



Оператор присваивания



Оператор присваивания  := присваивает переменной стоящей слева от знака равенства новое значение, задаваемое каким-либо выражением.

Например:	a:= 10 – переменной а присваивается значение 10.

а:= а+1 – к прежнему значению переменной прибавляется 1 и этой же переменной присваивается.



Операторы ввода и вывода



Оператор ввода состоит из идентификатора read и следующего за ним в круглых скобках списка переменных. Если переменных больше одной, то они разделяются запятыми.

Например:	read (а);

read (a, b);



Аналогичным образом используют оператор readln.

 Служебное слово readln указывает компьютеру, что после завершения ввода данных нужно переместить курсор на одну строку вниз.

Ввод данных осуществляется с клавиатуры. Числа при вводе разделяются пробелом или запятой.

Оператор вывода позволяет выделить из всего набора вычисленных величин те, что служат ответом к решавшейся программой задаче.

Для этой цели используется оператор write, после которого в скобках указывается список выводимых переменных или оператор writeln, который после вывода результата на экран, осуществляет переход на следующую строку.

Оператор writeln без параметров просто переведет курсор на следующую строку.

Например:	Write (x, y) – выведет значения переменных x, y.

Write (x+y, x-y) – выведет результат вычисления выражений x+y, x-y.

Write (‘Привет’) – выведет строку символов “привет”, текст заключается в апострофы.



Форматный вывод данных



Паскаль дает возможность установить необходимый формат для вывода числовой информации с помощью операторов write, writeln.

Например:	Writeln (x:7:2);

В данном примере указывается, что на экран должно быть выведено содержимое переменной x. Выводимое на экран число должно занимать 7 позиций с двумя знаками после запятой. Для вывода целой части отводится 4 позиции, т.к. одну позицию занимает десятичная точка.

Если для вывода числа 7 будет выделено 3 позиции, то на экран монитора будет выведено 7, а не 007.

Если при выводе значения некоторой переменной выводимое число не будет помещаться в указанный формат, то вопреки указанному формату часть значения переменной, расположенной перед десятичной точкой, будет выведена на экран полностью. При этом число позиций справа от десятичной точки остается равным указанной в формате величине, а дробная часть, не укладывающаяся в заданный формат, округляется. Округление не изменяет самого значения переменной, а касается только процесса вывода этого значения.

Использование форматного вывода позволяет решить проблему корректного оформления различного рода таблиц.



Линейный вычислительный процесс



Линейным процессом – называется такой процесс, где каждое действие выполняется последовательно, одно за другим. Любой линейный процесс состоит из следующих действий: ввода данных, вычисления по одной или нескольким формулам, печати результата. 

Пример: Вычислить среднее арифметическое и среднее геометрическое для двух действительных положительных чисел.















конец

SR, SG

Начало

SG=

a, b

		PROGRAM SREDNIE;

	

		Var

		a, b : real;

	

		SR : real;

	

	

SR=(a+b)/2	SG : real;



		BEGIN



		writeln (‘введите значения переменных’);



		readln (a, b);



		SR : = (a + b)/2;



		SG : = sqrt(a*b);

		writeln (‘среднее арифметическое равно’, SR:8:2);

		writeln (‘среднее геометрическое равно’, SG:8:2);

		END.

	

	Операторные скобки

	

	В Паскале под «операторными скобками» понимают два служебных слова: Begin (открывающаяся скобка) и End (закрывающаяся скобка).

	

	Составной оператор

	

	Составной оператор – это последовательность произвольных операторов программы заключенная в операторные скобки.

	На характер операторов, входящих в составной оператор, не накладывается никаких ограничений. Среди них могут быть и другие составные операторы языка, допускается произвольная глубина вложения составных операторов. Фактически весь раздел операторов представляет собой один составной оператор.

	BEGIN {начало раздела операторов}

		Begin

			Begin

			End

		End

	End. {конец программы}

Во избежание ошибок каждую пару “Begin – End” обычно пишут с одной позиции.





Разветвляющиеся вычислительные процессы



Разветвляющийся процесс –  это такой процесс, где после проверки некоторого логического условия, вычисление идет либо по ветви «да» либо по ветви «нет».

Пример: Вычислить 



		    f =		3sin2x + a, x>0

		3a2 + bx,    x<0   



		a = -2,25

		b = 4,8.

	

			

конец

начало

a, b, x

x>0

f= 3a2 + bx

f= 3sin2x +a

f

нет

да	





PROGRAM  RAZVETV;

Var

      a, b, x : real;

      f : real;

BEGIN

      a : = -2.25;

b : = 4.8;

write (‘введите значение переменной x’);

readln (x);

IF x>0  THEN  F : = 3*SQR (sin(x)) + A

ELSE

         F : = 3*A*A + B*X;

witeln (‘F =’,F:7:2);

END.





Условный оператор



Для реализации проверки условия необходим оператор, который выберет то или иное действие. Такой оператор называется оператором условного перехода и его можно записать следующими способами. 

Полная форма оператора.

         IF <условие> THEN <оператор “да”>

         ELSE <оператор “нет”>;

Каждое слово ELSE пишется под своим словом IF. Для большей наглядности текста программы операторы, следующие за словами THEN и ELSE можно писать на следующей строке.

Перед словом ELSE нельзя ставить точку с запятой.



Краткая форма оператора.

	Допускает опускать служебное слово ELSE . Оператор в этом случае выглядит следующим образом:

	IF <условие> THEN

	                              <оператор 1>;

	<оператор 2>;

	<оператор 3>;

	

В данном варианте, если условие истинно, то программа уходит на оператор 1, а затем продолжает выполнять последовательности операторов 2,3 и т.д.

Если условие ложно, сразу выполняется оператор 2, затем 3 и т.д.



Например: Вычислить значение функции

		x2, если x>0

	f(x) = 	0, если x=0

			-x2, если x<0	

		Фрагмент решения этой задачи можно записать как:

		IF    x>0    THEN

		                     y = x*x;

		IF    x = 0   THEN

		                     y = 0;

		IF    x<0    THEN

		                     y = -(x*x);

		При решении различных задач очень часто необходимо выполнять группу операторов либо за оператором THEN, либо за оператором ELSE, либо и в том и в другом случае.

		Для того, чтобы записать группу действий необходимо использовать составной оператор begin – end (операторные скобки).

		

		IF <условие>  THEN

      BEGIN

                   оператор 1;

                   оператор 2;

                    …………..

                   оператор n;

      END

ELSE

                    оператор;



IF <условие> THEN оператор

ELSE

           BEGIN

                    оператор 1;

                    оператор 2;

                    …………..

                    оператор n;

       END;



IF <условие>  THEN

                       BEGIN

                               оператор 1;

                               оператор 2;

                               …………...

                               оператор n;

                       END

        ELSE

                       BEGIN

                               оператор 1;

                               оператор 2;

                               ………….

                               оператор n;

                       END;



Между словами BEGIN и END стоят операторы отделенные между собой точкой с запятой.

Перед словом ELSE точки с запятой быть не должно, так как это один оператор

                        IF…THEN…ELSE.

Вложенные операторы IF



Рассмотрим пример:

Определить, попадает ли число x в интервал от 7 до 21.

В данном примере необходимо проверить два условия и дать положительный ответ в том случае, когда они оба будут выполнены. Это можно записать следующим образом:

IF  x>7  THEN

    IF  x<21  THEN

                  writeln (‘x попадает в интервал’)

    ELSE  writeln (‘x>=21’)

ELSE   writeln (‘x<=7’);



Вложенность операторов IF не ограничена.



Ветвление по многим направлениям



Для замены конструкций из вложенных операторов IF…THEN в Паскаль-программах часто используются операторы

                                          CASE…OF.

Данная конструкция является идеальной для обработки ситуаций с несколькими исходами, когда условие может принимать более двух значений. Примером может служить система учета успеваемости студентов в ВУЗе. Здесь имеется по крайней мере шесть альтернатив (1, 2, …, 5, нет отметки).

Фрагмент программы с использованием данной конструкции может выглядеть следующим образом:

CASE <порядковая переменная> OF

         1: BEGIN

                         оператор 1;

                         ………….

                         оператор n;

              END;

         2: BEGIN

                         оператор 1;

                         ………….

                         оператор n;

              END;

        …………………  

        n: BEGIN

                         оператор 1;

                         ………….

                         оператор n;

              END;

        ELSE

            BEGIN

                         оператор 1;

                         ………….

                         оператор n;

              END;



В тексте одного фрагмента программы перед ELSE стоит точка с запятой, т.к. конструкция CASE…OF подразумевает, что за ней стоит символ (;).

Значение <порядковой переменной>, которая при выполнении программы определяет ветвь в операторе CASE…OF, подлежащую выполнению, должна иметь некоторый тип. Она может принадлежать любому из целочисленных типов, каждый из которых позволяет организовать перечисления некоторых объектов. Действительные типы переменных не относятся к классу порядковых.

Наряду с возможностью отличать каждую отдельную ветвь определенным значением <порядковой переменной> в конструкции CASE…OF имеется возможность объединять ветви. При объединении ветвь помечается списком значений. Значения в списке могут перечисляться через запятую, либо, если они идут подряд, можно указать два крайних значения, разделив их двумя точками.

CASE <порядковая переменная> OF

         1, 2, 5:  оператор 1;

         3..17:    оператор 2;

END;

В конструкции CASE…OF может присутствовать ELSE-часть. Она, как и любая ветвь, содержит последовательность операторов, ограниченных парой BEGIN-END.





Циклический вычислительный процесс



Циклом называется такой процесс, когда одно или ряд действий выполняется несколько раз подряд.

В иных задачах количество повторений некоторого действия или группы действий известно. В этих случаях цикл называется арифметическим или циклом с параметром (счетчиком), или перечисляемым циклом.

В том случае, когда количество повторений указанных действий не известно, а зависит от некоторых условий, говорят о цикле с условием выхода или итерационном цикле.



Перечисляемые циклы (циклы со счетчиком)



Конструкция, позволяющая реализовать данный цикл, имеет вид:

FOR…TO (downto)…DO

В этом операторе обязательно указываются следующие параметры:

- имя переменной цикла или счетчика цикла;

- некоторое начальное значение для переменной цикла, которое она получает при первом выполнении цикла;

- некоторое конечное значение цикла, достигнув которое повторение цикла прекращается.

Если записать конструкцию цикла, как 



	FOR  i : = n  TO k DO

    оператор;



то счетчик изменяется на 1 при каждом следующем исполнении оператора.

Необходимо помнить, что для правильной записи конструкции оператора переменные i, n, k могут быть только как называемого “порядкового типа”. Это тип, в котором каждое данное имеет свой номер, свое расположение среди других данных этого типа.

Если требуется повторить группу действий, то оператор выглядит следующим образом:



FOR  i : = n TO k DO

      BEGIN

                 оператор 1;

                 оператор 2;

                 …………..

                 оператор n;

      END;





T=[T]

T=n/i

i=1;n

nПример: Вывести на экран все натуральные делители числа n.

начало





		PROGRAM    DELITEL;

	                                                  VAR

		n: integer;

		 i: integer;

		 t: real;

		BEGIN

		writeln (‘введите натуральное число n’);

	

нет	read (n)

		FOR i: =1 TO N DO

	

да	BEGIN



TT : = n/i;

                                        			IF T = INT (T) THEN writeln (T);

		END;

	

конец	END.

	

	

	Конструкция

	

	FOR i: =n DOWNTO k DO

	оператор;

	

	используются для того случая, когда счетчик уменьшается на 1 при каждом следующем шаге.

	

	Пример: Вывести на экран все четные числа от 100 до 1

	

конец

i

начало

i=100..1



		PROGRAM CHISLO;

	 	   VAR

		i: integer;



	

нет

1/2=[1/2]	BEGIN 

		FOR i:= 100 DOWNTO 1 DO

	

да	    IF I/2= INT (I/2) THEN writeln (i);

		END.













Если в данных конструкциях начальные значения совпадают с конечны значением, то операторы цикла выполняются один раз.



Конструкция цикла с предварительной проверкой условия



WHILE <условие> DO

оператор;

{или группа операторов в операторных скобках BEGIN-END}.



Эта фраза обозначает следующее: « До тех пор пока условие является истиной, выполняются операторы цикла».



При этом необходимо помнить, что:

если условие ложно, сразу же при первом обращении к циклу, то тело цикла выполняться не будет;

данная конструкция цикла может работать, как конструкция цикла со счетчиком, но при этом необходимо изменять переменную, являющуюся счетчиком, с помощью оператора присваивания. В конструкции WHILE можно выбирать любой необходимый шаг.

Пример.

Вычислить y= sin2x +2,5x при x [-1; 1]  с шагом ∆x= 0,25.



	

конец

X= x + 0,25

X= -1

начало

x,y

y= sin2x + 2,5x

X<= 1	PROGRAM ZIKL;

		VAR

		        x, y : real;

		BEGIN

		        x: = -1;

		        WHILE x<= 1 DO

	

нет	           BEGIN

		             Y: = sin(x)*sin(x)+ 2,5*x;

		              writeln (‘при x =’,x, ‘y= ‘,y);

	

да	                      x: = x + 0,25;

			                      END;	                   

		           END.























	Алгоритм вычисления суммы

	

	Пример 1:

	Вычислить 	.



конец

S

S= S+ 2x/n

n= 1..20

X

начало

		PROGRAM SUM;

		VAR

		        X, S : real;

		        n : integer;

		        sl : real; 

		BEGIN

		       Write (‘введите значение x’);

		        Read (x);

		        S : = 0;

		  FOR  N : = 1 TO 20 DO

		             BEGIN

		                 SL : = (2*x)/N;

		                  S : = S + SL;

		                     END;

		          writeln (‘сумма ряда =’, S);

		  END.





Пример 2. Найти количество чисел, сумма которых превысит 100.



S<=100

конец

K

S= s+ k

K=k+1

K=0

S=0

начало

		PROGRAM PRIM;

		VAR

		        K: integer;

		        S : integer;

		BEGIN

		        S: =0;

	

нет	        K: =0;

		            WHILE  S<=100 DO

	

да	                 BEGIN

		                      K: = K+1;

		                      S: = S+ K;

		              END;

		            writeln (‘кол-во слагаемых равно’, K);

		         END.







		

	

	Конструкция цикла с последующей проверкой условия

	

	Формат данного оператора следующий: 

	

	REPEAT

	   тело цикла

	UNTIL <условие>;

	

	Служебное слово REPEAT (повторять) открывает тело цикла, затем выполняются последовательно операторы тела цикла и проверяется условие выхода из него. 

	Переводится конструкция так: «Повторять до тех пор, пока условие не станет истиной».

	Необходимо помнить, что: 

	тело цикла выполняется хотя бы один раз в любом случае;

	в ходе выполнения цикла должны прийти к истинности условия.

	

	Пример: Вычислить сумму квадратов натуральных чисел до тех пор, пока квадрат очередного числа не превысит 100.

	

конец

S

n2>100

n = n + 1

S = s + n2

n =1

S = 0

начало	PROGRAM ZIKL_DO;

		VAR

                                                                      s: integer; 

                                                                      n: integer;

                                                              BEGIN

                                                                      s: =0;

                                                                      n: =1;

                                                               REPEAT

                                                                      s: = s + n*n; 

                                                                      n: = n + 1;

                                                               UNTIL  N*N>100;

                                                                writeln (‘s =’, s);



нет                                                              END.





да -





		+









Алгоритм вычисления произведения



Пример: Вычислить n!



конец

P

P = P*I

i = 1..n

P = 1

n

начало



		PROGRAM PROIZW;

	                                                                    VAR

	                                                                             n: integer;

	                                                                             p, i: integer;

	                                                                       BEGIN

	                                                                             writeln (‘введите значение n’);

	                                                                             readln (n);

	                                                                             p: = 1;

	                                                                          FOR i: = 1 TO N DO

	                                                                                 P: = P*I;

	                                                                             writeln (‘произведение =’,P);

	                                                                       END.













	Однако при n= 8, в данной программе Р = -25216, хотя в действительности Р = 40320. P необходимо присвоить формат longint.

	Связано это с неправильным описанием данных.

	Рассмотрим, какие целочисленные типы кроме integer возможны в Паскале и какое кол-во разрядов отводится под каждый тип:

	Shortint (короткое целое)

	8 бит (старший левый разряд знаковый)

	-128 ≤ а ≤ 127

	Integer (целое)

	16 бит (ст. разряд знаковый)

	-32768 ≤ а ≤ 3276

	Longint (длинное целое)

	32 бит (ст. разряд знаковый)

	-2147483648 ≤ а ≤ 2147483647

	Byte (байт)

	8 бит (без знака)

	0 ≤ а ≤ 255

	Word

	16 бит

	0 ≤ а ≤ 65535

	

	Вещественное число в ПЭВМ представлено в экспоненциальной форме

	N = m*E ± p,

	где m – мантисса числа (диапазон от 1 до 9).

	В следующей таблице приведены возможные вещественные типы языка Паскаль и диапазон изменения.

	Длина байт

	Название типа

	Кол-во значащих цифр

	Диапазон десятичного порядка

	4

	Single

	7..8

	-45..+38

	6

	Real

	11..12

	-39..+38

	8

	Double

	15..16

	-324..+308

	10

	Extended

	19..20

	-4951..+4932

	8

	comp

	19..20

	-2-63 +1..2+63 -1

	

	

	Структурированные типы

	

	Структура – строение, расположение, порядок, совокупность устойчивых связей объекта, обеспечивающих его целостность и тождественность самому себе, т.е. сохранение основных свойств при различных внешних и внутренних изменениях.

	Переменные структурного типа состоят не из одного элемента, а из нескольких. К ним относятся массивы, записи, множества и файлы.

	

	Массивы

	

	Массив – область машинной памяти, в которой могут размещаться совокупности значений одного и того же типа, а также, набор переменных, объединенных общим назначением и имеющих одно имя.

	В информатике различают массивы одномерные и двумерные. К одномерным массивам относятся числовые и символьные последовательности. К двумерным – матрицы (либо их ещё называют таблицами).

	Элемент массива – отдельная переменная, входящая в массив.

	Размерность массива – кол-во элементов, которое содержит массив.

	Индекс – числовой или буквенный указатель, указывающий порядковый номер данного элемента в массиве.

	При назначении имени массиву соблюдаются те же требования, какие предъявляются к именам переменных простых типов.

	Пример: Дан массив А, состоящий из n элементов.

	А[1]  A[2]  A[3]  A[4]  …  A[n]

	2          7,5    14      8    …     -2

	

	A[i] – элемент массива А, стоящий на i-ом месте.

	

	Каждая переменная в Паскале должна быть объявлена, в том числе и переменная указывающая индекс. В качестве индексных типов можно использовать любые порядковые типы, кроме longint.

	Описывать тип «массив» нужно с помощью служебного слова TYPE.

	Рассмотрим описание типа «массив» на примере целочисленного массива А, состоящего из 25 элементов. Прежде чем приступить к описанию типа, назначим имена – имя типа «массив» и имя переменной, которая относится к типу «массив». Пусть mas – имя типа, а – имя переменной типа «массив». В описании типа указывается, что объявляется тип «массив», для этого используется служебное слово array, и указываются границы изменения индексов. Синтаксически это записывается следующим образом 1..25; такая запись называется диапазон.

	В программе на языке Паскаль это выглядит следующим образом:

	TYPE mas = array [1..25] of integer;

	VAR

	        а: mas;

	где первая строка расшифровывается как «объявляется тип пользователя – массив, все элементы массива являются целыми числами», а последняя как «объявляется переменная, относящаяся к типу массив».

	Необходимо помнить, что значением переменной а является весь массив.

	Массив может быть объявлен как константа. В качестве начального значения типизированной константы-массива используется список констант, отделенных друг от друга запятыми; список заключается в круглые скобки. 

	Например:

	Const

	Mas: array [1..8] of byte = (28, 30, 25, 26, 15, 31, 30, 29);

	

	Чаще всего массив объявляют следующим образом:

	VAR <имя массива>: array [1..8] of <тип данных>;

	Например:	VAR a: array [1..8] of real;

	Ввод элементов одномерного массива

	

	Заполнить элементы одномерного массива значениями можно: 

	- вводя значения с клавиатуры;

	- случайным образом;

	- по формуле.

	Необходимо помнить, что во всех трех случаях нельзя обойтись без организации цикла.

	Пример: Ввести массив, состоящий из десяти элементов (тип значения не имеет).

	1 способ: ввод с клавиатуры.

	           FOR I: = 1 TO 10 DO

	                  BEGIN

	                        writeln (‘введите значение ‘I’ элемента массива’);

	                        read (a [i]);

	                  END;

	

	2 способ: задание массива случайным образом.

	                Для этого подключается датчик случайных чисел.

	FOR I: = 1 TO 10 DO

	          a [i] : = random (n); - значение n задается заранее.

	В данном случае для наглядности пользователю рекомендуется распечатать заданный массив. 

	

	3 способ: заполнение по формуле. Используется, когда каждый элемент массива должен рассчитываться по заранее заданной формуле.

	Например:	ai = sin i + 1

	

	       FOR I : = 1 TO 10 DO

	        a [I] : = sin (I) + 1;