Главная » Просмотр файлов » Воробьева А.П., Соппа М.С. - Система программирования Турбо Паскаль 7.0

Воробьева А.П., Соппа М.С. - Система программирования Турбо Паскаль 7.0 (1092189), страница 11

Файл №1092189 Воробьева А.П., Соппа М.С. - Система программирования Турбо Паскаль 7.0 (Воробьева А.П., Соппа М.С. - Система программирования Турбо Паскаль 7.0) 11 страницаВоробьева А.П., Соппа М.С. - Система программирования Турбо Паскаль 7.0 (1092189) страница 112018-02-14СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 11)

for j := 1 to 6 do read(a[i,j]);

P1 := 1;

P2 := 1;

for i := 1 to 4 do

for j :=1 to 6 do

begin

if a[i,j]>0 then P1 := P1  a[i,j];

if a[i,j]<0 then P2 := P2  a[i,j];

end;

Z := P1/abs(P2);

writeln(‘Z=’, Z:10:2);

End.

Задача 2. В квадратной целочисленной матрице вычислить модуль разности между числом нулевых элементов, стоящих ниже главной диагонали, и числом нулевых элементов, стоящих выше главной диагонали.

Введем обозначения:

L1 – число нулевых элементов ниже главной диагонали;

L2 – число нулевых элементов выше главной диагонали;

L= |L1-L2|.

Program DМ1_2;

Var

B: array [1..5, 1..5] of integer;

i, j, L1, L2, L: integer;

Begin

writeln(‘Введите матрицу B’);

for i := 1 to 5 do

for j := 1 to 5 do read(b[i,j]);

L1 := 0;

L2 := 0;

for i := 1 to 5 do

for j := 1 to 5 do

if b[i,j]=0 then

begin

if i>j then L1 := L1+1;

if i<j then L2 := L2 +1;

end;

L := abs(L1 – L2);

writeln(‘L=’, L);

End.

Реализация алгоритмов для задач второго типа

Задача 1. В матрице вещественных чисел первый элемент каждой строки поменять местами с минимальным элементом этой строки. Вывести матрицу Х после обмена.

Program DМ2_1;

Var

X: array [1..3,1..6] of real;

i, j, jmin: integer;

min: real;

Begin

writeln(‘Введите матрицу X’);

for i:= 1 to 3 do

for j := 1 to 6 do read(x[i,j]);

for i:=1 to 3 do

begin

min:=+1E6;

for j:=1 to 6 do

if x[i,j]<min then

begin

min:=x[i,j];

jmin:=j;

end;

x[i,jmin]:=x[i,1];

x[i,1]:=min;

end;

for i:=1 to 3 do

begin

for j:=1 to 6 do write (x[i,j]:6:1);

writeln;

end;

End.

Задача 2. Дана матрица вещественных чисел . Вычислить среднее арифметическое каждого столбца. Результат оформить в виде одномерного массива .

Program DМ2_2;

Var

C: array [1..8, 1..4] of real;

S: array [1..4] of real;

i, j: integer;

Begin

writeln(‘Введите матрицу C’);

for i := 1 to 8 do

for j := 1 to 4 do read(c[i,j]);

for j := 1 to 4 do

begin

s[ j ] := 0;

for i := 1 to 8 do s[ j ]:= s[ j ] + c[i,j];

s[ j ] := s[ j ]/8;

end;

for j := 1 to 4 do write(s[ j ]:8:2)

writeln;

End.

В данной программе следует обратить внимание на то, что при вычислении каждого элемента s[j] организован двойной цикл, в котором индекс является внешним параметром цикла, а индекс внутренним. Это обеспечивает обработку элементов матрицы по столбцам.

ГЛАВА 8. Подпрограммы

8.1. Структура сложной программы

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

1. Экономия памяти.

Каждая подпрограмма записывается в программе один раз, в то время как обращаться к ней можно многократно из разных точек программы.

2. Структурирование программы.

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

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

Структура сложной программы

Раздел типов TYPE в основной программе может отсутствовать. Его назначение рассмотрим позднее.

Описания подпрограмм располагаются вслед за разделом описания переменных основной программы VAR. Число подпрограмм может быть произвольным.

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

8.2. Процедуры

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

Общий вид описания процедуры

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

В Турбо Паскале допускается запись заголовка процедуры без списка параметров:

PROCEDURE <имя>;

Обращение к процедуре

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

Общий вид оператора вызова процедуры

<имя процедуры>(<список фактических параметров>);

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

Глобальные и локальные переменные

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

Локальные переменные определяются в разделе описания VAR внутри процедуры. Они имеют смысл только в процедуре и недоступны основной программе.

Пример программы с процедурой

Вычислить значение:

,

где заданное вещественное число.

Введем обозначения:

; .

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

, где

номер шага вычисления (умножения);

число шагов вычислений.

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

Программа

Program Primer_1;

Var

a, r1, r2, r3, z: real;

Procedure ST (x: real; n: integer; var P: real);

var

i: integer;

begin

P := 1;

for i := 1 to n do P := P  x;

end;

Begin {начало основной программы}

writeln(‘Введите число а’);

read (a);

ST(a, 5, r1);

ST(1/a, 5, r2);

ST(a, 7, r3);

Z := (r1 + r2) / (2  r3);

writeln(‘Z=’, Z:6:2);

End.

В заголовке процедуры с именем ST указаны два входных формальных параметра (x, n) и один выходной (P).

Выполнение программы всегда начинается с операторов основной программы. В данном случае после ввода заданного числа ( ) последовательно вызывается три раза процедура ST. При каждом вызове происходит соответствующая замена формальных параметров (x, n) на фактические, и вычисленный результат через формальный параметр Р присваивается фактическим переменным r1, r2, r3 соответственно. Далее вычисляется значение Z, и результат выводится на экран.

Согласование параметров

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

Механизм замены параметров

В списке формальных параметров выделяется два вида параметров: параметры-значения и параметры-переменные. Механизм замены для каждого вида параметров различен.

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

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

Рассмотрим два примера, иллюстрирующих понятие параметра-значения и параметра-переменной.

Пример 1.

Program P1;

Var

x: integer;

Procedure Z (y: integer);

begin

y := 1;

end;

Begin

x := 0;

Z(x); {вызов процедуры}

writeln(‘x=’, x);

End.

В описанной процедуре Z формальный параметр y является параметром-значением, поэтому его изменение в процедуре (y := 1;) не влияет на значение фактического параметра x. После выполнения программы на экран будет выведено: x = 0.

Пример 2.

Характеристики

Тип файла
Документ
Размер
1,05 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6353
Авторов
на СтудИзбе
311
Средний доход
с одного платного файла
Обучение Подробнее