Основы алгоритмизации и программирования

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    2,28 Мб
  • Опубликовано:
    2013-02-17
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Основы алгоритмизации и программирования

Министерство образования Республики Беларусь

УО "Полоцкий государственный университет"

Радиотехнический факультет

Кафедра информационных технологий

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

Основы алгоритмизации и программирования











Новополоцк 2012

Задание


1. Вычислить сумму ряда с точностью e=10-4

. В вещественной матрице Snхm последний элемент каждой строки заменить суммой положительных элементов этой строки. Конкретные размеры матрицы ввести (n, m≤10).

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

. Текст состоит из слов, отделенных одним или несколькими пробелами. Слово - последовательность любых символов кроме пробела. Напечатать самое короткое слово текста, не содержащее заданного символа.

. Создать файл, содержащий сведения об ассортименте игрушек в магазине. Каждая запись содержит поля: название игрушки, цена, количество, возрастные границы. На экран и в отдельный файл вывести: названия игрушек, которые подходят детям от 3 до 5 лет; стоимость самой дорогой игрушки и ее наименование; название игрушки, которая по стоимости не превышает Х рублей и подходит ребенку в возрасте от А до В лет. Значения Х, А и В вводятся с клавиатуры. Программа должна выполнять следующие дополнительные функции: создание новой базы данных; открытие базы из файла; сохранение базы в файл; добавление записей; удаление записей; поиск записей по одному из полей; сортировку по одному из полей методом, указанным в задаче 3; вывод базы данных на экран; выход из программы. Для реализации основных действий алгоритма использовать подпрограммы. Для обработки записей реализовать динамическую структуру данных стек.

Введение


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

Язык Паскаль относится к процедурно-ориентированным языкам высокого уровня.

Достоинства языка Паскаль:

−       относительная простота (т.к. разрабатывался с целью обучения программированию);

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

−       гибкие возможности в отношении используемых структур данных;

−       высокая эффективность программ;

−       наличие средств повышения надежности программ, включающих контроль правильности использования данных различных типов и программных элементов на этапах трансляции, редактирования и выполнения.

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

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

Цели курсовой работы:

−       разработка программ согласно заданию курсовой работы;

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

1. Решение задачи № 1

 

1.1 Постановка задачи


Вычислить сумму ряда с точностью e=10-4 .

Результат должен отображаться на экране.

 

1.2 Математическая формулировка задачи и выбор метода обработки информации


Для вычисления результата нам требуется ввести значения x и N (количество дробей). Фактически каждая дробь представлена в виде ±, где i - счетчик цикла. Знак перед дробью можно вычислить по следующей формуле: (-1) i+1.

 

1.3 Форма представления исходных данных


Исходные данные представлены в следующем виде:,s,a: real;,fact,x: integer;

т.е. i - счетчикцикла, fact - факториал, s - суммаряда, e - точностьвычисления,x - входнойпараметр, a - значение члена ряда.

 

1.4 Разработка алгоритма и его описание


На рисунке 1.1 представлена блок-схема алгоритма решения задачи. Рассмотрим ее работу подробнее.

После запуска программы с клавиатуры вводятся x. Далее переменнымi, s, fact, e, априсваиваются начальные значения. Далее вычисляется выражение исходя из формулы и определяется знак. Счетчик наращивается при каждом обороте цикла и результат выводится на экран.

Рисунок 1.1 - Блок-схема алгоритма решения задачи №1

 

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

,s,a: real;,fact,x: integer;('Введите x: ');(x);: =0.0001; // точность

// для решения используем цикл с предусловием, определяем значения

// очередного члена ряда (а) и суммы (S) при i=1.: =1;: =1;: =1;: = ( (i+1) *power (x, i)) /fact;>edo // пока значение очередного члена ряда >e: = ( (i+1) *power (x, i)) /fact; // считаемочереднойчленряда: =fact*i; // факториал(i); // увеличиваем на 1 n: = (S+a) * (-1); // считаем сумму;('Сумма=',S: 0: 4);.

 

1.6 Инструкция по эксплуатации программы


Запустить файл program 1.34. pas через среду разработки Pascal ABC, выполнить и ввести значение x.

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

1.7 Результаты проведенных расчетов и их анализ


Рисунок 1.2 - Результат работы программы

Как видно из рисунка 1.2, на экран выводится сумма ряда с точностью e=10-4, как и требовалось по условию.

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

2. Решение задачи №2


2.1 Постановка задачи


В вещественной матрице Snхm последний элемент каждой строки заменить суммой положительных элементов этой строки. Конкретные размеры матрицы ввести (n, m≤10).

 

2.2 Математическая формулировка задачи и выбор метода обработки информации


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

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

 

2.3 Форма представления исходных данных


Исходные данные представлены в следующем виде:,m, i,j,s: integer;: array [1.11,1.11] ofinteger;- двумерный массив размерностью до 10 элементов включительно, nи m - введённая и фактическая размерность массива, i и j - счетчики цикла, s-сумма положительных элементов строки.

 


2.4 Разработка алгоритма и его описание


На рисунке 2.1 представлена блок-схема алгоритма решения задачи. Рассмотрим ее работу подробнее.

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

Рисунок 2.1 - Блок-схема алгоритма решения задачи №2

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


program _a2;,m, i,j,s: integer;: array [1.11,1.11] of integer;;(n);(m);i: =1 to n doj: =1 to m do[i,j]: =random (10) - 2;i: =1 to n do: =0;j: =1 to m do(a [i,j] >0) then s: = s + a [i,j];(a [i,j],' ');;[i,n]: =s;(' s=',s);;;;i: =1 to n doj: =1 to m do write (a [i,j],' ');;;.

 

2.6 Инструкция по эксплуатации программы


Запустить файл program2.18. pas через среду разработки Pascal ABC, выполнить и ввести размерность матрицы.

 

2.7 Результаты проведенных расчетов и их анализ


Результат выполнения программы изображен на рисунке 2.2 при введенной размерности матрицы 5 на 5.

Рисунок 2.2 - Результат работы программы

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

3. Решение задачи №3


3.1 Постановка задачи


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

 

3.2 Математическая формулировка задачи и выбор метода обработки информации


Для работы программы нам потребуется двухмерный массив целых чисел, а также необходимо ввести его размерность mxn. По условию задачи сортировку в матрице будем проводить в подпрограмме MetPrVstBar методом прямых вставок с барьером (ПрВстБар). Для того чтобы сократить количество сравнений, производимых нашей программой, дополним сортируемый массив нулевой компонентой (это следует сделать в разделе описаний var) и будем записывать в нее поочередно каждый вставляемый элемент. В тех случаях, когда вставляемое значение окажется меньше, чем a [1], компонента a [0] будет работать как "барьер", не дающий индексу j выйти за нижнюю границу массива.

Кроме того, компонента a [0] может заменить собою и дополнительную переменную х.

 

3.3 Форма представления исходных данных


Исходные данные для основной программы представлены в следующем виде:=20;a: array [1. nmax,0. nmax] of integer;,m, i,j,l: byte;,b: integer;

где nmax - максимальное количество строк, a - массим с размерностью mxn, m и n - размерность матрицы, i, j и l - счетчики цикла, sm - сумма элементов строки, b - вспомогательная переменная для сортировки строк.

Исходные данные для подпрограммы сортировки:: integer; {счетчик цикла}

 

3.4 Разработка алгоритма и его описание


На рисунке 3.1 изображена блок-схема сортировки данных методом прямых вставок в барьером.

На рисунке 3.2 представлена блок-схема алгоритма решения задачи. Рассмотрим ее работу подробнее.

Рисунок 3.1 - Блок-схема сортировки методом прямых вставок в барьером

Рисунок 3.2 - Блок-схема алгоритма решения задачи №3

 

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


constnmax=20;a: array [1. nmax,0. nmax] of integer;,m, i,j,l: byte;,b: integer;

{вычисление сумм четных положительных в строках

и запись их в дополнительный столбец}i: =1 to m do: =0;j: =1 to n do[i,j]: =random (20);: =sm+a [i,j];;[i,n+1]: =sm;;;('Исходный массив: ');('Сумма': (n*4+8));i: =1 to m doj: =1 to n+1 doj=n+1 then write (a [i,j]: 6)write (a [i,j]: 4);;;

{перестановка в столбцах по возрастанию}l: =1 to m do MetPrVstBar;

{перестановка строк по возрастанию сумм (по последнему столбцу) }i: =1 to m-1 dol: =i+1 to m doa [i,n+1] >a [l,n+1] thenj: =1 to n+1 do: =a [i,j];[i,j]: =a [l,j];[l,j]: =b;;;('Отсортированный по возрастанию: ');('Сумма': (n*4+8));i: =1 to m doj: =1 to n+1 doj=n+1 then write (a [i,j]: 6)write (a [i,j]: 4);;;.

 

3.6 Инструкция по эксплуатации программы


Запустить файл program 3.28. pas через среду разработки Pascal ABC, выполнить и ввести размерность матрицы.

 

3.7 Результаты проведенных расчетов и их анализ


Логика работы программы подробно описана в пункте "Разработка алгоритма и его описание", поэтому сразу приведем результаты тестирования.

Рисунок 3.3 - Результат работы программы

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

4. Решение задачи №4


4.1 Постановка задачи


Текст состоит из слов, отделенных одним или несколькими пробелами. Слово - последовательность любых символов кроме пробела. Напечатать самое короткое слово текста, не содержащее заданного символа

 

4.2 Математическая формулировка задачи и выбор метода обработки информации


Для работы программы нам потребуется строка слов, разделённых произвольным количеством пробелов. Разбирая эту строку, каждое слово будем записывать в массив A. Далее, просматривая каждый элемент массива А, будем искать слово без введенного символа, как только мы найдём первое слово, удовлетворяющее нашему условию, его длину будем считать минимальной min, и запомним его индекс. Далее массив слов будем просматривать заново и длину слов без заданного символа сравнивать с min, если какое-то слово окажется меньше по длине, чем min, то запомним его индекс и перепишем переменную min.

 

4.3 Форма представления исходных данных


Исходные данные представлены в следующем виде:, n, index, j, min: integer;, slovo,sim: string;: array [1.100] of string;: boolean;

где i и j - счетчики цикла, n - количество слов в строке, index - переменная целого типа для хранения индекса слова наименьшей длины, min - наименьшая длина слова, st - введённая строка символов, slovo - строка, хранящая слово, A - одномерный массив размерностью 100 элементов для хранения слов из строки, flag - переменная логического типа, используется при поиске слов без введенного символа, sim - введенный символ.

 

4.4 Разработка алгоритма и его описание


На рисунке 4.1 представлена блок-схема алгоритма решения задачи. Рассмотрим ее работу подробнее.

Рисунок 4.1 - Блок-схема алгоритма решения задачи №4

Вводим символ, который не будет содержать слово. Вводим строку. Задаются значения переменных i: =1, slovo: =' ', n: =0. Далее пока выполняется условие i<=length (st) проверяется st [i] <> ' ' и если это так, то опять идёт проверка условия i=length (st). Если это так, то значение n увеличивается на единицу, A [n]: =slovo+st [i] и slovo: = ' '. А если условие не выполняется, то slovo: =slovo+st [i]. Далее если условие не выполняется, то идёт проверка условия (i<>1) и (st [i] = ' ') и (st [i-1] <>' '). Если оно верно, то n увеличивается на единицу, A [n]: =slovo и slovo: = ' '. После этого увеличиваем i на 1 и продолжаем проверять условие. Когда полностью закончится цикл прохождения по строке, то выведем A [i] на экран. Далее циклически просматриваются все элементы массива A, каждый из них записывается в строку st и переменной flag присваиваем true. После этого начинаем сравнивать все элементы текущего слова с символом введенным с клавиатуры. Как только найдём первое такое слово, переменной flag присваиваем false. Далее если flag=true, то min: =length (st) и index: =i, а если нет, то переходим к следующему слову в массиве А. В блоках проверяется, если введенного символа в нем нету, то такое слово выводится на экран и его длина сравнивается с минимальной. Если она меньше min, то переписываются значения min и index. Таким образом мы нашли слово минимальной длины и в блоке выводим само это слово и его длину. После чего программа завершается.

 

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

;, n, index, j, min: integer;, slovo,sim: string;: array [1.100] of string;: boolean;('Введите исключающий слово символ: ');(sim);('Введитестроку: ');(st);: =1; slovo: =''; n: =0;(i<=length (st)) do(st [i] <>' ') then(i=length (st)) then(n);[n]: =slovo+st [i];: ='';: = slovo+st [i];(i<>1) and (st [i] =' ') and (st [i-1] <>' ') then(n);[n]: =slovo;: ='';;(i);;;('Слова: ');i: =1 to n do(A [i]);i: =1 to n do: =A [i];: =true;j: =1 to length (st) do[j] =sim then: =false;;;;flag=true then: =length (st);: =i;;;;;('Словабеззаданногосимвола: ');i: =1 to n do: =A [i];: =true;j: =1 to length (st) do[j] =sim then: =false;;;;flag=true then(st);length (st) <min then: =length (st);: =i;;;;;('Самое короткое слово текста, не содержащее "',sim,'" - ', A [index], ', его длина - ', min);.

 

4.6 Инструкция по эксплуатации программы


Запустить файл program4.59. pas через среду разработки Pascal ABC, выполнить. Ввести исключаемый из слов символ и ввести строку.

 

4.7 Результаты проведенных расчетов и их анализ


Логика работы программы подробно описана в пункте "Разработка алгоритма и его описание", поэтому сразу приведем результаты тестирования.

Рисунок 4.2 - Результат работы программы

 

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


5. Решение задачи №5


5.1 Постановка задачи


Создать файл, содержащий сведения об ассортименте игрушек в магазине. Каждая запись содержит поля: название игрушки, цена, количество, возрастные границы. На экран и в отдельный файл вывести: названия игрушек, которые подходят детям от 3 до 5 лет; стоимость самой дорогой игрушки и ее наименование; название игрушки, которая по стоимости не превышает Х рублей и подходит ребенку в возрасте от А до В лет. Значения Х, А и В вводятся с клавиатуры. Программа должна выполнять следующие дополнительные функции: создание новой базы данных; открытие базы из файла; сохранение базы в файл; добавление записей; удаление записей; поиск записей по одному из полей; сортировку по одному из полей методом, указанным в задаче 3; вывод базы данных на экран; выход из программы. Для реализации основных действий алгоритма использовать подпрограммы. Для обработки записей реализовать динамическую структуру данных стек.

 

5.2 Математическая формулировка задачи и выбор метода обработки информации


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

Для реализации из условия будет взята структура данных стек.

 


5.3 Форма представления исходных данных


Исходные данные представлены в следующем виде:

В основной части:, toy2: PToy;: string;, SMIndex: Integer; // Индекс нажатой в меню кнопки, выбранного в подменю индекса: File of RToy;,N,A,B, kolvo: Integer;

Где A и B - возрастные границы, X - максимальная цена, S - название игрушки, N - количество игрушек.

В дополнительном модуле:= ^RToy;= record: String; // Названиеигрушки: Real; // Ценаигрушки: Integer; // Наименованиеигрушки, MaxAge: Integer; // Возрастныеграницы: PToy;;

 

5.4 Разработка алгоритма и его описание


После выполнения алгоритма пользователю должно выводиться меню с основными функциями программы (Таблица 1).

Следует отметить, что вся работа программы построена на вызове подпрограмм (процедур и функций) и передачи им указателей, необходимых для корректной работы программы. Так, в подпрограмме menuвыводятся поля основного меню и на основе нажатия пользователем определённой клавиши анализируется, что должна делать программа. Основные действия программы при нажатии клавиш приведены в таблице 1.

Таблица 1. Основные действия программы

Нажатие на клавишу

Действие

0

Выводится основное задание и записывается в файл: названия игрушек, которые подходят детям от 3 до 5 лет; стоимость самой дорогой игрушки и ее наименование; название игрушки, которая по стоимости не превышает Х рублей и подходит ребенку в возрасте от А до В лет. Значения Х, А и В вводятся с клавиатуры

1

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

2

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

3

Вызов подпрограммы WriteDBToFile, которая сохраняетбазу данных вместе с демо-данными, заложенными в программе. Пользователем вводится полный путь к базе данных с указанием имени файла и формата.

4

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

5

Вызов подпрограммы del, удаляющей элемент из стека.

6

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

7

Сортировка выполнена аналогично поиску в виде подпрограмм. Метод сортировки был выбран согласно условия из задачи 3: сортировка прямыми вставками с барьером. Сортировка выполняется по следующим полям: названию, цене и количеству.

8

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

9

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


Рисунок 5.1 - Блок-схема основного модуля программы

Рисунок 5.2 - Блок-схема подпрограммы menu, главное меню программы

Рисунок 5.3 - Блок-схема подпрограммы submenu, выводящей дополнительное меню для поиска и сортировки

Рисунок 5.4 - Блок-схема подпрограммы write All вывода всех записей на экран

Рисунок 5.5 - Блок-схема подпрограммы make null создание начального элемента стека

Рисунок 5.6 - Блок-схема подпрограммы Set Head ставящий элемент стека в начало списка

Рисунок 5.7 - Блок-схема подпрограммы init создающей нумерацию с 1

Рисунок 5.8 - Блок-схема подпрограммы GetByNumber, получаемый элемент с определенным номером

Рисунок 5.9 - Блок-схема подпрограммы del, удаление элемента с определенным номером

Рисунок 5.10 - Блок-схема подпрограммы post Toy, поиск по названию

Рисунок 5.11 - Блок-схема подпрограммы Make New DBFile, создание новой базы данных

Рисунок 5.12 - Блок-схема подпрограммы InsertSortByName, сортировка по названию

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

Главная часть

programshop;;, toy2: PToy;: string;, SMIndex: Integer; // Индекснажатойвменюкнопки, выбранноговподменюиндекса: File of RToy;,N,A,B, kolvo: Integer;menu;('Выберитепункт: ');();(' 0. Основное задание');(' 1. Создание новой базы данных');(' 2. Открытие базы из файла');(' 3. Сохранение базы в файл');(' 4. Добавление записи');(' 5. Удаление записи');(' 6. Поиск записи');(' 7. Сортировка');(' 8. Вывод всей базы данных на экран');(' 9. Выход из программы');();;Submenu (i: integer);();(' 0. Названию');(' 1. Цене');(' 2. Количеству');i = 0 then(' 3. Возрасту');();;(list: PToy);list<> nil do(' Название: ', list^. Name);(' Цена: ', list^. Price);(' Возраст: от ', list^. MinAge, ' до ', list^. MaxAge);(' Количество: ', list^. KolVo);;: =list^. next;;;(list: RToy);(' Название: ', list. Name);(' Цена: ', list. Price);(' Возраст: от ', list. MinAge, ' до ', list. MaxAge);(' Количество: ', list. KolVo);;;

// Подготовка начальной базы данных(toy);(toy2);(toy^, 'Кукла', 100, 3, 4,5);(toy2^, 'СпайдерМен', 150, 5, 14,12);(toy2^, toy);(toy2^, 'Плюшевыймедведь', 120, 3, 5,8);(toy2^, toy);(toy2^, 'Радиоуправляемаямашинка', 1500, 12, 18,3);(toy2^, toy);;(mIndex);mIndex of

:;('Введите стоимость и возрастные границы');(x,a,b);

// Игрушки для детей от 3х до 5-ти лет: =posByAge (toy, 3,5);('Игрушки, подходящие детям в возрасте от 3 до 5-ти лет: ');toy2<> nil do(' ',toy2^. Name);: =toy2^. next;;

// Самая дорогая игрушка('Самаядорогаяигрушка: ', mostExpensive (toy));

// игрушки, которые по стоимости не превышают Х рублей и подходят ребенку в возрасте от А до В лет.: =posByAge (toy, a, b);: ='';toy2<>nil dotoy2^. price<=X then: =s+toy2^. Name+chr (13);: =toy2^. next;;('Игрушки, которые по стоимости не превышают ', x,'рублей и подходят ребенку в возрасте от ', a,' до ', b,' лет: ');length (s) >0 then(' ', s)('Отсутствуют');;

:('Введитепуть');(s);not MakeNewDBFile (s, toy) then('При записи новой базы данных произошла ошибка')('База данных успешно создана');;

:('Введитепуть');(s);(s, toy) then(toy)('При чтении базы данных произошла ошибка');;

:('Введитепуть');(s);(s, toy);;

:('Введите название игрушки');(s);('Введите стоимость игрушки');(X);('Введите возрастные границы');(A, B);('Введите количество игрушек');(kolvo);('Введите номер');(N);(toy2);(toy2);(toy2^, s, x,a, b, kolvo);(toy2^, n, toy);;

:('Введитеномер');(N);(N, toy);;

:('Искатьпо: ');(0);(SMIndex);of

:('Введитеназвание');(s);: =posToy (toy, s);;

:('Введитецену');(x);: =posByPrice (toy, x);;

:('Введитеколичество');(KolVo);: =posByKolVo (toy, KolVo);;

:('Введите возрастные границы');(A,B);: =posByAge (toy, a, b);;;(toy2);;

:('Сортировать по: ');(1);;(smindex);of

: insertsortbyname (toy,toy);

: insertsortbyprice (toy,toy);

: insertsortbykolvo (toy,toy);;;

:('Список всех игрушек: ');(toy);;

: break;;false;.

Дополнительный модуль

unitUShop;= ^RToy;= record: String; // Названиеигрушки: Real; // Ценаигрушки: Integer; // Наименованиеигрушки, MaxAge: Integer; // Возрастныеграницы: PToy;;

// Создает начальный элемент списка(var L: PToy);

// Ставит элемент в начало списка(x1: RToy; varlist: PToy);

// Вставляет элемент х1 на место pos в списке list

// Нумерацияэлементовсединицыins (x1: RToy; pos: Integer; varlist: PToy);

// Из списка list получить элемент с номером num(list: PToy; num: integer): PToy;

// Удалить из списка list элемент с номером posdel (pos: Integer; varlist: PToy);

// Перегруженные процедуры инициализации игрушки(var R: RToy);(var R: RToy; n: String; p, min, max, kol: Integer);

// Функциипоискаигрушки(U: PToy; name: String): Ptoy; // Поимени(U: PToy; min, max: Integer): PToy; // Повозрасту(U: PToy; p: Integer): PToy; // Поцене

// Поискименисамойдорогойигрушки(u: PToy): String;

// Создатьновуюбазуданных(Dir: String; U: Ptoy): Boolean;

// СчитатьсписокизБД(Dir: String; var u: PToy): Boolean;

// Сохранитьстеквбазуданных(Dir: String; u: PToy);(var p: PToy; f: PToy);(var p: PToy; f: PToy);(var p: PToy; f: PToy);disposing (var u: PToy);(u: PToy): integer;(var R: RToy);. Name: ='Toy';. Price: =0;. MinAge: =0;. MaxAge: =100;. KolVo: =0;;(var L: PToy);(L);^. next: = NIL;(l^);;(x1: RToy; varlist: PToy);: PToy;(u);. next: =nil;^: =x1;^. next: =list;: =u;;(var R: RToy; n: String; p, min, max, kol: Integer);. Name: =n;. Price: =p;. MinAge: =min;. MaxAge: =max;. KolVo: =kol;;(list: PToy; num: integer): PToy;: PToy;: integer;(u);: =list;i: =2 to num do: =u^. next;;: =u;;INS (x1: RToy; pos: Integer; varlist: PToy);, x: PToy;= 1 then(x1, list);;;(u);(x);: =GetByNumber (list, pos-1);^: =x1;^. next: =u^. next;^. next: =x;;del (pos: Integer; varlist: PToy);= 1 then: =list^. next(list, pos-1) ^. next: =GetByNumber (list, pos+1);;(U: PToy; name: String): Ptoy;: PToy;(res);: =nil;u<> nil do(lowercase (name), lowercase (u^. Name)) >0 then(u^, res);: =u^. next;;: =res;;(U: PToy; min, max: Integer): PToy;: PToy;(res);: =nil;u<> nil do(u^. MinAge<= min) and (u^. MaxAge>= max) then(u^, res);: =u^. next;;: =res;;(U: PToy; p: Integer): PToy;: PToy;(res);: =nil;u<> nil do(u^. Price=p) then(u^, res);: =u^. next;;: =res;;(U: PToy; p: Integer): PToy;: PToy;(res);: =nil;u<> nil do(u^. KolVo=p) then(u^, res);: =u^. next;;: =res;;(u: PToy): String;: Real;: =-maxint;u<> nil do^. Price> max then: =u^. Price;: =u^. Name;;: =u^. next;;;(Dir: String; U: Ptoy): Boolean;: file of RToy;not CanCreateFile (dir) then: =False;;;(f1, Dir);(f1);(f1);: =true;;disposing (var u: PToy);: ptoy;(p);not (u^. next=nil) do: =u^. next;(u);: =p;;(p);: =nil;;reverse (var list: PToy);: Ptoy;(list^, u);^. next: =nil;: =list^. next;list<> nil do(list^, u);: =list^. next;;: =u;;(Dir: String; var u: PToy): Boolean;: Rtoy;: file of RToy;not FileExists (dir) then: =False;;;(u);(f1, Dir);(f1);not eof (f1) do(f1, r);(r, u);;(u);: =true;(f1);;(Dir: String; u: PToy);: file of RToy;(f1, Dir);(f1);not (u = nil) do(f1, u^);: =u^. next;;(f1);;(u: PToy): integer;: integer;: =0;u<>nil do(i);: =u^. next;;: =i;;swap (var r1,r2: PToy);: RToy;: PToy;: =r1^;: =r1^. next;^: =r2^;^. next: =p;: =r2^. next;^: =x;^. next: =p;;(var p: PToy; f: PToy);: pToy;: RToy;: = p^. next;t <> nil then^. price>t^. price then(p, t);(f, f)(p^. next, f);;(var p: PToy; f: PToy);: pToy;: RToy;: = p^. next;t <> nil then^. Name>t^. Name then(p, t);(f, f)(p^. next, f);;(var p: PToy; f: PToy);: pToy;: RToy;: = p^. next;t <> nil thenp^. KolVo> t^. KolVo then(p, t);(f, f)(p^. next, f);;.

 

5.6 Инструкция по эксплуатации программы


Запустить файл program5.6 pas через среду разработки Pascal ABC, выполнить и следовать действия в соответствии меню (цифра перед каждым пунктом соответствует вводу цифры для выполнения команды).

 

5.7 Результаты проведенных расчетов и их анализ


Логика работы программы подробно описана в пункте "Разработка алгоритма и его описание", поэтому сразу приведем результаты тестирования. На рисунках 5.5-5.25 приведена работа программы и описана с помощью поясняющих подписей к рисункам.

Рисунок 5.5 - Главное меню программы

Рисунок 5.6 - Открытие базы данных из файла и вывод на экран

Рисунок 5.7 - Добавление новой записи

Рисунок 5.8 - Вывод Отсортированного списка по названию

Рисунок 5.9 - Поиск по цене

Рисунок 5.10 - Сохранение базы данных в файл

Заключение


В результате выполнения работы было разработано 5 программ различного уровня: на вычисление суммы ряда, обработку одномерных массивов, обработку матриц, работу с файлами и структурой данных "стек". Все они были разработаны в среде PascalABC. Для каждого задания приведён листинг программы, блок-схема алгоритма, дано словесное описание логики работы, а также скриншоты - результаты тестирования программ на работоспособность. При написании программ соблюдены все предъявленные к ним требования, касающиеся функциональности.

Курсовая работа выполнена в полном объеме, в соответствии с вариантом задания.

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

Литература


1.      Д.М. Ушаков, Т.А. Юркова. Паскаль для школьников. - СПб.: Питер. 2010. - 256 с.: ил.

2.      А.И. Марченко, Л.А. Марченко. Программирование в среде TurboPascal 7.0/ Марченко А.И., Марченко Л. А.: Под ред. Тарасенко В.П. - 9 - е изд. - К.: ВЕК +, Спб.: КОРОНА - Век, 2007. - 464 с., ил.

3.      Иллюстрированный самоучитель по Delphi 7 для начинающих библиотека на http://lib. xost.ru <http://lib.xost.ru>.

.        Грызлов В.И., Грызлова Т.П. Турбо Паскаль 7.0. - М.: "ДМК", 2000. - 416с.

.        ЗуевЕ.А. TurboPascal. Практическое программирование. - Приор, 1997. - 336с.

.        Федоренко Ю. Алгоритмы и программы на Турбо Паскале

.        Фаронов В.В. Turbo Pascal 7.0. Начальный курс. - Нолидж, 1998. - 620 с.

Похожие работы на - Основы алгоритмизации и программирования

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!