Цель и задачи расчетно-графической работы по информатике
- Цель и задачи расчетно-графической работы по информатике
Расчетно-графическая работа по информатике (РГР) завершает в курсе информатике раздел “Алгоритмизация и программирование на языке высокого уровня”. При ее выполнении студент должен продемонстрировать знания и навыки, полученные на лекциях, практических занятиях (факультет АВТ), лабораторных занятиях. Задания к РГР выдаются на позднее, чем за месяц до начала зачетной недели. Для защиты РГР студент должен предоставить преподавателю правильно и корректно работающие программы (на электронном носителе или на ЭВМ в компьютерном классе кафедры), пояснительную записку (пояснительная записка хранится на кафедре не менее одного учебного года), а так же ответить на все вопросы преподавателя по теме РГР.
- Указания по оформлению РГР
Преподаватель, ведущий лабораторный практикум определяет студенту номер варианта. Формулировки задач приводятся в приложении ?. РГР включает в себя, прежде всего, пояснительную записку (см. приложение ?), электронный носитель с текстами программ может быть приложен по желанию студента.
Текст и блок-схемы алгоритмов пояснительной записки должны быть выполнены синими (черными) чернилами, разборчивым почерком или набраны и распечатаны при помощи ПК (текст 11-16 пт, межстрочный интервал 1,3-1,5). Используется одна сторона листа писчей бумаги формата А4. На левой стороне листа для подшивки оставляется поле шириной 25-30 мм. Для остальных полей следует соблюдать следующие размеры: верхнее – не менее 15мм., нижнее – не менее 20 мм., правое – не менее 10 мм.
Страницы нумеруются, начиная с титульного листа, причем используется сквозная нумерация, а сами номера проставляются в правом нижнем углу листа без точки в конце. Номер страницы на титульном листе не проставляется. Иллюстрации, таблицы и схемы, блок-схемы, расположенные на отдельных листах, также включаются в общую нумерацию страниц работы.
Выполнение каждого задания начинается с нового листа. Само задание нумеруется арабскими цифрами, причем подразделы (блок-схемы, листинги программы и подпрограмм) имеют порядковую нумерацию, так же арабскими цифрами, но, соответственно, состоящую из двух цифр и точек (например, 1.2.) и т.д. (см. приложение ?).
Таблицы, блок-схемы и схемы, приведенные в РГР должны иметь сквозную нумерацию арабскими цифрами. На них должны быть ссылки и упоминания в тексте работы. Таблицы имеют собственную сквозную нумерацию арабскими цифрами. Номер размещается в правом верхнем углу над заголовком таблицы после слова “Таблица”. Блок-схемы и схемы имеют заголовок, расположенный над ними, начинающийся со слова “Блок-схема …” или “Схема …”. Рисунки и графики должны иметь сквозную нумерацию и подпись, например, “Рис.6. Схема структуры цикл с параметром.”.
Если в тексте встречаются формулы, то они записываются в отдельной строке.
Тексты программ оформляются с обязательными отступами, наглядно иллюстрирующими логическую структуру программы.
- Структура РГР
Студенту предлагается три задачи. В пояснительной записке должны присутствовать формулировки заданий, блок-схемы программ и подпрограмм, описание используемых переменных и констант, тексты программ и подпрограмм, а так же результаты тестирования программы.
Таким образом, структурными элементами РГР являются:
Структурными элементами РГР, перечисленными далее в порядке их следования, являются:
- правильно и корректно работающие программы (на электронном носителе или на ЭВМ в компьютерном классе кафедры);
- пояснительную записку.
Структурными элементами пояснительной записки, перечисленными далее в порядке их следования, являются:
- титульный лист (приложение ?);
- оглавление;
- перечень условных обозначений, символов, единиц и терминов (может и отсутствовать);
- введение (раздел введение в РГР не является обязательным. Он может содержать сведения, которые студент считает целесообразным включить, например, инструкция пользователя, историческая справка и т.д.);
- основная часть, включающая:
- постановку задачи;
- перечисление и краткое описание подпрограмм (если они в программе присутствуют);
- блок схемы алгоритмов (как основной программы, так и подпрограмм);
- тексты программы и подпрограмм;
- результаты машинного тестирования.
- список использованных источников;
- приложения (если есть).
- Вспомогательные сведения
В курсе информатики при изучении темы “Алгоритмизация” у большинства студентов возникают сложности с построением блок-схем алгоритмов. Поэтому, целесообразно привести некоторые теоретические сведения, с примерами, из данной темы.
4.1. Запись алгоритма с помощью схем
Алгоритм – конечная последовательность предписаний однозначно определяющих процесс переработки исходных и промежуточных данных в результат решения задачи.
Запись алгоритма с помощью схем предполагает его изображение с использованием графических символов - блоков, каждый из которых предписывает исполнение определенных действий. Совокупность блоков образует схему алгоритма. Графические блоки между собой соединяются линиями потока информации. Основное направление потока идет сверху вниз и слева направо. Учитывая это, стрелки на схемах, совпадающие с таким потоком информации, могут не проставляться.
В таблице 1 приведены изображения наиболее часто употребляемых блоков в схемах алгоритмов и даны пояснения к ним.
По отношению к блоку линии потока могут быть входящими или исходящими. При большом количестве пересекающихся линий схема становится мало наглядной. В этих случаях допускается линии потока информации, размещая на обоих конца разрыва специальный блок “соединитель”. Внутри блока, обозначающего разрыв одной и той же линии, помещается один и тот же маркер (буква, цифра или другой символ).
Если же схема располагается на нескольких листах, то переход линий потока с одного листа на другой обозначается с помощью блока “межстраничный соединитель”. При этом на листе с блоком-источником соединитель содержит номер листа и координаты блока-приемника, а на листе с блоком-приемником – номер листа и координаты блока-источника.
Внутри блоков или рядом с ними делают записи и обозначения (для уточнения выполняемых ими функций) так, чтобы их можно было читать слева направо и сверху вниз.
Таблица 1. Типовые блоки схем алгоритмов
Наименование |
Обозначение |
Функция |
Блок вычислений (процесс) |
Вычислительное действие или последовательность действий | |
Логический блок (решение) |
Выбор направления выполнения алгоритма в зависимости от некоторых условий (условия) | |
Блоки ввода/вывода |
Общее обозначение ввода или вывода данных ( вне зависимости от физического носителя) | |
Начало-конец (вход-выход) |
Начало или конец программы, останов, вход или выход в подпрограммах | |
Предопределен-ный процесс (подпрограмма) |
Вычисление по стандартной подпрограмме иди подпрограмме пользователя | |
Блок модификации (заголовок цикла) |
Выполнение действий, изменяющих пункты алгоритма | |
Соединитель |
Указание связи
между прерванными линиями | |
Межстраничный соединитель |
Указание связи между частями схемы, расположенными на разных листах |
При вычерчивании схем алгоритмов нужно выдерживать минимальное расстояние 3 мм между параллельными линиями потоков и 5 мм между остальными блоками. Вычерчивая блоки, необходимо соблюдать соотношение между высотой а и шириной b (b = 1,5a, или 2a при a =10, 15, 20,…мм). Высота блока начало-конец в два раза меньше высоты остальных блоков.
Схема алгоритма
должна строиться таким образом,
чтобы обеспечивалась большая наглядность
его структуры и может представ
4.2. Базовые управляющие структуры
Как бы ни была сложна задача, схема алгоритма решения задачи всегда может быть представлена с использованием весьма ограниченного числа элементарных структур, которые могут соединяться между собой, образуя более сложные структуры, но по тем же самым элементарным схемам.
Рис.1. |
Базовыми считаются такие вычислительные структуры с одним входом и одним выходом, посредством которых возможно описание структуры любого алгоритма. К их числу относят следующие структуры:
|
осуществляется либо по ветви Да (при соблюдении условия), либо по ветви Нет. Схема данной структуры приведена на рис.2.
Рис.2. |
Рис.3. |
- Структура повторения реализована, как цикл с предусловием (рис. 3).
Под циклом
понимается вычислительный
Согласно структуре повторения вначале идет проверка условия. Если условие соблюдается, то выполняется тело цикла, если не соблюдается, то осуществляется выход из цикла (передача управления другой структуре, описанной ниже).
Приведенные базовые элементарные структуры обладают функциональной полнотой, т.е. любой алгоритм может быть реализован в виде композиции этих трех структур.
Алгоритмический язык Паскаль с самого начала был задуман и разработан как структурированный язык. Все выше указанные структуры нашли в нем свое место. Более того, чтобы программист при написании программ чувствовал себя свободнее, помимо уже перечисленных структур в нем предусмотрен еще ряд дополнительных.
Цикл с постусловием. Схема данной структуры представлена на рис.4. Проверка условия происходит каждый раз после выполнения всех действий, предусмотренных в теле цикла. Тело цикла повторяется до тех пор, пока условие выхода ложно, как только условие примет значение «истина», произойдет выход из цикла. Данная структура характеризуется тем, что, каково бы ни было условие выхода из цикла, тело цикла обязательно выполнится хотя бы один раз.
Рис.4. |
Рис.5. |
Цикл с параметром (цикл с фиксированным числом повторений). Схема данной структуры приведена на рис.5. Число повторений определяется как начальным и конечным значениями параметра цикла, так и шагом ее изменения. В тех случаях, когда данная структура оказывается применимой, ее использование значительно упрощает процесс разработки алгоритма и, соответственно, программы.
Коррекция. Схема данной структуры приведена на рис.6. Действия выполняются только в ветви Да, а ветвь Нет каких-либо действий не содержит.
Вариант. Схема данной структуры представлена на рис.7. Осуществляется выбор варианта по значению некоторой управляющей переменной-селектора. На схеме такой переменной является С; если С имеет значение 1, то выполняется оператор Оп1, если С имеет значение 3, то выполняется оператор Оп2, если 5, то выполняется оператор Оп3. Если же С имеет значение, отличное от указанных, то выполняется оператор Оп. Рекомендации по формату записи текста программы Язык Паскаль не накладывает жестких требований на формат записи текста программы. Однако для удобства работы с текстом настоятельно рекомендуем вам соблюдать следующие правила: | |
Рис.6. | |
Рис.7. |
- Использовать систему отступов при записи вложенных операторов или операторов, заключенных в операторные скобки begin и end. Такой способ записи наглядно показывает структуру программы. Например:
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