Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоргалка / спо / Программирование2.doc
Скачиваний:
6
Добавлен:
26.01.2019
Размер:
105.98 Кб
Скачать

8. Параметры значения и параметры переменные подпрограмм. Механизм передачи параметров и подпрограмму

Механизм передачи параметра.

Параметры различаются:

1. По механизум передачи.

– value – передачи по значению;

– addr – передачи по ссылке.

2. По взаимодействию вызывающей и вызываемой процедуры или функции.

– только как входной параметр (in),

– только как выходной параметр (out),

– как входной, так и выходной (inout).

В Turbo Pascale реализовано 3 способа передачи параметров:

1. Когда реализуется value in – они называются параметры значения

Procedure proc (P1, P2: T1; P3:T2);

2. Когда реализуется addr inout – параметры переменной

Procedure proc(var P1:T1;P2:T2)

3. Параметры вида addr in – параметры константы

Procedure sum (x,y:real; const sum; sub: red l);

Безтиповые параметры.

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

Параметры процедуры и функции:

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

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

6. Массивы. Действия над массивами. Действия над элементами массива

Структурированные типы данных – задают множество сложных знач-й с одним общим именем

По способу организации и типу компонентов бывают:

1. Регулярный тип – массивы;

2. Комбинированный – записи;

3. Файловый тип – файл;

4. Множественный тип – строки;

5. Объектовый тип – объекты.

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

1. Одномерный массив

Const n = 100;

Var A: array [1….n] of real;

Const n =100;

Type vector = array [1…n] of real;

Var A: vector

2. Двумерный массив

Const n = 30; m =50;

Var A: array [1….n, 1….m] of integer;

Const n = 30; m =50;

Type vector = array [1…n,1..m] of integer;

Var A: vector;

Действия над массивами:

1. Присвоение

А,В

А := В (присвоение элементам А элементов В)

2. Отношение (=, <>)

А=В; А<>B (если хотя бы 1 элемент не совпадает)

Действия над элементами массива.

1. Инициализация – присвоение начальных значений каждому элементу массива.

Var A: array [1….4] of real;

I: integer;

Begin fоr I := 1 to 4 do

Read (A[I]);

End.

Если массив 2-х мерный, то: Var A: array [1..4, 1…4] of real;

J,I: integer;

Begin for I := 1 to 4 do

for Y := 1 to 4 do

read (A[I,J]);

end.

2. Копирование – присвоение значений всех элементов массива соответствующим элементам другого массива.

Var a,D: array [1…4, 1..4] of read ;

J,I: integer;

Begin for I := 1 to 4 do

For J :=1 to 4 do

A[I, J] := D [I, J];

End.

Сортировка массивов.

Сортировка – распред-е элементов множества по группам в соответствии с опред-ми правилами.

1. Сортировка–вставка. Массив разделяется на 2 части: отсортир-ю и неотсор. Затем элементы из неотсартированной части поочередно отбираются и вставляются в отсортированную часть таким образом, чтобы не нарушить упорядоченность элементов.

Const n =20;

Var vector: array [1;n] of real;

B: real;

I,J,K: integer;

Begin write ( “Bв. элемент массива”);

For I :=1 to n do read (vector [I]);

For I := 2 to n do

Begin B := vector [I];

J := 1;

While (B >vector [J]) do

J := J + 1;

For K := I – 1 donnto J do

Vector [K + 1] := vector [K];

Vector [J] := B

End;

For I :=1 to n do write (vector [I] : 8:2)

End.

2. Сортировка– выборка – в этом случае в массиве (M) назначается элемент с минимальным значением в интервале от первого до последнего и меняется местами с первым элементом.

Const n =20;

Var A: array [1…n] of real;

Min: real;

I min, S, I,: integer;

Begin write («вв. массив»);

For I := 1 to n do real (A [I]);

For S := 1 to (n – 1) do

Begin

Min := A [S];

I min := S;

For I := S + 1 to n do

If A [I] < min t

Begin min := A [I];

I min := I;

end;

A [I min] := A [s];

A [s] := min;

End;

For I := 1 to n do write ( A[I] : 8:2);

End.

3. Сортировка обмена. В этом случае слева направо поочередно списываются 2 соседних элемента и если их взаимоположение не соответствует заданному условию, то они меняются местами, затем берутся 2 последних соседних элемента.

Const n =20;

Var A: array [1…n] of real;

B: real;

I, K: integer;

Begin write («вв. массив»);

For I := 1 to n do real (A [I]);

For K := n donnto 2 do

For I := 1 to K do

If A [I] > A [I + 1] then

Begin B := A [I];

A [I] := A [I + 1];

A[I + 1] := B:

End;

For I := 1 to n do

Write (A[I]: 8:2);

End.

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

Const n =20;

Var A: array [1…n] of real:

X: real;

L, R, I: integer;

F: boolen;

Begin write («вв. Массив»)

For I := 1 to n do read ( A[I]);

Read (x);

L := 1; R := n;

While ( L <= R) do

Begin I := (L + R) div Z;

Else if A [I] < x then L := I + 1 else R := I – 1;

If A[I] = x then write (‘найден’) Else (‘не найден’)

End.

5. Транспонирование матриц. В этом случае чтобы соблюдалось условие: количество строк и столбцов равно.

Const n =10 n = m;

Var A: array [1…n, 1…m] of integer;

I, Y, C : integer;

begin Randomize (регенерация случайных чисел)

fоr I := 1 to n do

begin for Y := 1 to m do

begin A [I,Y] = Random (99)

end;

end.

For I := 1 to n do

For Y := 1 to m do

Begin C : A[I;J]

A[I;J] := A [J;I];

A [I,J] := C;

For I: =1 to n do

Begin for Y := 1 to m do

Begin write (A[I,Y]);

End; End; End.

Соседние файлы в папке спо