Рефераты. Обучение решению задач из раздела "Основы алгоритмизации и программирования"

p align="left">1) описание и детализация решения задачи на алгоритмическом языке;

2) переход от алгоритмических конструкций к конкретному языку программирования.

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

2.3 Базовый набор структур и построение алгоритмов на их основе

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

1) последовательная (линейная) структура;

2) ветвящаяся структура;

3) циклическая структура.

Наиболее простыми для понимания и использования являются линейные структуры. Линейным называется алгоритм (фрагмент алгоритма), в котором отдельные предписания выполняются в естественном порядке (в порядке записи) независимо от значений исходных данных и промежуточных результатов [3, c. 9].

Алгоритм может быть реализован в ЭВМ, если он содержит только элементарные предписания. Такими элементарными, т.е. не требующими детализации, можно считать следующие предписания или операции:

1) начало, конец;

2) список данных;

3) ввод, вывод;

4) вычислительные операции, реализуемые оператором присваивания.

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

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

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

В циклических алгоритмах выполнение некоторых операторов (групп операторов) осуществляется многократно с одними и теми же или модифицированными данными.

Циклические алгоритмы часто называют циклами. В зависимости от способа организации числа повторений различают три типа циклов:

1) цикл с заданным условием продолжения работы (цикл-пока);

2) цикл с заданным условием окончания работы (цикл-до);

3) цикл с заданным условием повторений работы (цикл с параметром).

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

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

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

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

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

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

3. Особенности языка программирования Pascal ABC

3.1 Типы данных в языке Pascal ABC

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

Паскаль является языком жесткой типизации. Это означает, что тип переменной определяется при ее описании и не может быть изменен. Переменная может участвовать только в операциях, определенных ее типом. Такой подход способствует большей аккуратности и ответственности при составлении программы, делает их поддающимися автоматической (при компиляции) проверке на корректность и в конечном итоге приводит к более высокой надежности создаваемых программ [1, c. 237].

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

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

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

Процедурные типы в некотором отношении расширяют традиционное понятие подпрограмм, позволяя обращаться с подпрограммами как с переменными [3, c. 8].

Несколько особняком стоят объектные типы, или объекты. Являясь, с формальной точки зрения, обобщением комбинированных типов (записей), они позволяют радикально изменить подход к разработке программ, предлагая так называемый объектно-ориентированный стиль программирования.

Простые типы: порядковые, вещественные, дата-время.

Порядковый тип в свою очередь делится на:

1. целые типы;

2. логический тип или булевский тип;

3. символьный тип;

4. перечисляемые типы;

5. ограниченные типы или тип-диапазон.

На основе стандартных скалярных типов имеется возможность образовывать пользовательские скалярные типы. Есть два способа порождения новых скалярных типов - ограниченные и перечислимые типы.

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

Составные типы: структурированные типы, указатели, строки, процедурные, объекты, классы, варианты.

Структурированные типы в свою очередь делятся на:

1. регулярные типы (массивы);

2. комбинированные типы (записи);

3. множественные типы;

4. файловые типы;

Простые типы, описанные выше, определяют различные множества атомарных (неразделимых) значений. Составные, или структурные типы, в отличие от простых, задают множества «сложных» значений; каждое значение из такого множества образует некоторую совокупность нескольких значений другого типа (или других типов). Можно сказать, что составные типы определяют некоторый способ образования новых типов из уже имеющихся, причем отдельные элементы составных значений могут иметь любой, в том числе составной, тип.

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

3.2 Структурный тип данных массив

Каждое значение регулярного типа состоит из фиксированного числа элементов одного и того же базового типа. Такой способ образования новых значений (фиксированное число однотипных компонент) позволяет обозначать значения этих типов одним (групповым) именем. Объект регулярного типа часто называют массивом, а групповое имя используется в качестве имени этого массива. Доступ к отдельным элементам массивов организуется посредством указания имени массива и порядкового номера (индекса) необходимого элемента.

Для корректного определения регулярного типа необходимо задать две характеристики: тип элементов массива, а также количество и «способ нумерования» элементов. Последние характеристики задаются посредством указания типа индекса [1, c. 259].

Определение массива имеет следующий общий вид:

Type A = array [T1] of T2;

Здесь Array, of - служебные слова; Т1 - тип индекса массива; Т2 - тип компонент массива.

В дальнейшем идентификатор этого типа может быть использован в описании переменных.

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

Ниже приведены описания различных массивов:

Type

M1 = array [1..100] of real;

M2 = array [char] of boolean;

Matrix = array [ 1..10 ] of array[1..20] of integer;

Database = array [1..MaxF] of file of Person;

Var

Vector: M1;

Sym_Table: M2;

Arr1, Arr2: Matrix;

S: array [Red, Yellow, Green] of boolean;

Число элементов в массиве всегда должно быть фиксировано. Для задания количества элементов массива используется тип; число элементов определяется количеством возможных значений указанного типа, что отличает язык Паскаль от многих других языков, в которых размер массива задается либо целым числом (или выражением целого типа), либо диапазоном целых чисел. Это придает Паскалю дополнительную гибкость, позволяя «нумеровать» элементы массива не только целыми числами, но и значениями произвольного целого типа.

Страницы: 1, 2, 3, 4



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.