Автор работы: Пользователь скрыл имя, 23 Октября 2013 в 19:35, контрольная работа
Расчетно-графическая работа по информатике (РГР) завершает в курсе информатике раздел “Алгоритмизация и программирование на языке высокого уровня”. При ее выполнении студент должен продемонстрировать знания и навыки, полученные на лекциях, практических занятиях (факультет АВТ), лабораторных занятиях. Задания к РГР выдаются на позднее, чем за месяц до начала зачетной недели. Для защиты РГР студент должен предоставить преподавателю правильно и корректно работающие программы (на электронном носителе или на ЭВМ в компьютерном классе кафедры), пояснительную записку (пояснительная записка хранится на кафедре не менее одного учебного года), а так же ответить на все вопросы преподавателя по теме РГР.
While x<>y do
begin
If x>y then x:=x-y
else y:=y-x;
writeln(x:5,y:5)
end;
{поиск минимального элемента в массиве}
Редактор выделяет ключевые слова языка программирования (BEGIN, END, IF, THEN, ELSE и др.) и текст комментариев цветом. Такое цветовое выделение облегчает чтение программы, помогает при поиске ошибок.
Приведем пример оформления и выполнения Расчетно-графической работы на некотором варианте.
5.1. Образец титульного листа
Задание 1.
Постановка задачи.
Найти на заданном интервале [n,m] натуральное число, имеющее наибольшее количество делителей.
Решение.
1. 1. Составим алгоритм решения данной задачи.
1.2. Приведем используемые переменные.
имя переменной |
смысл переменной |
назначение переменной |
ограничения |
n |
нижняя граница интервала |
исходная |
целое число |
m |
верхняя граница интервала |
исходная |
целое число |
y |
наибольшее количество делителей |
результат |
целое число |
col |
количество делителей для каждого числа в интервале [n,m] |
промежуточная |
целое число |
k |
натуральное число с наибольшим количеством делителей |
результат |
целое число |
i |
число из интервала [n,m] |
промежуточная |
целое число |
j |
Значения делителя для числа i |
промежуточная |
целое число |
1.3. Приведем текст программы:
PROGRAM U1;
Uses crt;
Var
k,n,m,i,j,col:integer;
begin
clrscr;
writeln(‘введите n,m’); y:=0;
readln(n,m);
for i:= n to m do
begin
col:=0;
for j:=1 to i-1 do
if i mod j = 0 then
col:=col+1;
if col>y then begin
y:=col;
k:=i;
end;
end;
writeln(‘число = ’, k, ‘количество делителей=’,y);
readkey
end.
Задание 2.
Постановка задачи.
Задана целочисленная матрица А(3,4). Некоторый элемент этого массива назовем седловой точкой, если он является одновременно наименьшим в своей строке и наибольшим в своем столбце. Вывести на экран номер строки и столбца седловой точки матрицы А, если она есть и текст “Седловой точки нет”, если её нет.
Решение задачи.
Решение данной задачи разобьем на несколько этапов.
2.1. Составим алгоритм решения данной задачи.
2.2. Рассмотрим переменные, которые потребуются для решения поставленной задачи.
имя переменной |
смысл переменной |
назначение переменной |
ограничения |
а |
исходная |
целочисленная матрица | |
i |
индекс строки элементов матрицы |
промежуточная, результат |
целое число |
j |
индекс столбца элементов матрицы |
промежуточная |
целое число |
k |
индекс столбца наименьшего i- ой строки |
промежуточная, результат |
целое число |
l |
индекс строк |
промежуточная |
целое число |
y |
промежуточная |
целое число | |
c |
промежуточная |
целое число |
2.3. Приведем текст программы:
PROGRAM zadanie2;
USES CRT;
Var
A:array[1 ..3,1 ..4] of integer;
i,j,l,k,c,y:integer;
begin
clrscr;
writeln(‘введите a(3,4)’);
for i:= 1 to 3 do
for j:=1 to 4 do read(a[i,j]);
y:=0;
for i:= 1 to 3 do
begin
k:=0;
for j:= 1 to 4 do
if a[i,j]<a[i,k] then k:=j;
c:=0;
for l:= 1 to 3 do
if a[l,k]>a[i,k] then c:=1;
if c=0 then
begin
writeln(‘седловая точка-’,a[i,k],
‘строка=’,i,’столбец’,k);
y:=1;
end;
end;
if y=0 then writeln(‘седловой точки нет’);
readkey;
end.
Задание 3.
Постановка задачи
Вычислить z = Max1 + Max2, где
Max1 – наибольший элемент матрицы G(4,4);
Max2 – наибольший элемент матрицы T(2,2).
Матрица G(4,4) получена произведением матрицы А(3,4) на матрицу В(4,3). Матрица T(2,2) получена произведением матрицы С(2,3) на матрицу D(3,2).
Решение
3.1. В программе имеются следующие подпрограммы:
Составим алгоритм решения данной задачи.
3.2. Приведем, сначала, алгоритм всей программы в целом. Затем детально рассмотрим все подпрограммы по порядку.
3.3. Рассмотрим подробно все подпрограммы.
Подпрограмма VVOD. Эта подпрограмма реализована в виде процедуры и вызывается в тексте основной программы дважды. Процедура VVOD - ввод матрицы (заполнение числовыми данными, вводимыми с клавиатуры) для произвольной прямоугольной матрицы Х(n,m).
текст процедуры
PROCEDURE VVOD(Var X:matr; n,m:integer);
Var i,j:integer;
begin
for i:= 1 to n do
for j:=1 to m do read(X[i,j]);
end;
Подпрограмма SR. Эта подпрограмма, также, реализована в виде процедуры и вызывается в тексте основной программы дважды. Процедура SR - вычисление произведения двух произвольных прямоугольных матриц G и S размером L×N и N×M. Вычисления осуществляются по формуле:
|
текст процедуры
PROCEDURE SR(G,S:matr; L,N,M:integer;Var T:matr);
Var k,i,j:integer;
begin
for i:= 1 to L do
for j:=1 to M do
begin
T[i,j]:=0;
For k:=1 to N do T[i,j]:=T[i,j]+G[i,k]*S[k,j]l;
end;
end;
Подпрограмма VIVOD – процедура вывода произвольной прямоугольной матрицы y(k,l). Вызывается дважды. Алгоритм и его реализация аналогична процедуре VVOD:
PROCEDURE VIVOD(y:matr; n:integer);
Var i,j:integer;
begin
for i:= 1 to n do
begin
for j:=1 to n do write(y[i,j]:6:2,’ ’);
writeln;
end
end;
Подпрограмму Max. Эта подпрограмма реализована в виде функции. Обращение к функции Max осуществляется дважды.
function MaxM(x:matr; n:integer;): real;
Var i,j:integer;
max:real;
begin
max:=x[1,1];
for i:= 1 to n do
for j:= 1 to n do
if x[i,j]>max then max:=x[i,j];
Maxm:=max;
end;
Комментарий к программе:
Из основной программы данной функции передается массив х и его размер n×n. Так как в функции элементы массива не подвергаются изменению, то х передается функции как параметр-значение.
Перед выходом из функции имени функции MaxM присваивается найденное значение наибольшего элемента массива, которое и возвращается в основную программу.
Приведем, теперь, полностью текст основной программы.
PROGRAM zadanie3;
USES CRT;
type
matr=array[1 ..4,1 ..4] of real;
Var
AB,CD,a,b,c,d: matr;
z: real;
PROCEDURE VVOD(Var X:matr; n,m:integer);
Var i,j:integer;
begin
for i:= 1 to n do
for j:=1 to m do read(X[i,j]);
end;
PROCEDURE VIVOD(y:matr; n:integer);
Var i,j:integer;
begin
for i:= 1 to n do
begin
for j:=1 to n do write(y[i,j]:6:2,’ ’);
writeln;
end
end;
PROCEDURE SR(G,S:matr; L,N,M:integer;Var T:matr);
Var k,i,j:integer;
begin
for i:= 1 to L do
for j:=1 to M do
begin
T[i,j]:=0;
For k:=1 to N do T[i,j]:=T[i,j]+G[i,k]*S[k,j]l;
end;
end;
function MaxM(x:matr; n:integer;): real;
Var i,j:integer;
max:real;
begin
max:=x[1,1];
for i:= 1 to n do
for j:= 1 to n do
if x[i,j]>max then max:=x[i,j];
Maxm:=max;
end;
begin
clrscr;
writeln(‘введите A(3,4)’);
VVOD (A,3,4);
writeln(‘введите В(4,3)’);
VVOD (B,4,3);
writeln(‘введите C(2,3)’);
VVOD (C,2,3);
writeln(‘введите D(3,2)’);
VVOD (D,3,2);
SR(A,B,3,4,3,AB);
SR(C,D,2,3,2,CD);
writeln(‘вывод АВ’);
VIVOD (AB,4);
writeln(‘вывод CD’);
VIVOD (CD,2);
z:=MaxM(AB,4)+MaxM(CD,2);
writeln(‘z=’, z:6:2);
end.
Оглавление
26 27
3
Информация о работе Цель и задачи расчетно-графической работы по информатике