
- •Кодирование числовой, текстовой, графической и др. Информации. Языки программирования высокого уровня.
- •Динамические структуры данных; списки: основные виды и способы реализации. Технологии программирования. Способы конструирования программ.
- •Классификация динамических структур данных
- •Добавление звена в начало списка
- •Удаление звена из начала списка
- •Добавление звена в произвольное место списка, отличное от начала (после звена, указатель на которое задан)
- •Удаление звена из произвольного места списка, отличного от начала (после звена, указатель на которое задан)
Добавление звена в начало списка
{Процедура
добавления звена в начало списка; в x
содержится добавляемая информация}
Procedure V_Nachalo(Var First : U; X : BT);
Var Vsp : U;
Begin
New(Vsp);
Vsp^.Inf := X;
Vsp^.Next := First; {То звено, что было заглавным, становится вторым по счёту}
First := Vsp; {Новое звено становится заглавным}
End;
Удаление звена из начала списка
{Процедура удаления звена из начала списка; в x содержится информация из удалённого звена}
Procedure Iz_Nachala(Var First : U; Var X : BT);
Var Vsp : U;
Begin
Vsp := First; {Забираем ссылку на текущее заглавное звено}
First := First^.Next; {То звено, что было вторым по счёту, становится заглавным}
X := Vsp^.Inf; {Забираем информацию из удаляемого звена}
Dispose(Vsp); {Уничтожаем звено}
End;
Добавление звена в произвольное место списка, отличное от начала (после звена, указатель на которое задан)
{Процедура добавления звена в список после звена, на которое ссылается указатель Pred; в x содержится информация для добавления}
Procedure V_Spisok(Pred : U; X : BT);
Var Vsp : U;
Begin
New(Vsp); {Создаем пустое звено}
Vsp^.Inf := X; {Заносим информацию}
Vsp^.Next := Pred^.Next; {Теперь это звено ссылается на то, что было следом за звеном Pred}
Pred^.Next := Vsp; {Теперь новое звено встало вслед за звеном Pred}
End;
Удаление звена из произвольного места списка, отличного от начала (после звена, указатель на которое задан)
{Процедура удаления звена из списка после звена, на которое ссылается указатель Pred; в x содержится информация из удалённого звена}
Procedure Iz_Spiska(Pred : U; Var X : BT);
Var Vsp : U;
Begin
Vsp := Pred^.Next; {Забираем ссылку на удаляемое звено}
{Удаляем звено из списка, перенаправив ссылку на следующее за ним звено}
Pred^.Next := Pred^.Next^.Next;
X := Vsp^.Inf; {Забираем информацию из удаляемого звена}
Dispose(Vsp); {Уничтожаем звено}
End;
Проверка, пуст ли список
Function Pust(First : U) : Boolean;
Begin
Pust := First = Nil
End;
Очистка списка
Procedure Ochistka(Var First: U);
Var Vsp : BT;
Begin
While Not Pust(First) Do Iz_Nachala(First, Vsp)
End;
Печать списка
Procedure Print(First : U);
Var Vsp : U;
Begin
Vsp := First;
While Vsp <> Nil Do
Begin
Write(Vsp^.Inf : 6);
Vsp := Vsp^.Next
End; WriteLn
End;
Технологии программирования
Программирование означает конструирование и формулирование программ, т. е. алгоритмов, записанных на языке, понятном ЭВМ. Технологией программирования называют совокупность методов и средств, используемых в процессе разработки программного обеспечения. Технология программирования представляет собой набор технологических инструкций, включающих:
указание последовательности выполнения технологических операций;
перечисление условий, при которых выполняется та или иная операция;
описания самих операций, где для каждой операции определены исходные данные, результаты, а также инструкции, нормативы, стандарты, критерии и методы оценки и т. п.
Кроме набора операций и их последовательности, технология также определяет способ описания проектируемой системы, точнее модели, используемой на конкретном этапе разработки.
Различают технологии, используемые на конкретных этапах разработки (для решения отдельных задач этих этапов) и технологии, охватывающие несколько этапов (весь процесс разработки). В основе первых, как правило, лежит ограниченно применимый метод, позволяющий решить конкретную задачу. В основе вторых обычно лежит базовый метод или подход (парадигма), определяющий совокупность методов, используемых на разных этапах разработки.
Исторически в развитии программирования можно выделить несколько принципиально отличающихся методологий. Изначально понятие технологии как таковой — это 60-е годы прошлого столетия — это период "стихийного" программирования. В этот период отсутствовало понятие структуры программы, типов данных и т.д. Вследствие этого код получался запутанным, противоречивым. Выход из этого кризиса — переход к структурной парадигме программирования. Структурный подход к программированию представляет собой совокупность рекомендуемых технологических приемов, охватывающих выполнение всех этапов разработки программного обеспечения. В основе структурного подхода лежит декомпозиция (разбиение на части) сложных систем с целью последующей реализации в виде отдельных небольших подпрограмм. С появлением других принципов декомпозиции (объектного, логического и т.д.) данный способ получил название процедурной декомпозиции. Структурный подход требовал представления задачи в виде иерархии подзадач простейшей структуры. Одновременно вводились ограничения на конструкции алгоритмов, рекомендовались формальные модели их описания, а также специальный метод проектирования алгоритмов — метод пошаговой детализации. Среди наиболее известных языков этой группы: PL/1, ALGOL-68, Pascal, С.
Вследствие дальнейшего роста сложности и размеров разрабатываемого программного обеспечения в языках появляется возможность определения пользовательских типов данных. Одновременно усилилось стремление разграничить доступ к глобальным данным программы, чтобы уменьшить количество ошибок. В результате появилась и стала развиваться технология модульного программирования. Модульное программирование предполагает выделение групп подпрограмм, использующих одни и те же глобальные данные, в отдельно компилируемые модули (библиотеки подпрограмм), например, модуль графических ресурсов. Связи между модулями при использовании данной технологии осуществляются через специальный интерфейс, в то время как доступ к реализации модуля (телам подпрограмм и некоторым "внутренним" переменным) запрещен. Эту технологию поддерживают современные версии языков Pascal и С (C++), языки Ада и Modula.
Объектно-ориентированное программирование (ООП) определяется как технология создания сложного программного обеспечения, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного типа (класса), а классы образуют иерархию с наследованием свойств. Взаимодействие программных объектов в такой системе осуществляется путем передачи сообщений. Основным достоинством объектно-ориентированного программирования по сравнению с модульным программированием является "более естественная" декомпозиция программного обеспечения, которая существенно облегчает его разработку. Кроме этого, объектный подход предлагает новые способы организации программ, основанные на механизмах наследования, полиморфизма, композиции, наполнения. Эти механизмы позволяют конструировать сложные объекты из сравнительно простых. Бурное развитие технологий программирования, основанных на объектном подходе, позволило решить многие проблемы. Так были созданы среды, поддерживающие визуальное программирование, например, Delphi, C++ Builder, Visual C++ и т. д. При использовании визуальной среды у программиста появляется возможность проектировать некоторую часть, например, интерфейсы будущего продукта, с применением визуальных средств добавления и настройки специальных библиотечных компонентов. Результатом визуального проектирования является заготовка будущей программы, в которую уже внесены соответствующие коды.
Способы конструирования программ
Псевдокод — это искусственный и неформальный язык, который помогает программисту разрабатывать алгоритмы. Псевдокод подобен разговорному языку. Программы на псевдокоде не могут выполняться на компьютере. Их назначение — помочь программисту «обдумать программу» прежде, чем попытаться написать ее на языке программирования. Псевдокод включает только исполняемые операторы — те, которые выполняются, когда программа переведена из псевдокода на язык программирования.
Блок-схема — это графическое представление алгоритма или фрагмента алгоритма. Блок-схема рисуется с использованием специальных символов, таких, как прямоугольники, ромбы, овалы и малые окружности; эти символы соединяются стрелками, называемыми линиями связи. Подобно псевдокоду блок-схемы часто используются при разработке и описании алгоритмов, хотя большинство программистов предпочитает псевдокод. Блок-схемы наглядно показывают, как действуют управляющие структуры.
Нисходящее проектирование – подход к проектированию программ, при котором первоначально создается главный модуль, для которого затем проводится декомпозиция (разбиение на модули, решающие подзадачи главной задачи).
Метод нисходящего проектирования предполагает последовательное разложение общей функции обработки данных на простые функциональные элементы ("сверху-вниз"). В результате строится иерархическая схема, отражающая состав и взаимоподчиненность отдельных функций.
Возможно данные способы конструирование перечислять не придется, хватит тех, что описаны в технологии программирования.
Либо нужно сказать способы записи алгоритмов, которые перечислены в вопросе: Алгоритм и его свойства, способы записи алгоритма.....
Обозначения
прпорило – программный код
прпорпрд – неуверенность в правильности написанного (но вроде верно!)
олололол – пояснение, чтобы вспомнить
прапороо – существенное примечание