Цель и задачи расчетно-графической работы по информатике
Контрольная работа, 23 Октября 2013, автор: пользователь скрыл имя
Описание работы
Расчетно-графическая работа по информатике (РГР) завершает в курсе информатике раздел “Алгоритмизация и программирование на языке высокого уровня”. При ее выполнении студент должен продемонстрировать знания и навыки, полученные на лекциях, практических занятиях (факультет АВТ), лабораторных занятиях. Задания к РГР выдаются на позднее, чем за месяц до начала зачетной недели. Для защиты РГР студент должен предоставить преподавателю правильно и корректно работающие программы (на электронном носителе или на ЭВМ в компьютерном классе кафедры), пояснительную записку (пояснительная записка хранится на кафедре не менее одного учебного года), а так же ответить на все вопросы преподавателя по теме РГР.
Файлы: 1 файл
rgr.doc
— 1.66 Мб (Скачать файл)While x<>y do
begin
If x>y then x:=x-y
else y:=y-x;
writeln(x:5,y:5)
end;
- Не следует в одной строке записывать несколько операторов, кроме, может быть, простейших. В противном случае вы рискуете сильно усложнить отладку программы.
- Объектам программы следует давать имена, отражающие их суть. Не избегайте длинных имен, если они помогают лучше понять смысл программы. За редким исключением не следует использовать однобуквенные имена вроде А, B и т.д.
- Используйте комментарии для выделения в тексте логически завершенных фрагментов. Например:
{поиск минимального элемента в массиве}
Редактор выделяет ключевые слова языка программирования (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). Некоторый элемент этого массива назовем седловой точкой, если он является одновременно наименьшим в своей строке и наибольшим в своем столбце. Вывести на экран номер строки и столбца седловой точки матрицы А, если она есть и текст “Седловой точки нет”, если её нет.
Решение задачи.
Решение данной задачи разобьем на несколько этапов.
- Заполнение матрицы а (3,4) числами, вводимыми с клавиатуры.
- Для i-ой строки матрицы а определяется k – номер (индекс) столбца содержащего наименьший элемент.
- Проверяется, является ли элемент а [i, k] наибольшим в k-ом столбце (с = 0) – седловая точка или нет (с = 1).
- Если седловых точек нет (у = 0), то на экран выводится соответствующее сообщение.
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. В программе имеются следующие подпрограммы:
- процедура VVOD –
- процедура VIVOD –
- процедура SR –
- функция max –
Составим алгоритм решения данной задачи.
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