Язык программирования ABC PASCAL - [11]

Шрифт
Интервал

// MyGraph.pas, иначе главая программа его не найдет!

>Uses GraphABC; // Модули могут использовать другие модули

>Procedure Triangle(x1,y1,x2,y2,x3,y3:integer);

> // Эта процедура находится в модуле MyGraph

>begin

> line(x1,y1,x2,y2);

> line(x2,y2,x3,y3);

> line(x3,y3,x1,y1);

>end;

>end. // Этот оператор – завершение модуля.


Теперь главная программа будет выглядеть так:


>Program UseProc;

>Uses GraphABC, MyGraph; // Использование стандартного и собственного модуля

>begin

> SetWindowSize(500,500); // Эта процедура описана в GraphABC

> Triangle (100,200,400,300,250,150); // Эта процедура описана в MyGraph

> Triangle(10,20,30,40,50,10);

>end.


Модули могут содержать неограниченное число процедур, функций, а также описаний глобальных переменных, констант (об этом позже).


Задание 10

2. Сформируйте модуль с вашими собственными графическими процедурами (5 баллов)

- 30 -

Тема №11. Способ передачи параметров

Параметры-значения и параметры-переменные

Каким образом подпрограмма может вернуть главной программе какую-либо информацию?

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


Для примера напишем подпрограмму, которая должна вычислить длину окружности

( L = 2πr ) и площадь круга ( S = πr>2) по заданному радиусу.


>Program ProcUse;

>Uses CRT;

> // вычисление длины окружности и площади круга

> Procedure Pr(R,L,S:real);

>begin

> L:=2*PI*R;

> S:=PI*sqr(R);

>end;

> // ГЛАВНАЯ ПРОГРАММА

> var rad, len, area : real;

>begin

> write('Введите радиус '); readln(rad);

> Pr(rad, len, area);

> writeln('Длина окружности ', len);

> writeln('Площадь круга ', area);

>end.


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


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

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

- 31 -


Второй способ называется передача параметров по ссылке. Изменим заголовок процедуры Pr на следующий:

Procedure Pr(R: real; var L,S:real);


Обратите внимание на появившееся ключевое слово var. Оно говорит о том, что два последних параметра процедуры будут являться изменяемыми. Для таких параметров используется другой способ сопоставления с фактическими (передаются на самом деле адреса параметров). В связи с этим необходимо запомнить, что в качестве формальных параметров, соответствующих параметрам переменным, могут использоваться только переменные, но не константы! Т.е. вызов Pr(5,6,7) ошибочен, возможно, лишь Pr(5,a,b), где a и b – вещественные переменные. Первый параметр мы оставили, как и раньше, обычным параметром, передаваемым по значению.


Выполним теперь программу. Работает!


Задание 11

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

(3 балла) 2. Напишите процедуру, аналогичную процедуре Pr, которая вычисляла бы периметр и площадь квадрата со стороной r и а также объем куба с тем же самым ребром r.

(2 балла)


- 32 -

Тема №12. Массивы

Тема имеет исключительно важное значение


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

Массив – это регулярная структура данных, которая состоит из пронумерованных компонент одного и того же типа. Этот тип мы будем называть базовым типом.

Массивы могут быть одномерными:

и многомерными (например, двумерными) :

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

A : array [1..8] of integer;

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

В Pascal’е в качестве диапазона индекса может выступать любой отрезок перечислимого типа, например ‘A’..’H’, либо 0..7. Однако на практике чаще всего удобнее в качестве индексов использовать отрезок целого типа, причем нижний (меньший) индекс разумно выбирать единицей или нулем.

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


Рекомендуем почитать
Технология редакционно-издательского процесса

Рассмотрен современный редакционно-издательский процесс и про–анализирована роль редактора на каждом из его этапов. Особое внимание уде–лено подготовке рукописи к изданию, анализу композиции и содержания произведения, редактированию нетекстовых элементов, таких как формулы, таблицы, иллюстрации. Даны характеристики аппарата книжных и жур–нальных изданий. Освещена тема взаимоотношений автора и редактора.Для студентов высших учебных заведений, получающих образование по направлениям (специальностям) «Книжное дело», «Издательское дело и редактирование», «Литературное творчество».


Перестройка в церковь

Слово «миссионер» привычно уже относить к католикам или протестантам, американцам или корейцам. Но вот перед нами книга, написанная миссионером Русской Православной Церкви. И это книга не о том, что было в былые века, а о том, как сегодня вести разговор о вере с тем, кто уже готов спрашивать о ней, но еще не готов с ней согласиться. И это книга не о чужих победах или поражениях, а о своих.Ее автор — профессор Московской Духовной Академии, который чаще читает лекции не в ней, а в светских университетах (в год с лекциями он посещает по сто городов мира)


Административное право России в вопросах и ответах

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


Общие основы педагогики

Непосредственной сдаче экзамена или зачета по любой учебной дисциплине всегда предшествует достаточно краткий период, когда студент должен сосредоточиться, систематизировать свои знания. Выражаясь компьютерным языком, он должен «вывести информацию из долговременной памяти в оперативную», сделать ее готовой к немедленному и эффективному использованию. Специфика периода подготовки к экзамену или зачету заключается в том, что студент уже ничего не изучает (для этого просто нет времени): он лишь вспоминает и систематизирует изученное.Содержание и структура пособия соответствуют требованиям Государственного образовательного стандарта высшего профессионального образования.Издание предназначено студентам педагогических вузов.


Концепции современного естествознания

В учебнике, написанном коллективом преподавателей РГПУ им. Герцена под руководством Л. А. Михайлова – декана факультета безопасности жизнедеятельности, лауреата премии Президента РФ, представлены новейшие концепции всех естественных наук: биологии, генетики, физики, химии, математики, информатики, биохимии, геологии, антропологии и других. В книге раскрываются социальные последствия новых научных открытий, даются современные технологии обучения в области концепций современного естествознания.Учебник полностью соответствует Государственному образовательному стандарту и имеет гриф УМО.


Экономика фирмы

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