78208

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

Лекция

Информатика, кибернетика и программирование

Открытый массив представляет собой формальный параметр подпрограммы описывающий базовый тип элементов массива но не определяющий его размерности и границы: Procedure MyProcOpenrry: rry of Integer; Внутри подпрограммы такой параметр трактуется как одномерный массив с нулевой нижней границей. Используя минимальный индекс как ноль и значение возвращаемое функцией HIGH как максимальный индекс подпрограмма может обрабатывать...

Русский

2015-02-07

57.5 KB

1 чел.

екция: Особенности использования массивов в качестве параметров      Страница  2 из 2

Оглавление

[1] Оглавление

[2] Параметры-массивы и параметры-строки

[2.1] Контрольные вопросы

Комбинированный урок №10

Тема: Метод пошаговой детализации. Особенности использования массивов в качестве параметров.

Цель: изучить приемы составления программ с использованием массивов в качестве параметров на примерах.

Параметры-массивы и параметры-строки 

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

Procedure S (a: array [1..10] of Real);

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

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

type atype = array [1..10]of Real; 

Procedure S(a: atype);

....... 

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

type  intype = String [15] ;

outype = String [30] ; 

Function St (s : intype): outype;

.......

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

Procedure MyProc(OpenArray: array of Integer);

Внутри подпрограммы такой параметр трактуется как одномерный массив с нулевой нижней границей. Верхняя граница открытого массива возвращается функцией HIGH. Используя минимальный индекс как «ноль», и значение, возвращаемое функцией HIGH, как максимальный индекс, подпрограмма может обрабатывать одномерные массивы произвольной длины:

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

Procedure  ArrayPrint(aArray: array of Integer); 

var  k: Integer; 

begin

for k := 0 to High(aArray) do  Write(aArray[k]:8);

WriteLn 

end;

const A:array [-1..2] of Integer = (0,1,2,3); 

B: array [5..7] of Integer = (4,5,6); 

begin

 ArrayPrint(A);

 ArrayPrint(B) 

end.

Как видно из этого примера, фактические границы массивов А и В, передаваемых в качестве параметров вызова процедуре ArrayPrint, не имеют значения. Однако размерность открытых массивов (количество индексов) всегда равна 1. За этим следит компилятор. Если бы, например, добавить в программу двумерный массив С

var

С: array [1..3,1..5] of Integer;

то обращение

ArrayPrint(С);

вызывало бы сообщение об ошибке

Error26: Type mismatch. 

(Ошибка 26: Несоответствие типов.)

Пример 2: Программа вводит фамилию и выводит на экран фамилию с прописной буквы

uses crt;

type intype =string[15];

    outype = string[25];

var s : intype;

   i : integer;

function st(w: intype):outype;

begin

    w[1]:=upcase(s[1]); { изменение первого символа со строчного на прописной }

    st:=w+' TBiP''2009';{ склеивание символов }

end;

begin

    write('Vvedite famely: ');

    readln(s);

    writeln(st(s));

    readkey;

end.

Контрольные вопросы

1. Как оформляются параметры-массивы и параметры-строки? Приведите примеры.

2. Дайте определение понятию «открытый массив».


 

А также другие работы, которые могут Вас заинтересовать

27093. Организация процессов обработки данных в базе данных: формы, запросы, отчеты 38 KB
  Основными компонентами объектами базы данных являются таблицы запросы формы отчеты макросы и модули.Таблица фундаментальная структура системы управления реляционными базами данных. В Microsoft Access таблица это объект предназначенный для хранения данных в виде записей строк и полей столбцов.
27094. Понятие и функции базы данных. Предметная область 13.87 KB
  Основные предметнозначимые сущности: Книги Читатели. Основные предметнозначимые атрибуты сущностей: книги автор книги название год издания цена является ли новым изданием краткая аннотация; читатели номер читательского билета ФИО адрес и телефон читателя. Основные требования к функциям системы: выбрать книги которые находятся у читателей или определенного читателя; выбрать читателей которые брали ту или иную книгу с указанием даты выдачи книги и даты сдачи книги читателем; ...
27095. Реляционная модель данных и реляционные СУБД.Типы связей и их реализация 22.21 KB
  Реляционная модель данных и реляционные СУБД. Реляционная модель данных логическая модель данных. Реляционная модель данных включает следующие компоненты: Структурный аспект составляющая данные в базе данных представляют собой набор отношений. РМД поддерживает декларативные ограничения целостности уровня домена типа данных уровня отношения и уровня базы данных.
27096. Система управления базами данных (СУБД). Функции и объекты СУБД 78 KB
  Функции и объекты СУБД Система управления базами данных СУБД совокупность программных и лингвистических средств общего или специального назначения обеспечивающих управление созданием и использованием баз данных. Функции СУБД: управление данными во внешней памяти на дисках; управление данными в оперативной памяти с использованием диского кэша; журнализация измененийрезервное копирование и восстановление базыданных после сбоев; поддержка языков БД язык определения данных язык манипулирования данных. Объекты СУБД: К объектам СУБД...
27097. Таблицы реляционной базы данных: структура, требования. Основные типы данных и типы полей 155.5 KB
  Основные типы данных и типы полей Реляционная СУБД Система управления реляционными базами данных СУБД управляющая реляционными базами данных. Реляционная база данных база данных основанная на реляционной модели данных. Использование реляционных баз данных было предложено доктором Коддом из компании IBM в 1970 году.
27099. Задачи и этапы проектирования и создания баз данных. Жизненный цикл базы данных 589.59 KB
  Жизненный цикл базы данных Основные задачи: Обеспечение хранения в БД всей необходимой информации. Обеспечение возможности получения данных по всем необходимым запросам. Сокращение избыточности и дублирования данных.
27100. Запросы к базе данных. Виды запросов. Язык SQL. Запросы по образцу (QBE) 37 KB
  Запросы по образцу QBE Запрос query это средство выбора необходимой информации из базы данных. Вопрос сформированный по отношению к базе данных и есть запрос.QBE запрос по образцу средство для отыскания необходимой информации в базе данных.