Реферат по предмету "Информатика, программирование"


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

Целью работы является написание программ на ЭВМ, согласно условию в выбранном варианте, первая программа для задания А, и вторая программа для задания Б. Для написания программ использовался Borland Turbo Pascal версии 7.1. Рассмотрим по очереди эти два задания.

ЗАДАНИЕ А. Необходимо подсчитать количество нулевых элементов для матриц А(N,M) и В(M,N), причём M и N не могут быть больше 20.

Матрицы А и В представляют в машинном исполнении двухмерные массивы, число элементов в которых не может быть больше 20х20=400 элементов по условию. Каждый индекс числа – M и N представляет собой «координату» числа в матрице, по его строке и столбцу, соответственно. Автор программы ввёл в неё выбор количества строк и столбцов для каждой матрицы (массива), дав пользователю возможность выбрать его в пределах от двух до двадцати (по условию). Программа занесения данных в сами массивы построена на цикле оператора FOR, причём если пользователю будет лень вносить данные самостоятельно – программа может сделать это за него посредством генерации случайных чисел и занесения их в массивы, что на современных компьютерах занимает считанные наносекунды. На программу самогенерации-самоввода элементов матриц автор программы ввёл некоторые ограничения во избежании не занесения в них нулевых элементов, что необходимо для проверки правильности работы программы. Если вручную вы можете ввести любое действительное число от -32768 до 32767, то программа самогенерации генерирует целые числа от нуля до двадцати. И, если вы, к примеру, задали в программе размер матриц 2X3, что составляет всего шесть элементов, то вполне вероятно (как показала практика тестирования программы), что в ней будет хотя бы один нулевой элемент, или, попросту – ноль. Подпрограмма подсчёта количества нулевых элементов тоже построена на цикле оператора FOR, и если бы она не была необходима по условию, без неё можно было бы обойтись, включив подсчёт таких элементов в цикл ввода данных / цикл генерации данных, тем самым повысив быстродействие программы. Эта подпрограмма (так же, как и подпрограмма в задании Б) оформлена в виде процедуры.

ЗАДАНИЕ Б. Найти средние значения и стандартные отклонения для элементов массивов X(N), Y(M), причём количество элементов не может быть более 100.

В этом примере реализована та же подпрограмма ввода / генерации данных, что и в задании А, с разницей в массивах – здесь мы имеем одномерные массивы. На программу генерации элементов массивов наложены те же самые ограничения, что и в задании А, с той разницей, что число генерируется в интервале от нуля до ста, а не до двадцати. В подпрограмму вычисления условий задачи внесён тот же цикл оператора FOR, несущий в этом задании вспомогательную функцию вычисления среднего числа массивов в частности. Подпрограмма оформлена в виде отдельной процедуры, как и в задании А, однако без этой процедуры обойтись, как в первом задании, нельзя, так как разбросав её на алгоритмы ввода и генерации данных мы усложняем, запутываем алгоритм программы, снижая тем самым её производительность (быстродействие).


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

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

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


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


  1. Изучить:

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

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

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

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

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

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


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

Задание А.


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

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


Вариант

Задания

Условия задачи Примечания
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><=60><>

7 Вычислить среднее арифметическое положительных элементов для массивов A(N1), B(N2), C(N3)

N1<=100><>

N3<>

8

Подсчитать количество элементов матриц X(10,15) и Y(20,12), удовлетворяющих условиям 0<>ij<=1 и=""><>ij<>


9 Вычислить суммы положительных элементов каждой строки для матриц 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><>

12

Вычислить z=(s1+s2)/2, где s1- сумма положительных элементов массива X(50); s2- сумма отрицательных элементов массива Y(60)

Обе суммы вычислять в одной подпрограмме

13

Подсчитать число нулевых элементов для матриц A(N,M) и B(M,N)

M<=20><>

14 Вычислить суммы элементов нижних треугольных матриц для матриц A(15,15) и B(20,20)
15 Определить число положительных элементов до первого отрицательного в массивах X(40), Y(50), Z(N)

N<>


Задание Б.


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

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


Вариант

Задания

Условие задачи

Примечания
1

Вычислить z = (s1+s2)/k1k2 ,где s1 и k1 – сумма и количество положительных элементов массива X(N); s2 и k2 – сумма и количество положительных элементов массива Y(M).

M<=100><>

2

Вычислить z = (es1+es2)/k1k2, где s1 и k1 – сумма и количество положительных элементов массива X(100); s2 и k2 – сумма и количество положительных элементов массива Y(80).

Обе суммы вычислять в одной подпрограмме
3 Вычислить и запомнить суммы положительных элементов каждой строки матицы A(10,20), B(15,10).
4

Вычислить z = (x1+y1)/(x2-y2), где x1 и x2 – корни уравнения 2x2+x-4 = 0, y1 и y2 – корни уравнения ay2+2y-1 = 0 .

Все корни действительные
5 Найти наибольшие элементы и их порядковые номера массивов X(N) и Y(M)

N<=80><>

6 Переписать положительные элементы массива X(100) и Y(80) в массив Z подряд Запись в массив Z осуществлять в подпрограмме
7 Найти наименьшие элементы и номера строк и столбцов, в которых они расположены, для матриц A(10,15) и B(15,12)
8 Вывести на печать элементы целочисленных матриц N(5,8) и M(10,6), кратные трём

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><>

14 Вычислить суммы и количества элементов, находящихся в интервале от a до b для матриц X(10,8) и Y(10,12)
15 Преобразовать массивы X(50) и Y(60), расположив в них подряд только положительные элементы. Вместо остальных элементов записать нули

Пример выполнения работы

Задание А.

Выполнить на ЭВМ решение задачи. Определить ближайшую к началу координат точку, находящуюся в верхней полуплоскости, и наиболее удалённую точку, лежащую в нижней полуплоскости. Координаты точек, находящихся в верхней полуплоскости , заданы массивами X1(N) и Y1(N), а лежащие в нижней полуплоскости ,- массивами X2(M) и Y2(M), где N<=40,><>

Для каждой точки верхней полуплоскости следует определить расстояние от начала координат. Из этих расстояний необходимо найти наименьшее. Такие же действия выполнить для точек, находящихся в нижней полуплоскости, однако найти наибольшее расстояние от начала координат.

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

Использование одной подпрограммы для нахождения наибольшего и наименьшего значений потребует введения дополнительного параметра, который необходим для проверки условия K*R>K*RM. Если K=1, то условие R>RM используется для нахождения наибольшего; если K= -1, то условие
R

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


program coord;

usec crt;

const n=40;

type mas =array[1..n] of real;

var i,n : byte;

s : real;

x ,y : mas;

function vec(x,y:mas; n,kx:integer):real;

var j : integer;

r,rm : real;

begin

rm := -1e20;

for j := 1 to n do begin

r := sqrt(sgr(x[i])+sgr(y[i]));

if (kx*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 и=""><>

В подпрограмме должна осуществляться запись положительных элементов исходного массива в массив результатов.

Для этого в подпрограмму необходимо передать следующие параметры: имя и количество элементов исходного массива, имя и номер элемента с которого дописывать результирующий массив. Поскольку в массив результатов 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;

begin

for j:=1 to n do

if 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.


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


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


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

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

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

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

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

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

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

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



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

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.

Сейчас смотрят :

Реферат Аудиторські послуги. Аудит матеріальних засобів. Аудиторська перевірка показників "незавершеного виробництва"
Реферат Children And Televison Violence Essay Research Paper
Реферат Slavery And The Founding Fathers Essay Research
Реферат Донской Монастырь
Реферат Методы исследования функции внешнего дыхания
Реферат Принципи розробки плану використання засобів масової інформації для реклами
Реферат Повышение эффективности рекламной деятельности на примере хлебопекарни "КОЛОС"
Реферат НДФЛ. Налогоплательщики, объект налогообложения, налоговая база
Реферат Who Essay Research Paper LITERATURE OF REVIEW
Реферат Потребности и мотивация 2
Реферат Соотношение результативности и надежности соревновательной деятельности стрелков-пистолетчиков
Реферат Формы стимулирования персонала крупной зарубежной фирмы
Реферат Мир бытовых вещей и человек в нём
Реферат Росписи Успенского собора Княгинина монастыря XVII века в г. Владимире. История создания памятника.
Реферат Прибыль и рентабельность по ОАО Гомельская птицефабрика