Лабораторная работа по информатике, вариант №13, с методическим пособием.zip

Язык: русский
Формат: реферат
Тип документа: Word Doc
0 610
Скачать документ

Лабораторная работа №6

Программирование с использованием подпрограмм пользователя.

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

Задание для самостоятельной работы.

Изучить:

правила записи подпрограмм различных видов и способов обращений к ним;

способы передачи параметров в подпрограмму;

правила записи программ, использующих подпрограммы.

Разработать алгоритм решения задачи.

Составить программу решения задачи.

Подготовить тестовый вариант программы и исходных данных.

Задание к работе

Задание А.

Выполнить на ЭВМ программу, использующую подпрограмму функцию, в
соответствии с номером параметра, указанным в таблице.

Проверить правильность выполнения программы с помощью тестового
варианта.

Вариант

Задания Условия задачи Примечания

1 Вычислить большие корни кв. уравнений

x2-ax+b=0

cy2-dy-f=0 Все корни действительные

2 Подсчитать число точек, находящихся внутри круга радиусом r с центром
в начале координат; координаты заданы массивами X(100), Y(100)
Расстояние точки от начала координат вычислять в подпрограмме

3 Определить периметры энугольников, координатами их вершин заданы в
массивах X, Y. Длину стороны энугольников вычислять в подпрограмме

4 Подсчитать число точек, находящихся внутри круга радиусом r с центром
в точке с координатами (1,1); координаты заданы массивами X(80), Y(80)
Расстояние точки от центра круга определять в подпрограмме

5 Вычислить z=(v1+v2+v3)/3 , где v1 ,v2,v3, – объёмы шаров с радиусами
r1 , r2 и r3 соответственно Vi вычислять в подпрограмме

6 Вычислить суммы положительных элементов массивов X(N), Y(M), Z(K)
N<=60 M<=60 K<=707 Вычислить среднее арифметическое положительных элементов для массивов A(N1), B(N2), C(N3) N1<=100 N2<=100N3<=1008 Подсчитать количество элементов матриц X(10,15) и Y(20,12), удовлетворяющих условиям 0<=xij<=1 и 0<=yij<=19 Вычислить суммы положительных элементов каждой строки для матриц A(10,12) и B(15,10)10 Вычислить z=(xm1+xm2)/2 , где xm1 и xm2 – наименьшие элементы массивов X1(70), X2(80)11 Вычислить суммы элементов главных диагоналей матриц A(N,N) B(M,M) M<=20 N<=3012 Вычислить z=(s1+s2)/2, где s1- сумма положительных элементов массива X(50); s2- сумма отрицательных элементов массива Y(60) Обе суммы вычислять в одной подпрограмме13 Подсчитать число нулевых элементов для матриц A(N,M) и B(M,N) M<=20 N<=2014 Вычислить суммы элементов нижних треугольных матриц для матриц A(15,15) и B(20,20)15 Определить число положительных элементов до первого отрицательного в массивах X(40), Y(50), Z(N) N<=50Задание Б.Выполнить на ЭВМ программу, использующую подпрограмму-процедуру в соответствии с номером, указанным в таблице.Проверить правильность выполнения программы с помощью тестового варианта .Вариант9 Вычислить z, где xi и yi – заданы массивамиВсе суммы вычислять в одной подпрограмме10 Вычислить z = (xmax-ymin)/2, где xmax – максимальный элемент массива X(50); ymin – минимальный элемент массива Y(40) xmax и ymin вычислять в одной подпрограмме11 Вычислить и запомнить количество отрицательных элементов каждого столбца для матриц A(10,10), B(15,20)12 Вычислить суммы элементов верхней треугольной матрицы для матриц A(10,10), B(15,15)13 Найти средние значения и стандартные отклонения для элементов массивов X(N), Y(M) N<=100 M<=10014 Вычислить суммы и количества элементов, находящихся в интервале от a до b для матриц X(10,8) и Y(10,12)15 Преобразовать массивы X(50) и Y(60), расположив в них подряд только положительные элементы. Вместо остальных элементов записать нулиПример выполнения работыЗадание А.Выполнить на ЭВМ решение задачи. Определить ближайшую к началу координат точку, находящуюся в верхней полуплоскости, и наиболее удалённую точку, лежащую в нижней полуплоскости. Координаты точек, находящихся в верхней полуплоскости , заданы массивами X1(N) и Y1(N), а лежащие в нижней полуплоскости ,- массивами X2(M) и Y2(M), где N<=40, M<=60.Для каждой точки верхней полуплоскости следует определить расстояние от начала координат. Из этих расстояний необходимо найти наименьшее. Такие же действия выполнить для точек, находящихся в нижней полуплоскости, однако найти наибольшее расстояние от начала координат.Вычисление расстояний от начала координат и нахождение наименьшего или наибольшего из них выполним в подпрограмме-функции.&~ae&(????O&gdl}OkdHgdl}Okd?gdl}O[email protected]}Okdegdl}Oго и наименьшего значений потребует введения дополнительного параметра, который необходим для проверки условия K*R>K*RM. Если K=1, то условие
R>RM используется для нахождения наибольшего; если K= -1, то условие

R=kx*rm) then rm := r;

end;

vec := rm

end;

{ исполняемая часть главной программы }

begin

textattr:=27;clrscr;

gotoxy(30,2);writeln(‘’);

write(‘Введите кол-во координат верхней полуплоскости. ‘);

readln(n);

writeln(‘Введите координаты’);

for i :=1 to n do begin

read(x[i]); write(‘ ‘);readln(y[i]);

end;

writeln(‘Ближайшая точка удалена на расстояние =’, s:=vec(x,y,n,-1);

write(‘Введите кол-во координат нижней полуплоскости. ‘);

readln(n);

writeln(‘Введите координаты’);

for i :=1 to n do begin

read(x[i]); write(‘ ‘);readln(y[i]);

end;

writeln(‘Наиболее удаленная точка находится на расстояни =’,
s:=vec(x,y,n,1);

end.

Проверить правильность выполнения программы для массивов, заданных
значениями:

Для верхней полуплоскости x={-4,0,3}; y={0,5,4};

Для нижней полуплоскости x={-4,0,2}; y={-2,-5,-1};

Для которых наименьшее расстояние от начала координат в верхней
полуплоскости s = 4, а наибольшее – в нижней полуплоскости s = 5.

Задание Б.

Решить на ЭВМ задачу. Переписать положительные элементы массивов
X(n),Y(m) в массив Z подряд. Запись положительных элементов в массив
осуществить в подпрограмме. Принять ограничения: n<=100 и m<=100.В подпрограмме должна осуществляться запись положительных элементов исходного массива в массив результатов.Для этого в подпрограмму необходимо передать следующие параметры: имя и количество элементов исходного массива, имя и номер элемента с которого дописывать результирующий массив. Поскольку в массив результатов Z записывается подряд положительные элементы из нескольких массивов, в списке параметров должны фигурировать также: входной параметр L – номер ячейки, начиная с которой необходимо осуществлять запись в массив результатов.При первом обращении к подпрограмме в неё необходимо передать имя массива Х, количество его элементов N; входной параметр L=1, запись осуществляется в массив Z, начиная с элемента с индексом 1. При завершении первого обращения L хранит номер последней занятой ячейки в массиве Z.При втором обращении необходимо передать соответственно массив Y, количество его элементов M, и L=L+1 равной номеру ячейки преднозначенной для до записи в массив Z.В схеме алгоритма при первом обращении к подпрограмме параметр L задан равным нулю, так как в подпрограмме перед записью элемента в массив z индекс L увеличивается на 1. По этой же причине при втором обращении параметру L опять увеличивается на 1, что даёт возможность обратиться к следующей ячейки массива Z при втором обращении.Программа, реализующая алгоритм, имеют вид:program sort (input,output);uses crt; {подключение модуля упровляющего текстовым режимом монитора}const n=200;type mas:array[1..n] of real;var i,n,m,l: byte;x,y,z:mas;procedure st (var a,c:mas;n:byte;var l:byte);var j:byte;beginfor j:=1 to n doif a[i]>0 then begin

inc(l);

c[l] := a[j];

end;

end;

{ исполняемая часть главной программы }

begin

window(1, 1, 80, 25);textattr := 27; clrscr;

gotoxy(5, 2);write(‘Введите кол-во элементов массива X’);

readln(n);

gotoxy(5, 3);write(‘Введите значения массива X’);

for i := 1 to n do begin

gotoxy(i*4-2, 5); read(x[i]);

end;

gotoxy(5, 9);write(‘Введите кол-во элементов массива Y’);

readln(m);

gotoxy(5, 10);write(‘Введите значения массива Y’);

for i := 1 to m do begin

gotoxy(i*4-2, 12); read(y[i]);

end;

l := 0;

st(x,z,n,l);

st(y,z,m,l);

gotoxy(5, 15);write(‘Результативный массив Z’);

for i:=1 to l do begin

gotoxy(i*4-2, 17);write(z[i]);

end;

end.

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

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

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

Указать, в чём отличие различных видов подпрограмм пользователя.

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

Указать способы передачи параматров в подпрограмму.

Указать, как организовывать подпрограмму без параметров.

Перечислить, как согласуются формальные и фактические параметры.

Указать конструкции, которые могут быть формальными и фактическими
параметрами.

Пояснить, как и куда осуществляется выход из подпрограммы.

Похожие документы
Обсуждение
    Заказать реферат
    UkrReferat.com. Всі права захищені. 2000-2018