Динамические структуры данных. Стеки.



Мы поможем в написании ваших работ!


Мы поможем в написании ваших работ!



Мы поможем в написании ваших работ!


ЗНАЕТЕ ЛИ ВЫ?

Динамические структуры данных. Стеки.



 

Динамические структуры данных

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

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

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

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

Стеки

Стек – это частный случай однонаправленного списка, добавление элементов в который и выборка из которого выполняются с одного конца, называемого вершиной стека. Другие операции со стеком не определенны. При выборке элемент исключается из стека. Говорят, что стек реализует принцип обслуживания LIFO (последним пришел – первым ушел). Стек проще всего представить себе как закрытую с одного конца узкую трубу, в которую бросают мячи. Достать первый брошенный мяч можно только после того, как вынуты все остальные. Кстати, сегмент стека назван так именно, потому, что память под локальные переменные выделяется по принципу LIFO. Стеки широко применяются в системном программном обеспечении, компиляторах, в различных рекурсивных алгоритмах.

Строковые константы.

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

Пример:

"Ура заработала"

" "

Кроме того, допускаются «многострочные» строковые константы. В исходном тексте многострочные константы могут задаваться двумя способами:

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

Пример:

Стр = "Первая строка" // пример строковой константы

"Вторая строка"

"Третья строка";

· Второй вариант: В данном примере значение константы полностью идентично предыдущему примеру. Отличие заключается в том, что каждая отдельная составляющая не замыкается кавычками, а на каждой последующей строке помещен символ переноса строки "|". В этом варианте комментарии между открывающей и закрывающей кавычками не допускаются.

Пример:

Стр = "Первая строка

|Вторая строка

|Третья строка";

Строковые выражения

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

Пример:

Стр = СокрП("Фамилия" + ", " + Имя + ", " + " отчество");

Стр1 = "" + Докум.Цена + Валюта.СокрНаим;

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

Строковая переменная - это последовательность символов с динамической длиной, и постоянным максимальным размером в диапазоне от 1 до 255.

Строковый тип, объявленный без максимального размера имеет размер 255.

Строковые константы записываются в одинарных кавычках, например:

'Turbo Pascal' 'That''s all'

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

Со строковыми типами могут использоваться следующие операторы: + = = Стандартная функция Length возвращает динамическую длину строки.

 

44. Динамическая память.

 

Типы переменных с плавающей точкой.

Переменные с плав точкой

К переменным типа float и double обращаются либо для обработки чисел с дробной частью, либо при необходимости выполнения операций над очень большими или очень малыми числами. Типы float и double различаются значением наиб(наим) числа, которые можно хранить с помощью переменных этих типов. Обычно тип double позволяет хранить число приблизительно в 10 раз превышающее значение типа float. Чаще всего в профессиональных программах испол-ся тип double. Дело в том что большинство математич.функций из с++-библиотеки исп-ют double-значения. Тип long double позволяет работать с очень большими или очень маленькими числами.

 

Перечисляемый тип.

 

Перечисляемые типы

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

 

Переменные и константы.

Переменные константы.

Константы в отличие от переменных не могут изменяться программой. Записыв-ся они по правилам:

· вещественные константы можно записать в обычной форме используя «.» для разделения целой и вещественной части.

· Целочисленные конст-ты можно записать в десятичной или 16ричной системе исчисления.

· символьные конст-ты записыв-ся в одинарных кавычках.

· Строковые константы записыв-ся в двойных кавычках.

Конст-ты можно определить одним из следующ способов:

· непосредственно записать в выражении

· с помощью ключевого слова const (const Long=5)

· с помощюь дир-вы препроцессора #define(#define Long 5) дир-ва заменяет каждое появление символов Long на 5

48. Особенности конструкции if … else.

Условный оператор if

Условный оператор if используется для разветвления процесса вычислений на два направления.

Сначала вычисляется выражение, которое может иметь арифметический тип или тип указателя. Если оно не равно нулю выполняется первый оператор иначе – второй. После этого управление передается на оператор, следующий за условным.

Одна из ветвей может отсутствовать, логичнее опускать вторую ветвь вместе с ключевым словом else.если в какой-либо ветви требуется выполнить несколько операторов, их необходимо заключить в блок иначе компилятор не сможет понять, где заканчивается ветвление. Блок может содержать любые операторы, в том числе описания и другие условные операторы. Необходимо учитывать что переменная, описанная в блоке, вне блока не существует.

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

Если какая-либо переменная используется только внутри условного оператора, рекомендуется объявить ее внутри скобок, например:

If (int I = fun(t)) a -=I; else a +=I;

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



Последнее изменение этой страницы: 2016-08-15; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.235.227.117 (0.013 с.)