Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРАКТИКА 2, 9, 16.doc
Скачиваний:
3
Добавлен:
28.09.2019
Размер:
301.57 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Государственное образовательное учреждение

высшегопрофессионального образования

"Донской государственный технический университет"

ДГТУ

Кафедра "Программное обеспечение вычислительной техники и

автоматизированных систем"

Утверждаю

Зав. каф. «ПОВТ и АС»

Нейдорф Р. А.

«____»____________20__ г.

Пояснительная записка

к работепо дисциплине

"Учебная практика"

Автор работы Шпай Андрей Олегович

Направление 231000 "Программная инженерия"

Обозначение работы Группа ВПР 11

Руководитель работы Золотых О. А._

(подпись) (Ф.И.О.)

Работа защищена

(дата) (оценка)

Члены комиссии

(Подпись) (Ф.И.О.)

(Подпись) (Ф.И.О.)

Ростов–на–Дону

2012г.

МИНИСТЕРСТВО образованиЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Государственное образовательное учреждение

высшего профессионального образования

"Донской государственный технический университет"

ДГТУ

Кафедра “Программное обеспечение вычислительной техники и

автоматизированных систем”

Утверждаю

Зав. каф. «ПОВТ и АС»

Нейдорф Р. А.

«____»____________20 __ г.

Задание

на работу по дисциплине

"Учебная практика"

Студент Шпай Андрей Олегович Группа ВПР11

Тема: Обработка структурированных типов данных

Срок выполнения работы с__ 2012 года по ____ 2012 года___

Исходные данные “Задание на выполнение работы”

Руководитель работы Золотых О. А.

(подпись) (Ф.И.О.)

Задание принял к исполнению Шпай А.О.

(подпись) (Ф.И.О.)

Содержание

  1. Аннотация 4

  2. Условие задачи 5

  3. Краткая теория 5

  4. Блок-схемы 6

  5. Код программы 14

6. Скриншоты 17

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

Используемая литература 21

Аннотация

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

Условие задачи

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

Краткая теория

Метод "пузырька"

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

  • если встречается более "легкий" (с меньшим значением) элемент, то они меняются местами;

  • при встрече с более "тяжелым" элементом, последний становится "эталоном" для сравнения, и все следующие сравниваются с ним .

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

Записи

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

record    список полей    список методов end

Описание процедур и функций

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

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

Описание процедуры имеет вид:

procedure имя(список формальных параметров); раздел описаний begin   операторы end;

Описание функции имеет вид:

function имя(список формальных параметров): тип возвращаемого значения; раздел описаний begin   операторы end;

Главная процедура, вызывающая другие процедуры из списка

Процедура создания базы данных

Процедура вывода базы данных на экран

Процедура, меняющая элементы базы данных местами

Процедура добавления записи

Процедура сортировки методом «пузырька»

Процедура удаления записи

Процедура поиска записи в базе данных по наименованию диска

program diski;

uses

crt;

type

spisok = record

vt: string;

nm: integer;

dvm: string;

no: integer;

end;

procedure Sozd(var mas: array of spisok; qty: integer);//создание массива

var

i: integer;

zk: spisok;

begin

setlength(mas, qty);

for i := 0 to high(mas) do

begin

write('Наименование диска: ');

readln(zk.vt);

write('Цена: ');

readln(zk.nm);

write('Производитель: ');

readln(zk.dvm);

write('Количество на складе: ');

readln(zk.no);

writeln;

mas[i].vt := zk.vt;

mas[i].nm := zk.nm;

mas[i].dvm := zk.dvm;

mas[i].no := zk.no;

end;

end;

procedure vyvod(mas: array of spisok);//вывод массива

var

i: integer;

begin

writeln('================================================================');

writeln('№| Наименование диска| Цена | Производитель | Количество на складе');

writeln('================================================================');

for i := 0 to high(mas) do

begin

write(i);

write(' ');

write(mas[i].vt);

write(mas[i].nm:22);

write(mas[i].dvm:16);

write(mas[i].no:15);

writeln;

writeln('=================================================================');

end;

end;

procedure swap(var x, y: string);//процедура замены элементов местами

var

t: string;

begin

t := x;

x := y;

y := t

end;

procedure sort(mas: array of spisok);//сортировка

var

i, j: integer;

begin

for j := 1 to high(mas) do

for i := 0 to high(mas) - j do

if (mas[i].nm > mas[i + 1].nm) and (mas[i].nm <> 0) then

begin

swap(mas[i].nm, mas[i + 1].nm);

swap(mas[i].vt, mas[i + 1].vt);

swap(mas[i].dvm, mas[i + 1].dvm);

swap(mas[i].no, mas[i + 1].no);

end;

vyvod(mas);

end;

procedure add(var mas:array of spisok);//добавление элемента

begin

setlength(mas, length(mas) + 1);

write('Наименование диска: ');

readln(mas[high(mas)].vt);

write('Цена: ');

readln(mas[high(mas)].nm);

write('Производитель: ');

readln(mas[high(mas)].dvm);

write('Количество на складе: ');

readln(mas[high(mas)].no);

writeln;

end;

procedure delete(var mas:array of spisok);//удаление записи

var

n: integer;

begin

writeln('Введите номер записи для удаления');

readln(n);

if (n <= high(mas)) then

begin

mas[n].vt := '';

mas[n].nm := 0;

mas[n].dvm := '';

mas[n].no := 0;

end;

swap(mas[n].nm, mas[high(mas)].nm);

swap(mas[n].vt, mas[high(mas)].vt);

swap(mas[n].dvm, mas[high(mas)].dvm);

swap(mas[n].no, mas[high(mas)].no);

setlength(mas, length(mas) - 1);

vyvod(mas);

end;

procedure poisk( mas:array of spisok);//поиск по наименованию

var

i: integer;

name: string;

begin

writeln('Введите название для поиска');

readln(name);

for i := 0 to high(mas) do

begin

if name = mas[i].vt then

begin

writeln('Совпадение по Наименованию');

writeln('=========================================================');

writeln('Наименование диска | Цена | Производитель | Количество на складе');

writeln('=========================================================');

write(mas[i].vt);

write(mas[i].nm:24);

write(mas[i].dvm:12);

write(mas[i].no:15);

writeln;

writeln('=========================================================');

end;

end;

end;

Procedure main();

var

z, mt: integer;

mas: array of spisok;

label 10;

begin

clrscr;

10:

writeln();

writeln('1-Создать новый список');

writeln('2-Вывести на экран текущий список');

writeln('3-Удалить выбранный элемент');

writeln('4-Добавление записи');

writeln('5-Поиск по текущему списку');

writeln('6-Сортировка по цене');

writeln('7-выход');

readln(z);

if (mt = 0) and (z in [2..6]) then

begin

Writeln('Создайте базу данных для начала');

sozd(mas, mt);

end;

if (mt = 0) and (z = 1) then

begin

writeln('Введите количество элементов списка');

readln(mt);

end;

case z of

1: begin

writeln('введите количество элементов');

readln(mt);

sozd(mas, mt);

end;

2: vyvod(mas);

3: delete(mas);

4: add(mas);

5: poisk(mas);

6: sort(mas);

7: EXIT;

end;

goto 10;

readln;

end;

begin

main();

end

Вывод созданной базы данных на экран. Был указан размер – 5. Соответственно база данных содержит 5 записей.

Поиск записей в базе данных по наименованию диска. Был запрос наименование «Кен» - найдено две записи, содержащие данное наименование.

Через процедуру «4-добавление записи», была добавлена запись с наименованием «ГОР».

После этого была выведена база данных.

После выбора процедуры «6-сортировка по цене», записи были отсортированы по цене в порядке её возрастания. Запись с наименьшей ценой стоит в начале базы данных, с наибольшей – в конце.

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

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

  1. Ошибки при попытке указать цену или количество дисков на складе в виде буквенной записи

  1. Ошибка переполнения массива базы данных происходит если ввести большое количество элементов базы. Подобная ошибка возникает и в разделах «цена» и «кол-во на складе»

Использованные источники:

1.http://ru.wikipedia.org/wiki/Pascal

2.http://www.vzmakh.ru/info/pascal/modules/page14.html

3. http://ru.wikipedia.org/wiki/%D0%91%D0%BB%D0%BE%D0%BA- %D1%81%D1%85%D0%B5%D0%BC%D0%B0

21