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

Описание алгоритма решения задачи по вычислению суммы элементов строк матрицы с использованием графического способа. Детализация укрупненной схемы алгоритма и разработка программы для решения задачи в среде Turbo Pascal. Листинг и тестирование программы.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 19.06.2014
Размер файла 446,0 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

17

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

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

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

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

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

НА ТЕМУ:

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

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

группы 13-11

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

Мохова О.М.

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

ОГЛАВЛЕНИЕ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Массивы, положение элементов в которых описывается двумя индексами, называются двумерными. Структура такого массива может быть представлена прямоугольной матрицей. Каждый элемент матрицы однозначно определяется указанием номера строки и столбца, номер строки - 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;

a:array [1..15, 1..4] of integer;

b: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 do

begin

for j:= 1 to n do begin

a[i, j]:= random(21)-1;

write(a[i, j]:4);

end;

writeln;

end;

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

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

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

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

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

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

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

k:= 0;

for i:= 1 to m do

begin

s:= 0; g:= 0;

for j:= 1 to n do

begin

s:= s+a[i, j];

if a[i, j]<0 then g:= g+1 ;

end;

if g=1 then

begin

k:= k+1;

b[k]:= s;

end;

end;

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

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

While условие do S;

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

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

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

for i:= 1 to k do

write(b[i]:4);

writeln;

for i:= 1 to k do

begin

x:= b[i];

j:= i-1;

while (j>0) and (x<b[j]) do

begin

b[j+1]:= b[j];

j:= j-1;

end;

b[j+1]:= x;

end;

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

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

for i:= 1 to k do

write(b[i]:4);

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

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

program Nas;

uses crt;

const m = 15; n= 4;

var

i, j, k, g, x, s: integer;

a: array [1..15, 1..4] of integer;

b: array [1..1000] of integer;

begin

clrscr;

randomize;

writeln(' 1) Создаём массив размерностью (' ,m, '*' ,n, ')' );

for i:= 1 to m do

begin

for j:= 1 to n do begin

a[i, j]:= random(21)-1;

write(a[i, j]:4);

end;

writeln;

end;

k:= 0;

for i:= 1 to m do

begin

s:= 0; g:= 0;

for j:= 1 to n do

begin

s:= s+a[i, j];

if a[i, j]<0 then g:= g+1 ;

end;

if g=1 then

begin

k:= k+1;

b[k]:= s;

end;

end;

if k=0 then

writeln(' В массиве нет строк, в которых есть только один отрицательный элемент ' )

else

begin

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

for i:= 1 to k do

write(b[i]:4);

writeln;

for i:= 1 to k do

begin

x:= b[i];

j:= i-1;

while (j>0) and (x<b[j]) do

begin

b[j+1]:= b[j];

j:= j-1;

end;

b[j+1]:= x;

end;

writeln(' 2) Отсортированный массив по заданному условию ' );

for i:= 1 to k do

write(b[i]:4);

end;

readln ;

end.

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

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

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

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

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

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

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

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

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

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

Размещено на Allbest.ru


Подобные документы

  • Решения задачи графическим и программным способами. Описание алгоритма решения графическим способом, укрупненная схема алгоритма. Ввод элементов двумерного массива, вывод преобразованного массива, разработка программы на языке pascal, листинг программы.

    курсовая работа [115,5 K], добавлен 22.05.2010

  • Описание алгоритма решения задачи графическим способом. Вывод элементов массива. Описание блоков укрупненной схемы алгоритма на языке Pascal. Листинг программы, а также ее тестирование. Результат выполнения c помощью ввода различных входных данных.

    контрольная работа [150,4 K], добавлен 03.05.2014

  • Разработка программы на языке Pascal. Описание переменных. Действия, которые должна выполнить программа согласно выбранного алгоритма. Детализация графической части программы. Листинг и тестирование программы. Вывод массива данных на экран монитора.

    контрольная работа [360,4 K], добавлен 13.06.2012

  • GetMatrDop как процедура определяет значение элемента транспонированной матрицы дополнений. Знакомство с этапами разработки в среде Turbo Pascal программы сортировки элементов, находящихся на главной диагонали матрицы. Особенности тестирования программы.

    курсовая работа [780,4 K], добавлен 20.11.2014

  • Разработка алгоритма поставленной задачи по обработке числовой информации в среде Turbo Pascal 7.0 с базовым языком программирования Pascal, отладка программы, реализующей разработанный алгоритм. Описание структуры программы, ее вспомогательных процедур.

    курсовая работа [668,0 K], добавлен 25.02.2010

  • Разработка эскизного и технического проектов программы "Helpopr" (ввод, хранение и вывод данных на дисплей по запросу пользователя). Язык программирования Turbo Pascal. Описание алгоритма программы. Требования к компьютеру и программному обеспечению.

    курсовая работа [198,1 K], добавлен 03.02.2010

  • Разработана программа решения двух задач на языке программирования Turbo Pascal. Спецификация задания. Описание входных и выходных данных. Математическая постановка задачи. Алгоритм ее решения. Описание и блок-схема программы. Результаты тестирования.

    курсовая работа [275,8 K], добавлен 28.06.2008

  • Основы работы на языке высокого уровня Turbo Pascal. Основное оборудование и программное обеспечение. Операторы, необходимы для работы в графической среде Turbo Pascal. Запуск графического режима. Текст программы в графической среде Turbo Pascal.

    лабораторная работа [12,7 K], добавлен 14.05.2011

  • Особенности поиска среднеарифметического значения элементов массива. Общая характеристика проблем разработки в среде Turbo Pascal программы упорядочивания массива по возрастанию. Рассмотрение основных этапов разработки программы на языке PASCAL.

    курсовая работа [896,7 K], добавлен 18.05.2014

  • Описание алгоритма решения задачи графическим способом. Ввод элементов исходного массива в цикле. Нахождение определённых элементов. Сортировка элементов с помощью пузырькового метода. Разработка программы на языке Pascal. Поиск наибольшего элемента.

    лабораторная работа [123,5 K], добавлен 15.01.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.