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

Основной текст

.pdf
Скачиваний:
10
Добавлен:
28.03.2015
Размер:
2.42 Mб
Скачать

В обоих случаях значение элементов массива D не изменяется, а значения элементов массива А становятся равными значениям соответствующих элементов массива D. Оба массива должны быть идентичны по структуре.

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

тип массива. Например, требуется поменять значения 1 и 5 элемен-

тов массива A (Vs - вспомогательная переменная):

 

У

Vs:= A[5J; А[5]:= A[l]; A[l]:= Vs.

 

Т

Н

 

 

 

7.5.4. Программирование алгоритмов

 

 

Б

 

 

с использованием массивов

 

 

 

Рассмотрим примеры программ с использованием массивов.

й

 

 

 

Пример I. Ввести двумерный массив М размерностью 10x10,

Program masl;

 

 

 

 

и

const N=10;

 

 

 

 

р

 

 

 

 

 

 

 

varM: array[l..N,l..N] of integer;

I,J,Sm: integer;

 

 

о

 

 

т

 

 

 

 

 

 

 

 

 

begin for I.-l to N do

 

 

 

for J:=l

to N do read(M[I,J]);

 

Sm:=0;

 

 

и

 

 

 

 

з

 

 

 

 

for I:=l

 

 

 

 

 

toNdo

 

 

 

 

 

for J:=l toоN do

 

 

 

 

 

if odd(M[I,J]) then

 

 

 

 

 

п

 

 

 

 

 

 

else Sm:=Sm+M[I,J];

 

 

 

writeе('сумма четных чисел =', Sm:4)

end.

 

 

 

 

 

 

 

 

Р

 

 

 

 

 

 

 

 

содержащий целые числа, и вывест на печать сумму четных элементов этого массива.

Пример 2. Дан массив N размерностью 10x20. Нужно вывести на печать наибольшее из всех значений элементов этого массива, а также номера строки и столбца, на пересечении которых находится данный элемент.

80

Program mas2;

 

 

 

 

 

 

 

 

varN: array[1..10,1..20] ofreal;

 

 

 

 

 

maxn: real;

 

 

 

 

 

 

 

 

I,j.fm,Jm: integer;

 

 

 

 

 

 

 

begin for I:=l to 10 do

 

 

 

 

 

 

for J:=l to 20 do read(N[I,J]);

 

 

 

 

 

maxn:=N[ 1,1]; Im:=l; Jm:=l;

 

 

 

 

У

for I:=l to 10 do

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

for J:=l to 20 do

 

 

 

 

 

 

Т

if N[l,J]>maxn then

 

 

 

 

 

begin

 

 

 

 

 

 

inaxn.-N[I,J];

 

 

 

 

 

 

Im:=I; Jm:=J

 

 

 

 

Б

end;

 

 

 

 

 

Н

 

write(' maxn-,maxn:5:l,' Im=',lm,' Jm~,Jm)

 

end.

 

 

 

й

 

 

 

 

 

 

 

и

 

 

 

 

 

 

7.6. Подпрограммы

 

 

 

Подпрограммой называется именованная логически законченная

группа операторов языка,

 

ю можно вызвать для выполнения

по имени любое количество раз

из различных мест программы. В

языке PASCAL для организации подпрограмм используются проце-

дуры и функции.

 

 

котору

 

 

 

 

 

 

т

 

 

 

 

 

 

 

 

 

 

 

 

 

и

 

 

 

 

 

 

 

7.6.1. Процедуры и функции

 

 

з

 

 

 

 

 

 

 

Процедура - это независимая поименованная часть программы,

о

 

 

 

 

 

 

 

 

предназначенная для выполнения определенных действий. Она со-

стоит изпзаголовка и тела. После однократного описания процедуру

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

Функция аналогична процедуре, по имеет 2 отличия:

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

2) ее имя может входить в выражение как операнд.

81

Все процедуры и функции языка PASCAL подразделяются на

2группы:

1)встроенные;

2)определенные пользователем.

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

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

Процедуры и функции пользователя организуются самимУпро-

PASCAL предоставляет программисту широкий набор встроен-

ных процедур и функций, которые реализуют наиболее часто встре-

чающиеся при написании программ действия. В соответствииТ

с об-

 

 

 

 

 

 

 

 

 

Б

 

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

процедур и функций:

 

 

 

Н

 

 

1) арифметические;

 

 

й

 

 

 

 

 

 

 

2) скалярные;

 

 

и

 

 

3) преобразования типов;

 

 

 

 

р

 

 

 

4) специальные;

 

 

 

 

 

 

 

 

 

 

 

5) обработки строк;

 

 

 

 

 

6) обработки файлов;

 

 

 

 

 

7) графики.

 

практик

 

 

 

 

Арифметические процедурыои функции реализуют наиболее час-

то встречающиеся в

 

е математические действия и операции,

включая генерацию случайных чисел.

 

 

 

 

о

 

 

 

 

 

 

Скалярные функцииобрабатывают данные скалярного типа,

кроме вещественного.з

 

 

 

 

 

Функци

 

преобразования типов используются для преобразова-

ния

значени

й

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

Р

 

 

 

 

 

 

 

 

 

ного типа.п

 

 

 

 

 

 

Процедуры,

определенные

пользователем.

 

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

82

Procedure Sort ( A:integer; B:real); procedure summa;
формат:
procedure <имя> {( формальные параметры )};
Пример:

Имя процедуры - идентификатор, уникальный в пределахУпро-

Procedure <имя> {(формальные параметры )};

 

Т

<раздел описаний>

 

 

 

 

 

Б

 

 

 

 

 

 

 

Н

begin

 

 

 

 

 

 

 

 

 

 

<раздел операторов>

 

 

 

 

 

 

 

end;

 

 

 

 

 

 

 

и

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

процедур

 

 

 

 

Для обращения к процедуре используетсяйоператор вызова про-

цедуры. Он состоит из имени

 

 

ы и списка фактических па-

раметров,

 

 

 

 

о

 

 

 

и заключенных в

отделенных друг

т друга запятыми

 

 

 

 

 

т

 

 

 

 

 

 

круглые скобки. Список параметров может отсутствовать, если

 

 

 

и

 

 

 

 

 

 

 

процедуре не передается никаких значений.

 

 

 

Формат:

з

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<имя

процедуры

> {( параметр,...)};

 

 

 

 

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

Пример:п

ПараметрыSort (al,bl); summa;

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

Если процедура возвращает в программу какие-то значения, соответствующие переменные должны быть описаны как параметры переменной с использованием слова Var (см. ниже).

83

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

Функции, определенные пользователем.

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

Формат:

Function <имя> {(формальные параметры)}: <тип результата^

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

Пример:

 

У

Function prov (X,Y: integer): real;

 

function Zx: boolean;

 

Т

 

Имя функции - уникальный в пределах блока идентификатор.

 

Н

 

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

Function <имя> {(формальные параметры)}: <тип результата^

<раздел описаний>

 

 

 

й

 

 

и

begin

 

 

 

 

 

<раздел операторов>

 

р

 

end;

 

 

 

 

 

 

 

 

 

 

о

 

 

 

 

 

 

 

 

 

В разделе операторов должен находиться по крайней мере один

 

 

 

 

т

 

 

 

оператор, присваивающий идентификатору функции значение. Если

 

 

 

и

 

 

 

 

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

будет значениезпоследнего оператора присваивания.

Обращение к функции осуществляется по имени с обязательным

 

 

о

 

 

 

 

 

 

указанием списка аргументов. Каждый аргумент должен соответст-

вовать

пформальным

параметрам, указанным в заголовке, и иметь

тот ж

тип.

 

 

 

 

 

 

е

 

 

 

 

 

 

 

Р

 

 

 

 

7.6.2. Параметры

 

 

 

 

 

 

 

 

Параметры

ный. PASCAL метров;

1)по значениям;

2)по ссылкам.

84

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

дур и функций:

У

Procedure konc (А,В,С: integer; D: real);

function docs (S1,S2: real): real;

 

При передаче по ссылкам фактический параметр является пере-

менной. Формальный параметр обозначает эту фактическуюТ

пере-

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

менение фактического. Для описания параметров-переменных в сек-

ции формальных параметров служит зарезервированное слово Var.

 

р

При использовании параметров-переменных формальные и фак-

 

описанно

тические параметры должны совпадатьипо количеству и типу. Воз-

можны два исключения:

 

1) можно передавать значение параметров строкового типа, не

совпадающее по

длин

й в подпрограмме переменной;

е с

з

 

для этого директиву компиляторат

V надо перевести из активного

состояния поумолчанию {$V+} в пассивное состояние {$V-};

2) допускается отсутствие типа формального параметра в секции формальныхппараметров заголовка подпрограммы.

Пример:Procedure (var Fl);

Формальные параметры без типа несовместимы ни с каким ти-

Р пом. Допустимо сочетание параметров-значений и параметров-пе-

ременных в одной секции формальных параметров:

Procedure dok (var А,В,С: real; S: integer);

Пример. Функция предназначена для вычисления tg(x), а подпрограмма - для вычисления суммы n-членов арифметической прогрессии по следующей формуле:

85

Sn = (n+1 )*(A0+An)/2,

где AO и An - первый и последний члены арифметической прогрессии.

Program test;

 

 

 

 

 

 

 

 

 

 

var S, X, AO, An: real;

 

 

 

 

 

 

 

 

N: integer;

 

 

 

 

 

 

 

 

 

 

 

function Tg(X: real): real;

 

{Функция}

 

 

 

begin

 

 

 

 

 

 

 

 

 

Т

Tg:=Sin(x)/Cos(x);

 

 

 

 

 

 

 

 

У

end;

 

 

 

 

 

 

 

 

 

Н

procedure Sumar (AO, An: real; N: integer; var Sn: real); {Подпрограмма}

begin

 

 

 

 

 

 

 

 

Б

 

 

 

 

 

 

 

 

 

 

 

 

 

Sn:=(n+l)*(A0+An)/2;

 

 

 

 

 

 

 

 

end;

 

 

 

 

 

 

 

 

й

 

 

begin

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

и

 

 

 

\угке1п('Введите значение x');

 

 

 

 

 

 

 

 

readln(X);

 

 

 

 

 

р

 

 

 

 

итке1п('3начение Tg(x)=', Tg(x):8:5);

 

 

 

 

 

 

 

 

о

 

 

 

 

 

\угйе1п('Введите значение AO');

 

 

 

 

readln(AO);

 

 

т

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

writeln('Bвeдитe

 

 

е An');

 

 

 

 

readln(N);

 

значени

 

 

 

 

 

 

 

readln(An);

з

 

 

е N');

 

 

 

 

 

\угке1п('Введите

 

 

 

 

 

 

 

sumar(A0, An, N, S);

 

 

 

 

 

 

 

 

 

п

 

 

 

 

 

 

 

 

 

 

writeln('CyMMa арифметической прогрессии при AO-, +A0,

е

 

 

 

 

 

 

 

 

 

 

 

' An - , An,'Nо-, N,' равна', S:8:l);

 

 

 

 

end.

 

 

 

 

 

 

 

 

 

 

 

 

Р

 

 

 

 

 

 

 

 

 

 

 

 

Эта простая программа запрашивает число х и вычисляет tg(x), затем требует ввести три числа: первый и последний члены арифметической прогрессии и количество всех ее членов. На основании введенных значений вычисляется сумма арифметической прогрессии.

86

С о д е р ж а н и е

 

В в е д е н и е

 

 

 

 

 

 

 

 

 

1. МЕТОДИЧЕСКИЕ УКАЗАНИЯ

 

 

 

 

2.

СОДЕРЖАНИЕ ДИСЦИПЛИНЫ

 

 

 

 

3.

ЛИТЕРАТУРА

 

 

 

 

 

 

 

У

4.

ЗАДАНИЕ ДЛЯ КОНТРОЛЬНОЙ РАБОТЫ

 

 

 

5.

ОБЩИЕ СВЕДЕНИЯ ОБ ЭВМ

 

 

 

 

6.

ОСНОВЫ АЛГОРИТМИЧЕСКОГО ЯЗЫКА FORTRAN. . .

6.1. Общие сведения о программе. Основные

Т

 

элементы языка

 

 

 

 

 

 

6.2. Организация ввода-вывода данных

Б

6.3. Программирование разветвляющихся алгоритмов

 

6.4. Программирование циклических алгоритмовН

 

6.5. Массивы

 

 

 

 

 

 

й

 

 

 

 

 

 

 

 

 

 

 

 

6.6. Внешние процедуры

 

 

 

 

 

 

 

7. ОСНОВЫ АЛГОРИТМИЧЕСКОГО ЯЗЫКА PASCAL

 

 

 

 

 

 

 

 

р

 

 

 

 

7.1. Классификация данных языка PASCAL

 

 

 

7.2. Выражения. Операции

 

и

 

 

 

7.3. Операторы языка PASCAL

 

 

 

 

 

7.4. Операторы организации циклов. Операторы повтора

 

7.5. Массивы

 

и

о

 

 

 

 

 

 

 

 

 

з

т

 

 

 

 

 

 

7.6. Подпрограммы

 

 

 

 

 

 

 

 

 

о

 

 

 

 

 

 

 

 

 

 

 

п

 

 

 

 

 

 

 

 

 

 

 

е

 

 

 

 

 

 

 

 

 

 

 

Р

 

 

 

 

 

 

 

 

 

 

 

 

3

3

4

9

9

15

16

16

23

30

33

38

41

45

45

57

61

74

76

81