Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lab4_v5 / lab4_v5

.docx
Скачиваний:
15
Добавлен:
16.03.2016
Размер:
81.92 Кб
Скачать

Федеральное агентство по образованию

ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)

Кафедра автоматизированных систем управления (АСУ)

ОТЧЕТ

по лабораторной работе № 4

по дисциплине «Программирование на языке высокого уровня»

Выполнил: студент гр. З-431-а

Мамаев Александр Николаевич

Принял: преподаватель

Сафьянова Елена Николаевна

«19» января 2016 г.

2016 г.

  1. Тема работы: работа с двумерными массивами.

  2. Цель работы – приобретение навыков работы с матрицами с использованием процедур. В работе необходимо максимально использовать аппарат процедур и функций.

  3. Задание(вариант №5):

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

  1. Описание алгоритма решения задачи:

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

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

Для решения данной задачи введены следующие функции и процедуры:

procedure matrixprint;

Вывод двумерного массива на экран.

procedure matrixgen;

Заполнение матрицы размера M случайными числами от -20 до 20.

procedure getsum;

Процедура расчёта суммы четных столбцов.

function getm():integer;

Функция получения размера матрицы.

procedure abovezero;

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

procedure subzero;

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

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

  1. Листинг программы

  1. program lab4_v5;

  2. Uses Crt;

  3. var

  4. m,i,j,sum:integer;

  5. A: Array[1..100] of Array[1..100] of integer;

  6.  

  7. procedure matrixprint; // Процедура вывода матрицы на экран

  8. begin

  9. for i:=1 to m do begin

  10. for j:=1 to m do begin

  11. write(A[i,j],' ');

  12. end;

  13. writeln;

  14. end;

  15. end;

  16. procedure matrixgen;

  17. begin

  18. writeln('Генерация матрицы [',m,',',m,']:');

  19. for i:=1 to m do

  20. for j:=1 to m do A[i,j]:=random(40)-20;

  21. end;

  22.  

  23. procedure getsum; // Подсчёт суммы четных столбцов

  24. begin

  25. sum:=0;

  26. for i:=1 to m do

  27. for j:=1 to m do

  28. if(j mod 2)=0 then sum:=sum+A[i,j];

  29. writeln('Сумма чётных столбцов=',sum);

  30. end;

  31.  

  32.  

  33. function getm():integer;

  34. var

  35. v:integer;

  36. begin

  37. write('Введите M=');

  38. readln(v);

  39. getm:=v;

  40. end;

  41.  

  42. procedure abovezero;

  43. begin

  44. writeln('Сумма положительна, возвожу элементы нечётных строк в квадрат:');

  45. for i:=1 to m do begin

  46. for j:=1 to m do begin

  47. if(i mod 2)<>0 then

  48. A[i,j]:=A[i,j]*A[i,j];

  49. end;

  50. end;

  51. matrixprint;

  52. end;

  53.  

  54. procedure subzero;

  55. begin

  56. writeln('Сумма не положительна, ко всем элементам побочной диагонали прибавляю 2');

  57. for i:=1 to m do A[m-i+1,i]:=A[m-i+1,i]+2;

  58. matrixprint;

  59. end;

  60.  

  61. begin

  62. ClrScr;

  63. randomize;

  64.  

  65. m:=getm;

  66. matrixgen;

  67. matrixprint;

  68. getsum;

  69. if(sum>0) then abovezero else subzero;

  70.  

  71. readln;

  72. end.

  1. Результаты тестирования программы

При M=3

При M=6

  1. Выводы

При максимальном использовании функций и процедур объём основного кода значительно сокращается, а при правильном наименовании функций и процедур увеличивается читабельность кода, например в данной работе фрагмент основного кода:

  1. m:=getm;

  2. matrixgen;

  3. matrixprint;

  4. getsum;

  5. if(sum>0) then abovezero else subzero;

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

Код легко читается, например, так:

  1. получить M

  2. Сгенерировать матрицу

  3. Вывести матрицу на экран

  4. Получить сумму

  5. Если сумма больше ноля вызвать «больше ноля», иначе «меньше ноля»

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

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

  1. Список используемых источников

• Методические указания к лабораторным работам для студентов специальности 230105 «Программное обеспечение вычислительной техники и автоматизированных систем», С.М. Алферов, Е.Н. Сафьянова

• https://ru.wikipedia.org/wiki/Процедурное_программирование

• http://programmersforum.ru/showthread.php?t=106599

Соседние файлы в папке lab4_v5