Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Egorova1

.pdf
Скачиваний:
36
Добавлен:
14.02.2015
Размер:
1.67 Mб
Скачать

Y (x)= arctg x =

 

1

 

1

+

1

 

 

 

 

1

+

1

K

 

x

3x3

5x5

7x7

9x9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

N28

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Y (x)=

1

+

 

 

1

 

 

+

 

 

1

 

+ K; x >1

 

 

 

 

3x3

 

 

5x5

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

N29

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Y (x)= x

 

x2

 

+

 

x3

 

− K;

 

 

 

x

 

 

<1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

N30

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Y (x)= x +

x2

+

x3

 

+ K;

 

x

 

<1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.6.2.2 Циклический вычислительный процесс. Неформализованные задачи

ЗАДАНИЕ. Написать циклическую программу для решения следующей задачи.

N 1.

Один молочник заполнил молоком N-литровый бидон и отправился к своим клиентам, живущим на K улицах. На каждой улице он продавал одинаковое количество литров молока L. Обслужив первую улицу, он шёл к колонке с водой и доливал бидон до краёв. Затем он обслуживал вторую улицу и снова шёл к колонке с водой. Так он действовал и дальше для всех клиентов.

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

N2.

Впроцессе лечебного голодания вес пациента за 30 дней снизился с 96 до 70 кг. Было установлено, что ежедневные потери веса пропорциональны весу тела. Вычислить, чему был равен вес пациента через k дней после начала голодания для k=1,2,3,...,29.

N3.

Дано натуральное число n. Получить все способы выплаты суммы n с помощью монет достоинством 1, 3 и 5 копеек.

N 4.

Натуральное число из n цифр является числом Армстронга, если сумма его цифр, возведённых в n-ую степень, равна самому числу. Например: 153=13 +53 +33 .

Получить все числа Армстронга, состоящие из трёх цифр.

N 5.

Дано натуральное число n. Указать все тройки x,y,z таких натуральных чисел, что n= x2 + y 2 + z 2 .

N 6.

Пусть xn и yn - количество волков и лис в n-ом году. Установлено, что в результате их взаимного влияния их численность в следующем году определяется системой:

71

xn+1 = 2 xn _ yn .

уn+1 = xn + 2yn

Пусть x=a, y=b. Найти численность обоих видов за все годы, предшествующие полному вымиранию одного из них.

N 7.

Для любого целого k обозначим количество цифр в его десятичной записи Ц(k). Например: Ц(1)=1, Ц(9)=1, Ц(10)=2. Дано натуральное число n, действительное число x.

Вычислить:

 

10Ц(1)

(1x)+

10Ц(2)

 

(1x)2

+L+

10Ц(n )

(1x)n

 

 

 

1

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

N 8.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Для любого целого k

обозначим количество цифр в его десятичной записи Ц(k).

Например: Ц(1)=1, Ц(9)=1,

Ц(10)=2. Дано натуральное число n. Вычислить:

 

 

Ц(1)

+

Ц(22)

+L+ Ц(2n).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

2

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

N 9.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Функция

 

f(x)= 2.32 x

x4

 

+

x3

x

2

имеет

единственный

максимум

на

интервале

 

 

4

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[0;1.5].

Написать алгоритм

вычисления

точки

максимума с

точностью

h.

Требуется

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

h,

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

 

N 10.

 

 

 

 

 

 

 

 

Функция f(x)= 2.32 x

x4

+

x3

x

2

1.2

имеет единственный максимум на интервале

4

3

 

 

 

 

 

 

 

 

[0;1.5]. Известно, что f(0)<0, f(1.5)<0. Написать алгоритм, определяющий с точностью

h

интервал (a,b), вложенный в интервал [0;1.5], на котором функция положительна.

 

Требуется вычислять последовательно

значения заданной функции от начала

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

N 11.

Функция f(x)= x2 +sin 2 x монотонно возрастает на интервале [2;4]. Найти значение x с точностью h, для которого выполняется условие: f(x)=6.

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

N 12.

Вычислить:

 

 

 

 

1

 

 

 

 

 

 

 

 

1

 

 

 

 

 

1+

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

3 +

 

 

 

 

 

 

 

 

+

1

 

 

 

 

 

5

 

 

 

 

 

 

O

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

101+

 

1

 

 

 

 

 

 

 

 

103

 

 

 

 

 

 

 

 

 

 

 

 

 

N 13.

Вычислить для заданного значения n: 3 + 6 +L+ 3 (n 1)+ 3 n

72

N 14.

Найти число помощников деда из известной сказки про репку, если:

-для вытягивания репки надо развить усилие в N кг;

-дед тянет с усилием D кг;

-каждый очередной i-ый помощник тянет с усилием S/i/(i+1),

где S - общее усилие всех предыдущих участников вытягивания репки.

N 15.

Написать программу, проверяющую, является ли данное целое число Z совершенным, и выводящую сообщение "ДА" или "НЕТ". Совершенным называется число, равное сумме всех своих делителей; например: 6=1+2+3.

N 16.

Написать программу, вычисляющую сумму всех целых чисел, меньших 1000, которые делятся на 3, или на 7, или на оба эти числа вместе.

N 17.

Написать программу, проверяющую, является ли данное число Z простым, и выводящую сообщение "ДА" или "НЕТ".

N 18.

Возьмём некоторое натуральное число n. Если это число чётно, то разделим его на 2, иначе умножим на 3 и прибавим 1. Если полученное число не равно 1, то будем повторять те же самые действия, пока не получим 1. Пока не известно, завершается ли этот процесс для любого n. Написать программу, проверяющую для данного n, завершается ли данный процесс не позднее, чем после m таких действий.

N 19.

Написать программу, выводящую все делители заданного натурального числа Z.

N 20.

Написать программу, выводящую наименьший делитель заданного натурального числа Z.

N 21.

Написать программу, выводящую все целочисленные решения уравнения

a*x + b*y = c, удовлетворяющие условиям |x|<=10, |y|<=20. Здесь a,b,c - заданные числа.

N 22.

Написать программу приближённого вычисления числа πпо формуле

 

 

1

 

1

 

1

 

1

 

n

 

 

1

 

 

π 4 1

 

+

 

 

+

 

−L+ (1)

 

 

 

 

 

для заданного значения n.

3

5

7

9

 

2

n 1

 

 

 

 

 

 

 

 

 

N 23.

Написать программу приближённого вычисления числа πпо формуле

 

8

 

24

 

48

 

 

(2n +1)2 1

 

 

π 4

 

 

 

 

 

L

 

 

 

 

для заданного значения n.

 

 

 

(2n +1)2

 

9

 

25

 

49

 

 

 

 

 

 

 

N 24.

 

 

 

 

 

73

Вкладчик внёс в сберкассу x рублей. Написать программу, вычисляющую, сколько денег у вкладчика будет через n лет. Количество денег каждый год увеличивается на Z% по отношению к предыдущему году.

N25.

Вначальный момент времени имеется S кг дрожжей. Через каждый час количество дрожжей увеличивается на 15%, но на исходе часа M кг дрожжей удаляется. Написать программу, вычисляющую количество дрожжей через N часов.

N26.

Написать программу, реализующую следующий алгоритм вычисления функции e для заданного x. Число x делить пополам до тех пор, пока не получится число Z, меньшее

0.01. Подсчитать число выполненных делений n. Вычислить: Y= (z +1)2 +1 2

Число Y возвести в квадрат n раз. Полученное число n будет приближённо равно ex .

N 27.

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

1 x 10, 1 y 5.

N 28.

Написать программу вычисления остатка от деления числа n на число m (n,m - целые). Функции div , mod , trunc и round не использовать. Словами алгоритм формулируется следующим образом: из числа n вычитать число m, пока не получится число, меньшее m.

N 29.

Написать алгоритм вычисления n-ого члена последовательности Фиббоначи. Последовательность Фиббоначи определяется следующим образом:

F0 =1, F1 =1, Fn = Fn1 + Fn2 дляn 2 . При решении задачи массивы не использовать.

3.7КОНТРОЛЬНЫЕ ВОПРОСЫ И ЗАДАНИЯ ПО МОДУЛЮ 3

3.7.1Что такое цикл ?

3.7.2Сколько операторов повторения вы знаете ? Перечислите их.

3.7.3Оператор цикла While - общий вид, реализуемый алгоритм, примеры.

3.7.4Почему оператор While называется оператором цикла с предусловием?

3.7.5Оператор цикла Repeat - общий вид, реализуемый алгоритм, примеры.

3.7.6Почему оператор Repeat называется оператором цикла с постусловием?

3.7.7Чем оператор While отличается от оператора Repeat ?

3.7.8Оператор цикла For - общий вид, реализуемый алгоритм, примеры.

3.7.9Докажите, что оператор While является универсальным циклическим оператором.

3.7.10Оператор безусловного перехода Goto - общий вид, выполнение, примеры, особенности использования.

3.7.11Что такое метка оператора? Для каких целей и где используются метки ?

3.7.12Можно ли входить в цикл не через его начало? Почему ?

3.7.13Можно ли выйти из середины цикла ?

3.7.14Какие стандартные процедуры управления циклическими операторами Вы знаете ?

74

4 ТИПЫ ДАННЫХ В ЯЗЫКЕ ПАСКАЛЬ. СКАЛЯРНЫЕ ТИПЫ. МАССИВЫ.

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

В Паскале существуют следующие типы данных .

Типы данных

 

 

 

Простые

 

 

 

Сложные

 

 

 

(скалярные)

 

 

 

(структурированные,

 

 

 

 

 

 

 

 

комбинации простых типов)

 

 

 

 

 

 

 

 

 

Стандартные

 

 

Переменные(объявляемые

 

 

 

 

 

 

программистом)

 

массивы

целый тип

 

 

 

 

 

 

(integer)

 

 

перечисляемый тип

 

множества

действительный тип

 

 

 

 

 

 

(real)

 

 

 

 

 

записи

логический тип

 

 

ограниченный тип

 

 

(boolean)

 

 

(интервальный)

 

файлы

символьный тип

 

 

 

 

 

 

 

 

 

 

 

(char)

Стандартные типы данных уже были рассмотрены выше (см.п.1.2.6). Далее мы рассмотрим переменные типы данных (типы, определяемые программистом) и сложные типы данных.

4.1ТИПЫ ДАННЫХ, ОПРЕДЕЛЯЕМЫЕ ПРОГРАММИСТОМ

4.1.1Перечисляемый тип

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

Общий вид описания в разделе VAR переменных перечисляемого типа :

Имя переменной

:

(

Идентификатор

)

;

,

 

 

,

 

 

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

Пример 1. Рассмотрим определение двух перечисляемых переменных day и color: var day:(mon,tue,wen,thu,fri,sat,sun);

color:(red,green,blue);

Переменная day может принимать одно из следующих 7 значений (дни недели): mon, tue, wen, thu, fri, sat, sun, а переменная color - одно из 3 значений (цвета): red, green, blue. В

программе для этих переменных можно использовать следующие, например, операторы присваивания:

day:=sun; color:=red.

Недопустимо, чтобы один и тот же идентификатор принадлежал двум разным типам.

75

Пример 2. Допустимое описание двух перечисляемых переменных color1, color2 в одной программе:

var color1:(red,black); color2:(green,blue);

Пример 3. Недопустимое описание двух перечисляемых переменных color1, color2 в одной программе:

var color1:(red,black); color2:(red,green,blue);

При объявлении перечисляемого типа совокупность идентификаторов автоматически нумеруется, начиная с 0, то есть, например, для переменной day из примера 1 имеем:

mon=0, tue=1, wen=2, thu=3, fri=4, sat=5, sun=6.

В соответствии с этим имеем следующую упорядоченность перечисляемых констант: mon < tue < wen < thu < fri < sat < sun.

Такая упорядоченность констант позволяет применять к ним операции отношения "<", ">", "=", "<>", "<=", ">=".

Пример 4. Пусть имеем в программе описание перечисляемых переменных c1, c2 и два оператора присваивания вида:

var c1,c2:(red,blue,green); c1:=blue;

c2:=green;

Тогда сравнение "c1 < c2" даст результат true.

Замечание 1. Существует взаимно однозначное соответствие между идентификаторами, задающими перечисляемый тип, и последовательностью целых положительных чисел, начинающейся с 0. Поэтому, например, вместо перечисленного типа day:

var day:(mon,tue,wen);

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

Замечание 2. Переменные перечисляемого типа нельзя указывать в списке вводавывода, то есть в операторах типа read и write.

4.1.2 Ограниченный (интервальный) тип

Иногда данный тип называется "диапазон".

Отрезок любого скалярного типа (кроме REAL) можно определить как ограниченный тип. Скалярный тип, на котором строится отрезок, называется базовым типом.

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

Общий вид описания в разделе VAR переменной ограниченного типа (в виде БНФ): < имя переменной > : < нижняя граница > .. < верхняя граница >

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

var nd:1..7; nm:1..12;

{1}

sum:'A'..'Z';

{2}

day:(mon,tue,wen,thu,fri,sat,sun); {3}

workday:mon..fri;

{4}

weekday:sat..sun;

{5}

1-ая строка - заданы диапазоны для переменных nd, nm целого типа. Переменная nd (номер недели) может принимать значения 1,2,3,4,5,6,7, а переменная nm (номер месяца) - 1,2,..,12.

2-ая строка - задан диапазон для символьной переменной sum. Она может принимать символьные значения от 'A' до 'Z'.

76

3-ья строка - задана переменная перечисляемого типа day (может принимать 7 значений). 4-ая строка - в типе "day" выделен диапазон workday (рабочие дни); переменная workday

может принимать 5 значений (от mon до fri).

5-ая строка - в типе "day" выделен диапазон weekday (выходные дни); переменная weekday может принимать 2 значения: sat и sun.

Замечание. Если базовый тип - перечисляемый, то соответствующие переменные ограниченного типа должны быть описаны только после объявления перечисленного типа (то есть для примера 1 строка 3 обязательно предшествует строкам 4 и 5).

Пример 2. Ниже дано описание переменной C ограниченного типа. Переменная может принимать целые значения от 1 до 80. Следует обратить внимание на то, что при описании ограниченной переменной границы отрезка должны быть обязательно константами.

const L=80; var C:1..L;

Использование диапазонов имеет несколько преимуществ:

1)повышается наглядность программы;

2)более экономно распределяется память под переменные;

3)вводится дополнительный контроль значений, присваиваемых переменным во время выполнения программы (при выходе из интервала выдается сообщение об ошибке).

4.1.3 Порядковые типы данных. Стандартные функции ord, succ, pred

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

1.Каждый элемент определенного порядкового типа имеет свой собственный порядковый номер. Для значений типа INTEGER (или его интервала) порядковый номер является самим значением. Для значений типа CHAR (или его интервала) порядковый номер является ASCII-кодом соответствующего символа. Для любого другого упорядоченного типа, содержащего n элементов, каждый элемент имеет порядковый номер между 0 и (n-1), то есть нумерация начинается с нуля.

2.За исключением минимального и максимального элементов, каждый элемент определенного порядкового типа имеет предыдущий (предшественник) и последующий (преемник) элементы. Например, у целой величены "4" предшественник - это "3", преемник - это "5".

Для удобной работы с данными порядкового типа в Паскале имеются стандартные функции ORD , SUCC , PRED.

 

Название

 

 

Описание функции

Тип

Тип

Пример

 

функции

 

 

 

 

 

 

аргумента

результата

 

 

ORD(C)

 

 

Результатом является

Любой

INTEGER

var day:(mon,tue,wen);

 

 

 

 

номер аргумента "C"

скалярный

 

day:=wen;

 

 

 

 

в

упорядоченной

тип, кроме

 

Тогда ORD(day) есть "2"

 

 

 

 

последовательности

REAL

 

 

 

 

 

 

(нумерация

начина-

 

 

 

 

 

 

 

ется с 0)

 

 

 

 

 

 

SUCC(C i

)

 

Последующее за C i

Любой

Соответ-

1) перечисляемый тип

 

 

 

 

значение

в упорядо-

скалярный

ствует типу

succ(tue) есть wen|

 

 

 

 

ченной

последова-

тип , кроме

аргумента

pred(tue) есть mon

 

 

 

 

тельности,

т.е.

REAL

 

2) boolean тип (false<true)

 

 

 

 

succ(C i )=C i+1

 

 

 

succ(false) есть true

 

 

 

 

 

 

 

pred(true) есть false

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PRED(C i

)

 

Предыдущее

значе-

Любой

Соответ-

3) integer тип

 

 

 

 

ние в упорядоченной

скалярный

ствует типу

succ(2) есть 3

 

 

 

 

последовательности,т

тип , кроме

аргумента

pred(-4) есть -5

77

 

.е pred(C i )=C i1

REAL

 

4) char тип

 

 

 

 

succ('A') есть 'B'

 

 

 

 

pred('4') есть '3'

Замечание. Функция SUCC для последнего элемента последовательности и функция PRED для первого элемента не определены.

Пример 1. Предположим, при следующем описании перечисляемых переменных d1, d2 var d1,d2:(mon,tue,wen,the,fri,sat,sun);

в программе необходимо иметь: d1 - текущий день недели; d2 - следующий день за d1. Для значения sun (воскресенье) функция succ не определена, хотя в повседневной

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

if d1=sun then d2:=mon else d2:=succ(d1);

Пример 2. Напечатать коды английских букв от A до Z. program cool(i,o);

var b:char; begin

for b:='A' to 'Z' do

writeln('Буква ',b,' код ',ord(b)) end.

4.2ОПИСАНИЕ ТИПОВ

ВПаскале существует два способа описания типов:

1)сокращенный;

2)полный.

До этого мы использовали 1-ый способ, когда тип переменной определялся при описании переменной в разделе VAR.

Пример 1. Сокращенный способ определения переменной color перечисляемого типа: var color:(red,green,blue);

При использовании второго способа в разделе описания типов TYPE отдельно описывается тип данных и определяется его имя.

Пример 2. Полный способ определения перечисляемого типа col: col=(red,green,blue);

Теперь col - это такой же идентификатор типа, как, например, integer или real. Тогда в разделе описания переменных var можно описать переменную color типа col:

var color:col;

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

Пример 3. Рассмотрим следующие описания: type day=(mon,tue,wen,the,fri,sat,sun);

workday=mon..fri; weekday=sat..sun;

var d,d1 :day; wday:workday; week:weekday;

Здесь day, workday, weekday - это названия типов, d, d1, wday, week - это имена переменных.

4.3 МАССИВЫ

78

В Паскале рассматриваются данные двух основных типов: простые и сложные (структурированные). Данное простого типа в конкретный момент представляет одно неделимое значение. Данное сложного типа - это обычно некоторое множество (совокупность) значений. В Паскале 4 сложных типа, которые рассматриваются ниже: массивы (изучаются в данном модуле) , записи, множества, файлы.

4.3.1 Основные понятия: массив, элемент массива, размерность массива

Массив - это упорядоченная совокупность элементов (компонент) одной природы (одного типа). Тип элементов называется базовым типом массива. Каждый элемент массива имеет индекс, и элементы упорядочены по значениям индексов.

Пример 1. В течении месяца ежедневно измерялась среднедневная температура. В этом случае можно говорить о массиве температур. Массив состоит (для октября, например) из 31 элемента:

T=(18 ° С, 24 ° С, ... , -10 ° С). Здесь T - это имя всего массива; 18, 24,...-10 - элементы массива. В общем виде этот массив можно записать следующим образом:

T=( t1 ,t2 ,K,t31 ). Здесь 1, 2,...31 - это индексы элементов массива.

Ко всему массиву можно обращаться целиком по его имени: "массив T". Можно обращаться к отдельным элементам массива, для этого указывается имя массива и индекс элемента, например: "элемент t1 ".

Количество индексов у одного элемента массива определяет размерность массива. Число элементов массива не следует путать с числом измерений массива (с размерностью). Обычно первое значительно больше второго. Так, в рассмотренном выше примере массив T - одномерный, а число элементов в массиве равно 31.

Пример 2. Предположим, требуется написать программу для решения следующей системы уравнений:

a

 

x

+ a

 

x

2

+K+ a

 

x

n

= b

 

11

1

12

 

1n

 

1

a21 x1 + a22 x2 +K+ a2n xn = b2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

M

 

 

M

 

 

 

M

 

 

 

 

M

a

n1

x

+ a

n2

x

2

+K+ a

nn

x

n

= b

n

 

1

 

 

 

 

 

 

 

При решении этой задачи мы будем использовать 3 массива:

X=( x1 , x2 ,K, xn )

- массив неизвестных;

B=( b1 ,b2 ,K,bn )

- массив свободных членов;

a

a

Ka

 

 

11

12

1n

 

 

a21

a22

Ka2n

- массив коэффициентов при неизвестных.

A=

 

 

 

M

M

M

 

 

 

an2

 

 

 

an1

Kann

 

Здесь X, B - это векторы, то есть одномерные массивы (каждый элемент имеет один индекс), A - это матрица, то есть двумерный массив (каждый элемент имеет два индекса: первый означает номер строки, в которой стоит элемент, второй - номер столбца).

4.3.2 Объявление массива в Паскале

Общий вид описания массива (в разделе var): var a:array[type1,type2,...,typel] of typec;

где а - имя переменной-массива;

array, of - ключевые слова ("array" - массив, "of" - из);

typec - базовый тип (тип элементов), любой допустимый в Паскале тип; type1,... typel - тип индексов (должен быть хотя бы один).

79

Тип индексов задает:

1)тип значений, которые используются для обращения к элементам массива;

2)число элементов массива (оно задается при описании массива и в дальнейшем в программе не меняется).

Тип индексов может быть любым простым типом, кроме REAL и LONGINT, так как массив должен иметь ограниченное число элементов. Чаще всего тип индексов определен как интервал от INTEGER в виде:

<константа 1>..<константа 2>

Пример 1. Опишем массив температур T для примера 1 из п.4.3.1. Краткое описание в разделе var:

var t:array[1..31] of real;

Полное описание в разделе type: type tt=array[1..31] of real; var t:tt;

Пример 2. Опишем массивы X, B и A из примера 2 из п.4.3.1: var x,B:array[1..20] of real;

A:array[1..20,1..20] of real;

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

Пример 3. Установить в программе значение температуры за 20-й день месяца, равное

20,5 ° С: t[2]:=20.5

Пример 4. Пример использования выражений в качестве индексов: A[i,j]:=A[i-1,j-1]+0.5

Работа с двумерным массивом (матрицей) обычно организуется построчно, и первый индекс i элемента A[i,j] означает номер строки, в которой стоит этот элемент, а второй индекс j означает номер столбца.

Пример 5. Предположим, имеем описание двумерного массива: var sc:array[1..15,1..15] of char;

Можно интерпретировать двухмерный массив как вектор и объявить его так: type line=array[1..15] of char;

var sc:array[1..15] of line;

Пример 5. Если два массива имеют одинаковый размер и тип, то можно присвоить один массив другому.

var x,y:array[1..10] of real;

...

y:=x;

...

Массив y стал равен массиву x. Значения элементов массива x должны быть к моменту присваивания "y:=x" определены, то есть элементы должны быть или введены, или им должны быть присвоены значения с помощью оператора присваивания.

4.3.3 Типовые задачи по обработке одномерных массивов

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

80

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]