скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

скачать рефератыРеферат: Основные понятия алгоритмического языка

числа на обратный.

   Операции and, or и xor - двуместные, операнды этих операций - целые

величины одинаковой   длины.   Операции выполняются попарно над всеми

двоичными разрядами операндов.

   Вторая группа  операций  -  это операции сдвига влево shl и сдвига

вправо shr:

   

    I shl N

    I shr N.

  

   Эти операции сдвигают двоичную последовательность значения I влево

или вправо на N двоичных разрядов. При этом биты, уходящие за пределы

разрядной сетки, теряются, а освободившиеся двоичные разряды заполня-

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

разряды заполняются единицами.

   

   

13.   О П Е Р А Т О Р   П Е Р Е Х О Д А

   Обычно операторы  в  программе выполняются в том порядке,  в каком

они записаны. Оператор перехода прерывает естественный порядок выпол-

нения программы и указывает,  что дальнйшее выполнение должно продол-

жаться, начиная с оператора, помеченного меткой, указанной в операто-

ре перехода. Пример записи оператора перехода:

        goto 218;

14.   Э Л Е М Е Н Т Ы   С Т Р У К Т У Р Н О Г О

П Р О Г Р А М М И Р О В А Н И Я

   Структуризованная программа  (или  подпрограмма)  - это программа,

составленная из фиксированного множества базовых конструкций.   Расс-

мотрим основные  определения и способы образования этих конструкций в

схемах алгоритмов.

{}

   Из операций, развилок и слияний строятся базовые конструкции: сле-

дование, ветвление,  цикл. Применяя только эти три конструкции, можно

реализовать алгоритм решения любой задачи.

   Конструкция, представляющая собой последовательное выполнение двух

или более операций, называется следованием.

   Конструкция, состоящая из развилки, двух операций и слияния, назы-

вается ветвлением. Одна из операций может отсутствовать.

   Конструкция, имеющая линии управления, ведущие к предидущим опера-

циям или развилкам, называется циклом.

   Конструкции следование,   ветвление  и  цикл можно представить как

операции, так  как они имеют единственный вход и единственный  выход.

Произвольную последовательность   операций можно представить как одну

операцию.

   Операция может  быть  реализована  любым  оператором языка ПАСКАЛЬ

(простым или составным), либо группой операторов, за исключением опе-

ратора перехода GOTO.

   В языке ПАСКАЛЬ количество базовых конструкций увеличено до шести,

это:

       -следование;

       -ветвление;

       -цикл с предусловием;

       -цикл с постусловием;

       -цикл с параметром;

       -вариант.

   Далее рассмотрим,  как эти базовые конструкции реализуются в языке

ПАСКАЛЬ.

15.   У С Л О В Н Ы Й   О П Е Р А Т О Р

 {}

   Условный оператор  в короткой форме работает по правилу:  если бу-

левское выражение B истинно,  то выполняется оператор ОР1,  далее вы-

полняется оператор, следующий за условным. Если булевское выражение B

ложно, то будет выполняться оператор, следующий за этим условным опе-

ратором.

16.   Ц И К Л   С   П Р Е Д У С Л О В И Е М{}

17.   Ц И К Л   С   П О С Т У С Л О В И Е М{}

18.   Ц И К Л   С   П А Р А М Е Т Р О М{}

19.   О П Е Р А Т О Р Ы   З А В Е Р Ш Е Н И Я  Ц И К Л А

   Для всех операторов цикла выход из цикла осуществляется как

вследствие естественного  окончания оператора цикла,  так и с

помощью операторов перехода и  выхода.

   В версии ТУРБО ПАСКАЛЬ 7.0 определены стандартные процедуры Break и

Continue. Процедура Break выполняет безусловный выход из цикла. Проце-

дура Continue обеспечивает переход к началу новой итерации цикла.

20.   О П Е Р А Т О Р   В А Р И А Н Т А{}

21.   П Е Р Е Ч И С Л Я Е М Ы Й   Т И П   Д А Н Н Ы Х

   Перечисляемый тип представляет  собой  ограниченную  упорядоченную

последовательность скалярных констант,  составляющих данный тип. Зна-

чение каждой константы задается ее именем.  Имена отдельных  констант

отделяются друг от друга запятыми,  а вся совокупность констант, сос-

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

   Программист объединяет в одну группу в соответствии с каким - либо

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

Например, перечисляемый    тип  Rainbow(РАДУГА)  объединяет скалярные значения

RED, ORANGE, YELLOW, GREEN, LIGHT_BLUE, BLUE, VIOLET (КРАСНЫЙ,

ОРАНЖЕВЫЙ,  ЖЕЛТЫЙ, ЗЕЛЕНЫЙ, ГОЛУБОЙ, СИНИЙ, ФИОЛЕТОВЫЙ). Пе-

речисляемый тип Traffic_Light (СВЕТОФОР) объединяет скалярные

значения RED, YELLOW, GREEN (КРАСНЫЙ,  ЖЕЛТЫЙ, ЗЕЛЕНЫЙ).

   Перечисляемый тип  описывается  в разделе описания типов,  который

начинается со служебного слова type, например:

type

  Rainbow = (RED, ORANGE, YELLOW, GREEN, LIGHT_BLUE, BLUE, VIOLET);

   Каждое значение  является константой своего типа и может принадле-

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

ример, перечисляемый    тип  Traffic_Light не может быть определен в одной

программе с типом Rainbow,  так как оба типа содержат одинаковые конс-

танты.

   Описание переменных, принадлежащих к скалярным типам, которые объ-

явлены в  разделе описания типов,  производится с помощью имен типов.

Например:

        type  Traffic_Light= (RED, YELLOW, GREEN);

        var   Section: Traffic_Light;

   Это означает, что переменная Section может принимать значения RED,

YELLOW или GREEN.

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

ния переменных, например:

        var  Section: (RED, YELLOW, GREEN);

   При этом имена типов отсутствуют,  а переменные определяются сово-

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

   К переменным перечисляемого  типа  может  быть  применим  оператор

присваивания:

          Section:= YELLOW;

   Упорядоченная последовательность значений, составляющих перечисля-

емый тип, автоматически нумеруется, начиная с нуля и далее через еди-

ницу. Отсюда следует, что к перечисляемым переменным и константам мо-

гут быть применены операции отношения  и  стандартные  функции  Pred,

Succ, Ord.

   Переменные и константы перечисляемого типа не могут быть элемента-

ми списка ввода или вывода.

22.   И Н Т Е Р В А Л Ь Н Ы Й   Т И П   Д А Н Н Ы Х

   Отрезок любого порядкового типа

может   быть определен как интервальный или ограниченный

тип. Отрезок  задается диапазоном от  минимального  до  максимального

значения констант, разделенных двумя точками. В качестве констант мо-

гут быть использованы константы, принадлежащие к целому, символьному,

логическому или перечисляемому типам. Скалярный тип, на котором стро-

ится отрезок, называется базовым типом.

   Минимальное и  максимальное  значения констант называются нижней и

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

граница должна быть меньше верхней.

 {}

   Над переменными,  относящимися к интервальному типу,  могут выпол-

няться все операции и применяться все стандартные  функции,   которые

допустимы для соответствующего базового типа.

   При использовании в программах интервальных типов данных может  осущест-

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

границы, введенные для этих переменных в описании интервального типа.

23.   М А С С И В Ы

   Массивы представляют собой ограниченную упорядоченную совокупность

однотипных величин.  Каждая отдельная величина называется компонентой

массива. Тип   компонент может быть любым,  принятым в языке ПАСКАЛЬ,

кроме файлового типа. Тип компонент называется базовым типом.

   Вся совокупность компонент определяется одним именем.  Для обозна-

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

менной с индексом или с индексами:

          A[5]     S[k+1]     B[3,5].

   В качестве индекса может быть использовано выражение. Тип индексов

может быть только интервальным или перечисляемым.   Действительный  и

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

зовым является целый тип,  могут принимать отрицательные,  нулевое  и

положительные значения.{}

  В операторной части

программы один массив может быть присвоен другому, если их типы иден-

тичны, например:

         R1:=Z.

   Для ввода  или вывода массива в список ввода или вывода помещается

переменная с индексом,  а операторы ввода или  вывода  выполняются  в

цикле.

{}

   Первый индекс  определяет  номер  строки,  второй - номер столбца.

Двумерные массивы хранятся в памяти ЭВМ по строкам.

   Инициализация массивов (присвоение начальных значений всем  компо-

нентам массивов) осуществляется двумя способами.

   Первый способ - с использованием типизированных констант,   напри-

мер:

   type Dim10= Array[1..10] of Real;

   const

    raM10: Dim10 = ( 0, 2.1, 4, 5.65, 6.1, 6.7, 7.2, 8, 8.7, 9.3 );

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

входящих в него одномерных массивов записывается в скобках:

   type Dim3x2= Array[1..3,1..2] of Integer;

   const

    iaM3x2: Dim3x2= ( (1, 2)

                      (3, 4)

                      (5, 6) );

   Второй способ инициализации - использование разновидности процеду-

ры FillChar:

   FillChar( var V; NBytes: Word; B: Byte );

Эта процедура заполняет участок памяти однобайтовым значением. Напри-

мер, для обнуления массива A[1..10] of Real можно записать:

   FillChar(A, 40, 0);

или

   FillChar(A, SizeOf(A), 0);

{}

24.   С Т Р О К И

   Особое место в языке ПАСКАЛЬ занимают массивы символов.  Стандарт-

ный ПАСКАЛЬ допускает два способа хранения символьных массивов в  па-

мяти ЭВМ: распакованный и упакованный. Распакованные массивы символов

хранятся в памяти ЭВМ по одному символу в машинном слове, упакованные

- по одному символу в байте. При описании упакованного массива симво-

лов используют служебное слово PACKED, например:

            var   MAS: Packed Array[1..20] of Char;

Описание распакованного массива символов имеет вид:

            var   M: Array[1..20] of char;

   Для преобразования символьного массива из  распакованной  формы  в

упакованную и наоборот,  из упакованной в распакованную,  в язык ПАС-

КАЛЬ введены две стандартные функции Pack, UnPack.

   Упакованный массив символов образует символьную строку. Символьная

строка может быть либо строковой константой, либо строковой  перемен-

ной. Строковая константа, или строка, представляет собой совокупность

символов, заключенную  в апострофы.  Строка - это элементарная  конс-

трукция языка ПАСКАЛЬ. Строковые константы могут входить в состав вы-

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

описания констант.

   Строковые переменные - это одномерные упакованные  массивы  симво-

лов, для описания которых в TURBO PASCAL введен тип String.

   Например, если строка содержит до 30 символов,  ее тип будет опре-

делен как

    type   s= String[30];

   Длина строки не может содержать более, чем 255 символов.

   В TURBO PASCAL определено понятие строки переменной длины,  в этом

случае ее описание задается как

    type  s= String;

   Тип String без указания длины совместим со всеми типами строк.

   Особенностью строковых переменных является то, что к ним можно об-

ращаться как к скалярным переменным, так и к массивам. Во втором слу-

чае применяется конструкция "переменная с индексом", что обеспечивает

доступ к   отдельным символам строки.  При этом нижняя граница идекса

равна 1. Отдельный символ строки совместим с типом Char.

   В памяти ЭВМ строка занимает количество байтов, на единицу большее

ее длины. Нулевой байт строки содержит ее длину.

   Для строк определены операции присваивания, слияния (конкатенации)

и сравнения.

   Для сравнения строк применяются все операции отношения.  Сравнение

строк происходит посимвольно,  начиная с первого символа. Строки рав-

ны, если имеют одинаковую длину и посимвольно эквивалентны.

   Строки могут быть элементами списка ввода - вывода, при этом запи-

сывается имя строки без индекса.

   При вводе  строковых переменных количество вводимых символов может

быть меньше,  чем длина строки. В этом случае вводимые символы разме-

щаются с начала строки, а оставшиеся байты заполняются пробелами. Ес-

ли количество  вводимых  символов  превышает  длину  строки,   лишние

символы отбрасываются.

   Инициализация строк может производиться как с помощью типизирован-

ных констант:

   const sName: String[9]= 'IBM PC/AT';

так и с использованием второй разновидности функции FillChar:

   FillChar( var V; NBytes: Word; C: Char );

например:

   FillChar(A, SizeOf(A), '0');

   Для работы  со  строками в TURBO PASCAL включены процедуры и функ-

ции, которые обеспечивают редактирование и преобразование строк.

{}

25.   П Р О Ц Е Д У Р Ы   И   Ф У Н К Ц И И

   Алгоритм решения  задачи проектируется путем декомпозиции всей за-

дачи в отдельные подзадачи. Обычно подзадачи реализуются в виде подп-

рограмм.

   Подпрограмма - это последовательность операторов,  которые опреде-

лены и   записаны  только  в  одном месте программы,  однако их можно

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

дая подпрограмма определяется уникальным именем.  В языке ПАСКАЛЬ су-

ществуют два типа подпрограмм - процедуры и функции.

   Процедура и  функция - это именованная последовательность описаний

и операторов.  При использовании процедур или функций ПАСКАЛЬ - прог-

рамма должна содержать текст процедуры или функции и обращение к про-

цедуре или функции.  Тексты процедур и функций  помещаются  в  раздел

описаний процедур и функций.

{}

   Процедура может содержать такие - же разделы описаний,  что и ПАС-

КАЛЬ - программа,  а именно:  разделы описания модулей,  меток, конс-

тант, типов, переменных, процедур и функций.

{}

   ПЕРЕДАЧА ИМЕН ПРОЦЕДУР И ФУНКЦИЙ В КАЧЕСТВЕ ПАРАМЕТРОВ.  Во многих

задачах, особенно в задачах вычислительной математики, необходимо пе-

редавать имена процедур и функций в качестве параметров.  Для этого в

TURBO PASCAL   введен новый тип данных - процедурный или функциональ-

ный, в зависимости от того, что описывается.

   Описание процедурных и функциональных типов производится в разделе

описания типов:

   type

         FuncType = Function(z: Real): Real;

         ProcType = Procedure (a,b: Real; var x,y: Real);

   Функциональный и процедурный тип определяется как заголовок проце-

дуры и функции со списком формальных параметров,  но без имени. Можно

определить функциональный или процедурный тип без параметров,  напри-

мер:

   type

         Proc = Procedure;

   После объявления процедурного или функционального типа  его  можно

использовать для  описания  формальных  параметров  - имен процедур и

функций.

   Кроме того, необходимо написать те реальные процедуры или функции,

имена которых будут передаваться как фактические параметры.  Эти про-

цедуры и  функции должны компилироваться в режиме дальней адресации с

ключом {$F+}.

   Пример. Составить программу для вычисления определенного интеграла

                tk

                       2t

             I= S--------------- dt

                   sqrt(1-sin2t)

                tn

по методу Симпсона. Вычисление  подинтегральной функции реализовать с

помощью функции, имя которой передается как параметр.  Значение опре-

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


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

© 2010.