Создание списков в языке Паскаль

Заказать уникальную курсовую работу
Тип работы: Курсовая работа
Предмет: Программирование
  • 42 42 страницы
  • 20 + 20 источников
  • Добавлена 16.08.2012
1 000 руб.
  • Содержание
  • Часть работы
  • Список литературы
  • Вопросы/Ответы
ОГЛАВЛЕНИЕ
ВВЕДЕНИЕ
1.Языки программирования высокого уровня
1.1.Основные понятия и определения
1.2.Наиболее распространенные языки программирования
1.3.Обоснование выбора языка Паскаль
2.Основные понятия, связанные со списками в языке Паскаль
2.1.Общее представление о типах данных в языке Паскаль
2.2.Указатели
2.3.Динамические структуры данных
3.Списки в Паскале
3.1.Основные понятия списка в языке Паскаль
3.2.Виды списков
3.3.Операции над списками
3.3.1.Создание списка
3.3.2.Добавление элементов
3.3.3.Удаление элементов
3.3.4.Поиск элемента
3.3.5.Создание ведущего (заглавного) звена
4.Практическая реализация создания списка в Паскаль
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
ПРИЛОЖЕНИЕ 1

Фрагмент для ознакомления

Программа включает три процедуры реализации линейного списка: добавление нового элемента на указанное место в списке, удаление элемента с указанным номером из списка, просмотр содержимого списка. Специальное действие также реализовано с помощью отдельной процедуры.
Процедура добавления: процедуре по ссылке передается ссылка на начало списка. Также передается номер, на котором должен оказаться новый элемент, и значение элемента. Создается новый элемент, его значением становится передаваемый процедуре аргумент. Если ссылка на начало равна nil или передаваемый номер элемента равен единице, тогда элемент вставляется на первое место. В противном случае список проходится в цикле либо до нахождения нужного номера, либо до конца списка. Элемент вставляется на найденное место с соответствующей модификацией ссылок.
Процедура удаления: процедуре передается номер удаляемого элемента и (по ссылке) ссылка на начало списка. Если список не пуст, то выполняются следующие действия. Если номер удаляемого равен 1, то модифицируется ссылка на начало, если нет, то список проходится в цикле, либо до нахождения соответствующего номера, либо до конца списка. Если номер удаляемого находится в пределах списка, то соответствующий элемент удаляется с высвобождением памяти и модификацией ссылки на этот элемент.
Процедура просмотра: Список просто проходится в цикле до конца с выводом каждого элемента.
Специальная процедура: сначала список проходится в цикле с подсчетом количества элементов. Если размер списка меньше чем переданное процедуре количество удаляемых элементов, то ничего не происходит, если меньше, то опять в цикле происходит последовательное удаление элементов с высвобождением памяти, ссылка на начало после этого будет указывать на (k+1) элемент.
Основная программа: реализуется в виде меню. В цикле предлагается ввести число, соответствующее вышеперечисленным процедурам. Цикл завершается, если введен ноль, означающий конец программы. Вначале программа создает список, т.е. присваивает ссылке на начало значение nil.
Описание основных переменных и констант приведено в таблице 1.

Таблица 1
Описание основных переменных и констант
Имя Тип Назначение Основная программа: pn link Ссылка на начало списка. arg integer Значение нового элемента. m integer Переменная меню. Подпрограммы: Neo, ind link Ссылочные переменные употребляются для прохода списка. i integer Счетчик цикла.
Входными и выходными данными являются целые значения элементов.
Тестовые примеры: программа протестирована на всевозможные действия над списком, в том числе и некорректные, например, удаление элемента из пустого списка или с номером, превышающим размер списка (смотри рисунок 20).

Рис. 20. Тестирование программы
ЗАКЛЮЧЕНИЕ
При выполнении работы были получены теоретические знания и практические навыки по работе со списками.
На первом этапе выполнения работы был проведен обзор литературных источников по теме работы: «Создание списков в Паскаль». Основными изученными изданиями были книги, написанные Немнюгиным С.А., Поповым В. и Павловской Т.А. Книги описывают программирование на языке высокого уровня Паскаль. Содержат подробное изложение языка программирования. Описание списков содержится в главах посвященных динамическим структурам данных языка Паскаль. Изучение литературы позволило сформировать структуру работы (план изложения материала), выделить основные главы, определить этапы изучения вопроса создания списков в Паскаль.
Список это динамическая структура. В практике программирования вместо любой статической структуры можно использовать динамическую структуру, но делать это нужно осторожно. Переменные простых типов занимают меньше памяти, чем указатель на них. При динамическом распределении памяти увеличивается объем текста программы, снижается наглядность и быстродействие.
Однако в ряде случаев использование динамических структур оказывается более эффективным, чем статических, а иногда и единственно возможной реализацией поставленной задачи. Обработка больших массивов данных с неопределенным размером вот пример такой задачи. Или сортировка большого объема информации тоже окажется более эффективной с использованием динамических структур.
Правильный выбор способа организации данных во многом определяет быстродействие программы, расход памяти, что характеризует качество программного продукта. Поэтому данному вопросу программист уделяет особое внимание.
Для того чтобы создать список в Паскаль, был изучен синтаксис языка, структура написания программы на языке Паскаль, изучены основные типы данных используемые в языке. В первой главе работы были определены основные понятия, связанные со списками в Паскаль.
Изучение типов данных позволило представить иерархию типов данных в структурированном виде. Более подробно описан специфический тип указатели. Определен синтаксис описания, особенности данного типа. Данный тип используется при создании списков.
В работе описаны основные понятия, связанные с динамическими структурами данных. Выявлены основные особенности такого рода организации данных. Определены основные цели использования такой организации данных. Определено что список является динамической структурой или как еще его называют в некоторых изданиях абстрактный тип данных. Приведен синтаксис описания динамической структуры. Определены виды динамических структур. Определены основные направления использования динамических структур.
В литературе и электронных ресурсах приведено большое количество примеров использования списков, операции со списками для решения разного рода задач. Отдельная глава работы посвящена описанию основных приемов работы со списками: создание списков, добавление элемента, удаление элементов, поиск элемента. В графическом виде продемонстрированы некоторые операции. В работе продемонстрированы фрагменты кодов реализации этих операций. На основе этого материала была создана программа, описанная в главе практической реализации.
Теоретические знания по теме списков позволили реализовать программу с создание списка в Паскаль. Результат работы программы это создание списка, добавление в него элементов, удаление из него элементов, удаление сразу нескольких элементов. Написанная программа протестирована на весь функционал. При выполнении практической части произошло полезное ознакомление с механизмом работы динамических структур, которые позволяют создавать структуры данных, ограниченных по размеру только объемом оперативной памяти. Полезно было бы дополнить эту работу реализацией процедуры сохранения списков в файлах и их обратного преобразования в динамику.
Выполнение работы было интересным и полезным. Полученные знания будут обязательно использованы в практике программирования на языка Паскаль для решения разного рода задач.

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
Андреева Т. А Программирование на языке Pascal. – М.: Бином. Лаборатория знаний, 2006. – 240 с.
Ахо А., Хопкрофт Дж., Ульман Дж. Структуры данных и алгоритмы / Пер. с англ. – М.: Вильямс, 2001.- 384 с.
Вирт Н. Алгоритмы и структуры данных. - 2-е изд. - СПб: “Невский Диалект”, 2001. - 352 с.
Климова Л. М. Pascal 7.0.Практическое программирование. Решение типовых задач. Изд. 4-е,доп. М: КУДИЦ-ОБРАЗ, 2003. - 528 с.
Культин Н. Turbo Pascal в задачах и примерах. - СПб.: БХВ-Петербург, 2006. - 256 с.
Малыхина М. П. Программирование на языке высокого уровня Turbo Pascal. - СПб.: БХВ-Петербург, 2006. - 544 с.
Моргун А. Н. Программирование на языке Паскаль (Pascal). Основы обработки структур данных. — М.: Диалектика, 2005. - 576 с.
Немнюгин С.А. Turbo Pascal. – СПб.: Питер, 2000. - 496 с.
Павловская Т.А. Паскаль. Программирование на языке высокого уровня: Учебник для вузов. – СПб.: Питер, 2007. - 393 с.
Попов В.Б. Паскаль и Дельфи. Самоучитель. – СПб.: Питер, 2004. - 544 с.
Рапаков Г. Г. Программирование на языке Pascal. - СПб.: БХВ-Петербург, 2004. - 480 с.
Стивене Р. Delphi. Готовые алгоритмы. - 2-е изд., стер.: Пер. с англ. Мерещука П. А. - М.: ДМК Пресс ; - СПб.: Питер, 2004. - 384 с.
Сухарев М. Turbo Pascal 7.0. Теория и практика программирования. – СПб.: Наука и техника, 2006. - 544 с.
Фаронов В.В. Delphi: Программирование на языке высокого уровня: Учебник для вузов. - СПб.: Питер, 2007. - 640 с.
Фаронов В.В. Turbo Pascal. - СПб.: БХВ-Петербург, 2004. - 1056 с.
Федоренко Ю. Алгоритмы и программы на Turbo Pascal. Учебный курс.. – СПб.: Питер, 2001. - 240 с.
Домнин Ф. А. Язык программирования Паскаль(Turbo Pascal). Обучающие уроки – 2009. – 28 декабря [Электронный ресурс]. URL: http://www.life-prog.ru/view_zam.php?id=32&cat=1&page=2 (дата обращения: 16.05.2012).
Васильев Н.А. Краткая справка по языку программирования Turbo Pascal. – 2004. [Электронный ресурс]. URL: http://forprogrammer.narod.ru/pascal/index.htm (дата обращения: 16.05.2012).
Язык Паскаль. Динамические структуры данных. – 2011. – 2 июля [Электронный ресурс]. URL: http://pas1.ru/dynamicstructures (дата обращения: 16.05.2012).
Динамические структуры данных в Паскаль. – 2011. – 3 августа [Электронный ресурс]. URL: http://the-programmer.ru/publ/pascal/obuchenie_pascal/dinamicheskie_struktury_dannykh_v_pascal/7-1-0-157 (дата обращения: 16.05.2012).

ПРИЛОЖЕНИЕ 1
Создание линейного списка в Паскаль
program Spisok;
type
link = ^kom;
kom = record
ini : integer;
next : link;
end;
var
pn : link;
arg, j, m : integer;

procedure add(var n : link; x, num:integer);
var
neo, ind : link;
i : integer;
begin
new(neo);
neo^.ini:=x;
if n=nil then begin
n:= neo;
neo^.next:=nil;
end
else if num=1 then begin
neo^.next:=n;
n:= neo;
end
else begin
i:=0;
ind:= n;
while (i<>num-2) and (ind^.next<>nil) do begin
i:= i+1;
ind:= ind^.next;
end;
neo^.next:=ind^.next;
ind^.next:= neo;
end;
end; { add }

procedure del(var n : link; num:integer);
var
neo, ind : link;
i : integer;
begin
if n<>nil then begin
if num=1 then begin
neo:=n;
n:=n^.next;
dispose(neo);
end
else begin
i:=0;
ind:=n;
while (i<>num-2) and (ind^.next<>nil) do begin
i:=i+1;
ind:=ind^.next;
end;
if ind^.next<>nil then begin
neo:=ind^.next;
ind^.next:=neo^.next;
dispose(neo);
end;
end;
end;
end; { del }

procedure veiw(n : link);
var
ind : link;
i : integer;
begin
ind:=n;
i:=0;
if ind=nil then writeln ('List is empty')
else begin
writeln; writeln('The list is');
while ind<>nil do begin
i:=i+1;
writeln(i,') ',ind^.ini);
ind:=ind^.next;
end;
end;
end; { veiw }

procedure spec(var n : link; num:integer);
var
ind : link;
i : integer;
begin
i:=0;
ind:=n;
while ind<>nil do begin
i:=i+1;
ind:=ind^.next;
end;
if i else begin
i:=0;
while i<>num do begin
i:= i+1;
ind:=n;
n:=n^.next;
dispose(ind);
end;
end;
end; { spec }

begin
pn:=nil;
m:=1;
while m<>0 do begin
writeln; writeln;
writeln('Type "1" to ADD new element to the list');
writeln('Type "2" to DELETE element from the list');
writeln('Type "3" to VEIW the list');
writeln('Type "4" to DELETE first k-elements');
writeln('Type "0" to exit program');
writeln;
readln(m);
case m of
1 : begin
write('Enter new element : ');
readln(arg);
write('Enter place : ');
readln(j);
add(pn,arg,j);
end;
2 : begin
write('Enter number of the element : ');
readln(j);
del(pn,j);
end;
3 : begin
veiw(pn);
end;
4 : begin
writeln('Enter number of elements : ');
readln(j);
spec(pn,j);
end;
end; { case }
end;
end.



42

20

Вопрос-ответ:

Какие языки программирования считаются языками высокого уровня?

К языкам программирования высокого уровня относятся, например, Java, C++, Python, C#, JavaScript и другие.

Почему был выбран язык Паскаль для создания списков?

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

Каким образом в Паскале представлены типы данных?

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

Что такое указатели в Паскале и как они связаны со списками?

Указатели в Паскале это переменные, которые хранят адреса ячеек памяти. Они позволяют нам работать с динамическими структурами данных, такими как списки. В списке каждый элемент хранит значение и указатель на следующий элемент списка.

Какой тип данных используется для создания списков в Паскале и как их создать?

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

Какие языки программирования высокого уровня существуют?

Языки программирования высокого уровня включают в себя такие языки, как C++, Java, Python, Ruby и многие другие. Они отличаются от языков низкого уровня тем, что предоставляют более абстрактный уровень абстракции и позволяют программистам работать на более высоком уровне абстракции.

Какие основные понятия и определения применяются в языках программирования высокого уровня?

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

Почему язык Паскаль был выбран для создания списков?

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

Какие понятия связаны со списками в языке Паскаль?

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

Какие языки программирования высокого уровня существуют?

Среди языков программирования высокого уровня наиболее распространены языки, такие как C++, Java, Python, JavaScript. Каждый из этих языков имеет свои особенности и области применения.

Почему выбран язык Паскаль для создания списков?

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