Студенческий сайт КФУ - ex ТНУ » Учебный раздел » Учебные файлы »ПРОГРАММИРОВАНИЕ

Программирование на языке delphi

Тип: отчет по практике
Категория: ПРОГРАММИРОВАНИЕ
Скачать
Купить
Понятие вложенных циклов, одномерных и двумерных массивов в программировании. Матрицы и основные действия с ними. Иерархические записи, понятие дерева. Операции с двоичными деревьями, рекурсия, включение и удаление узла. Алгоритм поиска по дереву.
Краткое сожержание материала:

Размещено на

Размещено на

УПРАВЛЕНИЕ ОБРАЗОВАНИЯ ГОРОДА АЛМАТЫ

ЦЕНТРАЛЬНОАЗИАТСКИЙ ТЕХНИКО-ЭКОНОМИЧЕСКИЙ

КОЛЛЕДЖ

ОТЧЕТ

по учебной практике №2

по программированию

Выполнил студент:

Белоусов Т.

специальность 1304000

квалификация 1304053

группа ТЗИ2Б

Проверил преподаватель:

Наумов В.В.

Алматы 2011

СОДЕРЖАНИЕ

Введение

1 Общая часть

1.1 Вложенные циклы

1.2 Одномерные массивы

1.3 Матица

1.3.1 Двумерные массивы

1.3.2 Комбинированные типы данных

1.4 Иерархические записи

1.5 Оператор выбора

1.6 Циклы с параметрами

1.7 Циклы с предусловием

1.8 Циклы с постусловием

2 Специальная часть

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

2.1.1 Таблица идентификаторов

2.1.2 Блок-схема алгоритма № 1

2.1.3 Контрольный пример № 1

2.1.4 Листинг программы № 1

2.2 Постановка задачи № 2

2.2.1 Таблица идентификаторов

2.2.2 Блок-схема алгоритма № 2

2.2.3 Контрольный пример № 2

2.2.4 Листинг программы № 2

2.3 Постановка задачи № 3

2.3.1 Таблица идентификаторов

2.3.2 Блок-схема алгоритма № 3

2.3.3 Контрольный пример № 3

2.3.4 Листинг программы № 3

2.4 Постановка задачи № 4

2.4.1 Таблица идентификаторов

2.4.2 Блок-схема алгоритма № 4

2.4.3 Контрольный пример № 4

2.4.4 Листинг программы № 4

2.5 Постановка задачи № 5

2.5.2 Блок-схема алгоритма № 5

2.5.3 Контрольный пример № 5

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

2.6 Постановка задачи № 6

2.6.1 Таблица идентификаторов

2.6.2 Блок-схема алгоритма № 6

2.6.3 Контрольный пример № 6

2.6.4 Листинг программы № 6

Заключение

Список литературы

1.Общая часть

1.1 Вложенные циклы

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

Полное число исполнений тела внутреннего цикла не превышает произведения числа итераций внутреннего и всех внешних циклов. Например взяв три вложенных друг в друга цикла, каждый по 10 итераций, получим 10 исполнений тела для внешнего цикла, 100 для цикла второго уровня и 1000 в самом внутреннем цикле.

Одна из проблем, связанных с вложенными циклами -- организация досрочного выхода из них. Во многих языках программирования есть оператор досрочного завершения цикла (break в Си, exit в Турбо Паскале, last в Perl и т. п.), но он, как правило, обеспечивает выход только из цикла того уровня, откуда вызван. Вызов его из вложенного цикла приведёт к завершению только этого внутреннего цикла, внешний же цикл продолжит выполняться. Проблема может показаться надуманной, но она действительно иногда возникает при программировании сложной обработки данных, когда алгоритм требует немедленного прерывания в определённых условиях, наличие которых можно проверить только в глубоко вложенном цикле.

Решений проблемы выхода из вложенных циклов несколько.

Простейший -- использовать оператор безусловного перехода goto для выхода в точку программы, непосредственно следующую за вложенным циклом. Этот вариант критикуется сторонниками структурного программирования, как и все конструкции, требующие использования goto. Некоторые языки программирования, например, Модула-2, просто, не имеют оператора безусловного перехода, и в них подобная конструкция невозможна.

Альтернатива -- использовать штатные средства завершения циклов, в случае необходимости устанавливая специальные флаги, требующие немедленного завершения обработки. Недостаток -- усложнение кода, снижение производительности без каких-либо преимуществ, кроме теоретической «правильности» из-за отказа от goto.

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

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

Наконец, существуют специальные языковые средства для выхода из вложенных циклов. Так, в языке Ада программист может пометить цикл (верхний уровень вложенного цикла) меткой, и в команде досрочного завершения цикла указать эту метку. Выход произойдёт не из текущего цикла, а из всех вложенных циклов до помеченного, включительно.

1.2 Одномерные массивы

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

ТИП имя_переменной[] ;

Здесь ТИП задает базовый тип массива. Базовый тип определяет тип данных каждого из элементов, составляющих массив. Таким образом, базовый тип массива определяет тип данных, которые будет содержать массив. Например, следующий оператор объявляет массив month_days, имеющий тип "массив элементов типа int":

int roonth_days[];

Хотя это объявление утверждает, что month_days -- массив переменных, в действительности никакого массива еще не существует. Фактически значение массива month_ days установлено равным null, которое представляет массив без значений. Чтобы связать month_days с реальным физическим массивом целочисленных значений, необходимо с помощью операции new распределить память и присвоить ее массиву month_days.

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

переменная_массива = new тип [размер] ;

тип определяет тип данных, для которых резервируется память, размер указывает количество элементов в массиве, а переменная_массива -- переменная массива, связанная с массивом. То есть, чтобы использовать операцию new для распределения памяти, потребуется указать тип и количество элементов, для которых нужно зарезервировать память. Элементы массива, для которых память была выделена операцией new, будут автоматически инициализированы нулевыми значениями. Следующий оператор резервирует память для 12-элементного массива целых значений и связывает их с массивом month_days.

month_days = new int[12];

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

Подведем итоги: создание массива -- двухступенчатый процесс. Во-первых, необходимо объявить переменную нужного типа массива. Во-вторых, с помощью операции new необходимо распределить память для хранения массива и присвоить ее переменной массива. Таким образом, в Java все массивы являются динамически распределяемыми. Если вы еще не знакомы с концепцией динамического распределения памяти, не беспокойтесь. Этот процесс будет...

Другие файлы:

Delphi. Программирование на языке высокого уровня
Книга посвящена Delphi 7 Studio. Здесь изложены как приемы программирования в среде Delphi, ее главные составные части — галереи компонентов, хранилищ...

Программирование линейных алгоритмов на языке Delphi
Исследование особенностей разработки линейных алгоритмов и их реализации в среде Delphi. Составление тестов для проверки программы. Характеристика осн...

Разработка алгоритмов и программирование различных вычислительных процессов на языке Delphi
Решение задач с помощью языка программирования Delphi: вычисление значения функции Y от X; систем двух уравнений; прогрессий; последовательностей; выч...

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

Программирование баз данных в Delphi
Курс посвящен программированию локальных, клиент-серверных и распределенных (многоуровневых) баз данных в среде разработки программ Borland Delphi.Дан...