Разработка в среде Turbo Pascal программы вычисления суммы элементов строк матрицы

 

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

КАФЕДРА ИНФОРМАТИКИ













КУРСОВАЯ РАБОТА

ПО ДИСЦИПЛИНЕ «ИНФОРМАТИКА»

РАЗДЕЛ: АЛГОРИТМИЧЕСКИЙ ЯЗЫК PASCAL

НА ТЕМУ:

Разработка в среде Turbo Pascal программы вычисления суммы элементов строк матрицы



выполнил студент: Шамсутдинова А.В.

группы 13-11

проверил: ст. преподаватель

Мохова О.М.



Альметьевск, 2014 год


ОГЛАВЛЕНИЕ


ПОСТАНОВКА ЗАДАЧИ

ОПИСАНИЕ АЛГОРИТМА РЕШЕНИЯ ЗАДАЧИ ГРАФИЧЕСКИМ СПОСОБОМ

Укрупнённая схема алгоритма

Детализация укрупненной схемы алгоритма

Блок-схема алгоритма

РАЗРАБОТКА ПРОГРАММЫ НА ЯЗЫКЕ PASCAL

Описание блоков укрупненной схемы алгоритма на языке Pascal

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

Тестирование программы

СПИСОК ЛИТЕРАТУРЫ



ПОСТАНОВКА ЗАДАЧИ


Разработка в среде Turbo Pascal программы вычисления суммы элементов строк матрицы.

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

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



ОПИСАНИЕ АЛГОРИТМА РЕШЕНИЯ ЗАДАЧИ ГРАФИЧЕСКИМ СПОСОБОМ


Укрупнённая схема алгоритма



Детализация укрупненной схемы алгоритма


В программе решаются следующие подзадачи:

1.Заполнение массива с помощью генератора случайных чисел.

2.Создание нового массива из элементов равных сумме элементов строки, в которой имеется лишь один отрицательный элемент.

.Сортировка массива по возрастанию.

.Вывод отсортированного массива.

Заполнение массива с помощью генератора случайных чисел.

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

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

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

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

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

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

Как оговаривалось в постановке задачи, ввод элементов двумерного массива будем осуществлять с помощью генератора случайных чисел. Возьмем, к примеру, интервал от -1 до 20. Тогда, используя формулу Random(b-a)+a, получим Random (21)-1.

Таким образом, каждый очередной элемент массива будет представлять собой целое число из диапазона [-1, 20] и выводится на экран.

Цикл работает до достижения переменной i значения n, то есть до конца массива. Алгоритм заполнения массива соответствующими числами указан ниже:



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

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

Далее при обработке каждого элемента строки прибавляем его к переменной хранящей сумму и увеличиваем переменную g если в строке встречается отрицательный элемент это осуществляется с помощью ветвления сравнивающего элемент с нулём.

После обработки всей строки, с помощью оператора ветвления определяем есть ли один отрицательный элемент в строке, если он имеется то в ранее объявленный массив добавляем элемент равный сумме всех элементов.



Сортировка массива по возрастанию.

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

При сортировке вставкой сначала упорядочиваются два элемента массива. Затем делается вставка третьего элемента в соответствующее место по отношению к первым двум элементам. Все это можно представить в виде следующего фрагмента блок-схемы:



Вывод преобразованного массива.

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



Блок-схема алгоритма





РАЗРАБОТКА ПРОГРАММЫ НА ЯЗЫКЕ PASCAL


Программа начинается со служебного слова Program, после которого следует заголовок программы. В данном случае это Nas.

В модуле CRT реализованы специальные процедуры и функции для работы с текстовой информацией на дисплее, позволяющие: управлять текстовыми режимами, организовывать окна вывода на экран, настраивать цвета символов на экране, управлять курсором. Для подключения модуля достаточно указать зарезервированное слово USES и список подключаемых модулей в самом начале программы:

USES CRT;

USES CRT используем для подключения процедуры

ClrScr;

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

Описание констант.

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

const m = 15; n= 4;

Описание переменных.

Все переменные используемые в программе должны быть перечислены в разделе описания переменных VAR.

В программе описаны следующие переменные:

i, j, k, g, x, s:integer;:array [1..15, 1..4] of integer;:array [1..1000] of integer;

Где, a- вещественный двумерный массив, состоящий из m строк и n столбцов и b одномерный массив.

Целочисленные переменные.

i, j - счетчики циклов, k - вспомогательная переменная отвечающая за размерность одномерного массива, s - буферная переменная, хранящая сумму элементов всей строки, x, g - вспомогательные переменные для сортировки массива.

Раздел описания переменных начинается со слова BEGIN.

В разделе операторов опишем действия, которые должна выполнить программа согласно выбранного алгоритма. Этот раздел заключен между словами begin и end. В программе может использоваться составной оператор begin end;.

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


Описание блоков укрупненной схемы алгоритма на языке Pascal


Формирование двумерного массива.

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

Цикл с параметром - оператор имеет следующий формат:

For i:= A to B do S;

где i - счетчик цикла, является переменной порядкового типа данных. А - начальное значение, В - конечное значение счетчика цикла. S - тело цикла (повторяющиеся действия).

Цикл работает следующим образом: переменной i присваивается начальное значение A, если A<=B, то выполняется тело цикла S, после чего значение счетчика цикла i автоматически увеличивается на 1 и опять сравнивается с B. Цикл будет повторяться до тех пор, пока значение счетчика i не станет больше B. Если тело цикла S состоит из нескольких операторов, то они заключаются в операторные скобки (begin…end). Если в операторе for .. to последнее значение счетчика цикла меньше первого, то тело цикла не выполняется ни разу.

for i:=1 to m doj:= 1 to n do begin[i, j]:= random(21)-1;(a[i, j]:4);

end;;;

Запись write(a[i, j]:4) обозначает, что для вывода каждого элемента на экран отводится 4 позиции.

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

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

На этом этапе нам встречается новый оператор - условный оператор в Turbo Pascal помогает осуществить "ветвление" программы, т. е. передать управление по условию.

Условный оператор имеет вид:

IF условие THEN <оператор1> [ELSE <оператор2>]

Выполнение условного оператора начинается с вычисления значения логического выражения, записанного в условии. Простые условия записываются в виде равенств или неравенств. Сложные условия составляют из простых с помощью логических операций, если условие истинно, то выполняется <оператор1>, в противном случае - <оператор2>.:

k:= 0;i:= 1 to m do:= 0; g:= 0;j:= 1 to n do:= s+a[i, j];a[i, j]<0 then g:= g+1 ;;g=1 then:= k+1;[k]:= s;

end;;

Сортировка массива по возрастанию.

Цикл с предусловием(цикл «пока») имеет следующий формат:

While условие do S;

В качестве условия можно использовать любое логическое выражение, которое может быть либо истиной (true) ли ложью (false). S - тело цикла.

Сначала проверяется условие, если оно - истина, то выполняется тело цикла S и опять проверяется условие. Цикл будет повторяться до тех пор, пока условие - истина, как только условие станет ложным - происходит выход из цикла. Если изначально условие - ложь, то тело цикла не выполнится ни разу. В отличии от цикла с параметром в этом виде цикла не предусмотрено автоматическое изменение переменной цикла, поэтому в теле цикла S должны быть команды, изменяющие значение переменной цикла. В противном случае при запуске произойдет так называемое зацикливание программы (т.е. выполнение бесконечного цикла).

Если тело цикла S состоит из нескольких операторов, то они заключаются в операторные скобки (begin…end).

for i:= 1 to k do(b[i]:4);;i:= 1 to k do:= b[i];:= i-1;(j>0) and (x<b[j]) do[j+1]:= b[j];:= j-1;

end;[j+1]:= x;;

Вывод преобразованного массива.

После сортировки выводим полученный массив на экран стандартными средствами вывода:

for i:= 1 to k do(b[i]:4);

где write(a[i, j]:4)- вывод элементов двумерного массива в строку с указанием количества занимаемых позиций


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


program Nas;crt;m = 15; n= 4;, j, k, g, x, s: integer;: array [1..15, 1..4] of integer;: array [1..1000] of integer;;;(' 1) Создаём массив размерностью (' ,m, '*' ,n, ')' );i:= 1 to m doj:= 1 to n do begin[i, j]:= random(21)-1;(a[i, j]:4);;;;:= 0;i:= 1 to m do:= 0; g:= 0;j:= 1 to n do:= s+a[i, j];a[i, j]<0 then g:= g+1 ;;g=1 then:= k+1;[k]:= s;;;k=0 then (' В массиве нет строк, в которых есть только один отрицательный элемент ' )

else

begin

writeln(' Массив, состоящий из элементов, которые равны сумме всех элементов строки, в которой имеется только один отрицательный элемент ' );

for i:= 1 to k do(b[i]:4);;i:= 1 to k do:= b[i];:= i-1;(j>0) and (x<b[j]) do[j+1]:= b[j];:= j-1;;

b[j+1]:= x;

end;

writeln(' 2) Отсортированный массив по заданному условию ' );i:= 1 to k do(b[i]:4);

end;;.


Тестирование программы


Ниже приведены результаты выполнения программы на примере различных входных данных.




алгоритм матрица листинг программа pascal



СПИСОК ЛИТЕРАТУРЫ


1.Иванов А.Ф., Потапова О.Н. , Салихова Г.Л. Основы алгоритмического языка Pascal.: - Альметьевск: тип. АлНИ, 2007г.

.Немнюгин С.А. Turbo Pascal: учебник - СПб.: - Питер, 2001г.

.Окулов С. М. Основы программирования.: - Москва, 2008г.

.Попов В., Паскаль и Дельфи. Самоучитель - СПб.: - Питер , 2003г.

.Культин Н. Turbo Pascal в задачах и примерах.- СПб.: БХВ-Петербург, 2003 г. - 256 с.

.Потапова О.Н., Салихова Г.Л., Садриева Л.М., Миндиярова О.Г., Мохова О.М., Фахрутдинова Р.Р., Ханова И.А. Методические указания по выполнению курсовой работы по информатике -Альметьевск , 2009г. - 156 с.



АЛЬМЕТЬЕВСКИЙ ГОСУДАРСТВЕННЫЙ НЕФТЯНОЙ ИНСТИТУТ КАФЕДРА ИНФОРМАТИКИ КУРСОВАЯ РАБОТА ПО ДИСЦИПЛИНЕ «

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2019 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ