Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
met_aktRG_11.doc
Скачиваний:
0
Добавлен:
30.08.2019
Размер:
222.72 Кб
Скачать

14

Министерство образования и науки, молодежи и спорта Украины

Севастопольский национальный технический

университет

Методические указания к выполнению расчетно-графического задания

по дисциплине

«Алгоритмизация и программирование»

для студентов

направления 6.050202 «Автоматизация и

компьютерно-интегрированные технологии»

дневной формы обучения

Севастополь

2011

УДК 519.6

Методические указания к выполнению расчетно-графического задания по дисциплине “ Алгоритмизация и программирование ” для студентов направления 6.050202 «Автоматизация и компьютерно-интегрированные технологии»

дневной формы обучения/ Сост. Л.А. Литвинова. – Севастополь: Изд-во СевНТУ, 2011. – 11 с.

Целью методических указаний является оказание помощи студентам в выполнении расчетно-графического задания с использованием алгоритмического языка Turbo-Pascal по дисциплине «Алгоритмизация и программирование».

Методические указания рассмотрены и утверждены на заседании кафедры Кибернетики и вычислительной техники, протокол №3 от 13 декабря 2010 г.

Допущено учебно-методическим центром СевНТУ в качестве методических указаний.

Ответственный за выпуск:

Скатков А.В., доктор технических наук, профессор, зав. кафедрой кибернетики и вычислительной техники.

Содержание

1.

Цель работы

4

2.

Краткие теоретические сведения

4

3.

Содержание задания

7

4

Содержание отчета по выполнению расчетно-графического задания

8

Библиографический список

8

Приложение А

9

Приложение Б

1. Цель работы:

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

- закрепить знания основных элементов алгоритмического языка Turbo-Pascal.

  1. Краткие теоретические сведения

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

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

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

Задача 1.

Пусть необходимо ввести и вывести на экран пользователя значения элементов матрицы , размерность которой , где .- число строк в матрице , а - число столбцов.

Анализ задачи

Для хранения и обработки значений элементов матрицы удобно использовать двумерный массив.

В программе на Pascal в разделе описаний двумерный массив должен быть описан. Для ввода значений элементов массива используется вложенный цикл. Для построения вложенного цикла удобно использовать оператор цикла fortodo .

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

Ниже приводится программа.

program test1;

Const

m=3;n=4;

Var

x:array[1..m,1..n]of integer;

i,j:integer;

begin

for i:=1 to m do

for j:=1 to n do

read(x[i,j]);

for i:=1 to m do

begin

for j:=1 to n do

write(' ',x[i,j]);

writeln;

end;

end.

Значения элементов матрицы вводятся по строкам. На экран пользователя значения элементов массива также выводятся построчно.

При тестировании программы целесообразно проверить ее работу для тех случаев, когда, во-первых, число строк и столбцов одинаково, т. е. или различно( ) .

Во-вторых, когда матрица представляет собой вектор-строку или вектор-столбец.

Задача 2.

Сформировать вектор Y, элементами которого являются максимальные значения элементов соответствующих столбцов матрицы X размерности , где ,

Анализ задачи

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

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

Найденное максимальное значение в -ом столбце после окончания работы внутреннего цикла должно быть записано в соответствующий -ый элемент одномерного массива . Число элементов в одномерном массиве совпадает с числом столбцов в массиве .

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

Для вывода значений одномерного массива на экран пользователя может быть использован типовой алгоритм вывода значений элементов одномерного массива.

Ниже приводится программа для решения исходной задачи.

program test2;

Const

m=3;n=4;

Var

x:array[1..m,1..n] of integer;

y:array[1..n] of integer;

i,j,max:integer;

begin

for i:=1 to m do

for j:=1 to n do

read(x[i,j]);

for j:=1 to n do

begin

max:=x[1,j];

for i:=1 to m do

if x[i,j]>max then max:=x[i,j];

y[j]:=max;

end;

writeln;

for j:=1 to n do

write(' ',y[j]);

end.

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

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

Задача 3.

Дана матрица размерности . Вычислить сумму значений элементов нечетных строк матрицы больших , если

Анализ задачи

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

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

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

Далее, если номер строки четный, то во внутреннем цикле будет вычисляться сумма значений элементов этой строки.

Перед началом внутреннего цикла необходимо присвоить нулевое значение переменной, где будет храниться сумма значений элементов каждой строки.

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

Во внутреннем цикле по переменной при суммировании значений элементов двумерного массива будет изменяться только второй индекс.

Результаты суммирования будут записываться в одномерный массив .

Для вывода значений одномерного массива на экран пользователя может быть использован типовой алгоритм вывода значений элементов одномерного массива.

Ниже приводится программа для решения исходной задачи.

program test3;

Const

m=5;n=4;

Var

x:array[1..m,1..n] of integer;

y:array[1..m] of integer;

i,j,k,sStr,a:integer;

begin

read(a);

for i:=1 to m do

for j:=1 to n do

read(x[i,j]);

k:=0;

for i:=1 to m do

if (i mod 2)<>0 then

begin

sStr:=0;

for j:=1 to n do

if x[i,j]>a then sStr:=sStr+x[i,j];

k:=k+1;

y[k]:=sStr;

end;

writeln;

for j:=1 to k do

write(' ',y[j]);

end.

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

Задача 4.

Дана матрица Х размерности . Найти максимальный и минимальный элемент матрицы Х и поменять их местами, если

.

Анализ задачи

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

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

Далее необходимо использовать типовой алгоритм поиска минимального значения в одномерном массиве. Однако, для поиска минимального значения в данной задачи следует использовать вложенный цикл. При этом поиск минимального и максимального элемента выполнять одновременно. При поиске минимального и максимального значения необходимо сохранить номера строк и столбцов, в которых они находятся в исходной матрице.

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

Ниже приводится программа для решения исходной задачи.

program test4;

Const

m=3;n=4;

Var

x:array[1..m,1..n] of integer;

i,j,r,min,max:integer;

imin,jmin,imax,jmax:integer;

begin

for i:=1 to m do

for j:=1 to n do

read(x[i,j]);

min:=x[1,1];

max:=x[1,1];

for i:=1 to m do

for j:=1 to n do

begin

if x[i,j]>max then

begin

max:=x[i,j];imax:=i;jmax:=j;

end;

if x[i,j]<min then

begin

min:=x[i,j];imin:=i;jmin:=j;

end;

end;

r:=x[imin,jmin];x[imin,jmin]:=x[imax,jmax];

x[imax,jmax]:=r;

writeln;

for i:=1 to m do

begin

for j:=1 to n do

write(' ',x[i,j]);

writeln;

end;

end.

При тестировании программы следует проверить работу программы, например, когда

- минимальное и максимальное совпадают;

- максимальное (минимальное) значение находится в первой строке и в первом столбце или в последней строке и в последнем столбце и т.д.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]