Шпаргалка по "Языкам программирования"

Автор: Пользователь скрыл имя, 22 Февраля 2013 в 10:03, шпаргалка

Краткое описание

работа содержит ответы на вопросы по "Языкам программирования"

Файлы: 1 файл

яп.doc

— 205.00 Кб (Скачать)

3.  Стандартныеоперации: + , - , * , /.

4. Стандартные функции:Abs(x)—|х|; Ln (x) — ln x; Sqr(x)-x^2; Arctan(x)-arctg(x); Sqrt(x)-x^1/2; Sin(x) — sin x; еxp(x)—e^x; Cos(x)—cos x. Совместимые типы: real, single, double, extended.

 

9.

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

Рассмотрим классификацию  операторов языка:

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

СОСТАВНОЙ   ОПЕРАТОР

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

 

10.

Операторы цикла предусмотрены  для многократного повторения входящих в них операторов-компонент. Алгоритмический язык Паскаль определяет три разновидности данных операторов:

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

2)  оператор цикла  с предусловием;

3)  оператор цикла  с постусловием.

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

Рассмотрим особенности  организации указанного оператора.

1.  Параметр цикла  не должен изменяться в теле  цикла:

а)  он не должен находиться в левой части оператора присваивания;

б)  не может быть параметром стандартных процедур Read и Readln;

в)  не может быть параметром другого цикла внутри данного;

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

2.  Если начальное  значение параметра больше конечного  при спецификации to, то цикл не  выполнится ни разу.

3.  Если начальное  значение параметра меньше конечного  при спецификации downto, то цикл  не выполнится ни разу.

Рассмотрим вторую разновидность оператора цикла: (while) где <выражение> имеет тип Boolean. Его значение пересчитывается перед каждой новой итерацией. Данный оператор является реализацией базовой алгоритмической структуры «Цикл-Пока».

Диаграмма третьей разновидности  оператора цикла имеет следующий вид: (repeat)где <выражение> также относится к типу Boolean. Его значение пересчитывается после каждой итерации. Последовательность операторов между repeat и until выполняется как минимум один раз. Данный оператор является реализацией базовой алгоритмической структуры «Цикл-До».

ВЫБИРАЮЩИЕ   ОПЕРАТОРЫ

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

 

11.

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

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

1)  константа такого  же типа;

2)  переменная такого  же типа;

3) функция, возвращающая  значение такого же типа.

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

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

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

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

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

Диапазонные типы были введены  в целях повышения наглядности  программ и их надежности.

 

12.СОСТАВНЫЕ   ТИПЫ  ДАННЫХ

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

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

В описании типа можно  указать префикс packed, что заставит транслятор представить данные в  памяти в упакованном виде. Однако экономия памяти требует дополнительного времени на упаковку и распаковку данных во время выполнения программы.

 

24.

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

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

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

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

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

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

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

Рекомендации по использованию  рекурсии:1)рекурсии следует избегать там, где есть очевидные итерационные решения;2)алгоритмы, рекурсивные по своей природе, следует оформлять в виде рекурсивных подпрограмм;3)рекурсивные алгоритмы особенно подходят для обработки структур данных, определенных в терминах рекурсии (списки, деревья и т.д.)

При каждом (рекурсивном) вызове подпрограммы выполняются действия:1)запоминание  адреса возврата в стеке;2)переход  к выполнению первой команды подпрограммы

При каждом возврате из подпрограммы выполняются действия:1)выборка верхнего адреса из стека2)переход по выбранному адресу

Рекурсивность - это не свойство самой подпрограммы, а лишь свойство ее описания.

 

 

 

14.

 Если содержимое строки заранее известно, то используют символьную константу, иначе можно применить массив следующего типа: packed array[1..n] of char,n>1. В Паскале такой массив называется строкой символов.

Семейство компиляторов Turbo Pascal(Borland) позволяет использовать еще одно средство для обработки  символьных данных - стринги. Следует  отметить, что строки символов и стринги различаются по организации и средствам обработки. Для описания стрингов используется идентификатор String

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

Рассмотрим некоторые  стандартные средства обработки  стрингов.

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

2. Сравнение стрингов. Любые пары стрингов можно  сравнить. Два стринга равны, если  а) они одинаковой длины, б) состоят из одинаковых символов.

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

3.Катенация(конкатенация)-это  операция сцепления двух стрингов  в один.Существуют правая и  левая катенации.

4. Функция Length возвращает  длину данного стринга, обращение к ней имеет вид: length (<стринг>)

5. Процедура str преобразует  значение числового выражения  в эталонную последовательность, которая затем преобразуется  в стринг. str(<числовое выражение>,<стринг-переменная>). Если выражение целое, то эталон-изображение целого числа с минимально необходимым количеством знаков.Если первый параметр дополнить квалификатором длины, то эталон выравнивается по правому полю, а затем формируется стринг.

6. Процедура Val преобразует  стринг в число, если это  возможно. Val(<стринг>,<переменая>,<индикатор>); <индикатор> принимает значение 0, если преобразование прошло нормально, в остальных случаях это значение первого недопустимого символа.

7.Функция Copy выделяет  из стринга его часть. Copy(<стринг>,N,M), где N-начальная позиция, M-длина выделяемой части стринга.Если N>length (<стринг>), то результат - пустая строка. Если N+M>length (<стринг>), то M пересчитывается следующим образом: М=length (<стринг>) - N+1

8. Функция Concat позволяет  сцепить два и более стринга  в один.

9. Функция Pos возвращает позицию начала вхождения <стринга1> в <стринг2>. Pos(<стринг1>,<стринг2>).Если такого вхождения не обнаружено, то функция возвращает нулевой результат.

10. Процедура Insert предназначена  для вставки <стринга1> в <стринг2>, начиная с позиции N. Insert(<стринг1>,<стринг2>,N). Если N>Length(<стринг2>),то значение N пересчитывается в следующем порядке: N=length(<стринг2>)+1

11. Процедура Delete используется  для удаления из стринга цепочки  символов с позиции N длиной M.Delete(<стринг>,N,M)

 

15.

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

Отличия записей от массивов:

1)  компоненты записи  могут иметь различные типы;

2) доступ к компоненте  записи осуществляется не по  индексу, а по имени.

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

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

При работе с конкретными  полями значений данного типа необходимо указывать так называемые квалифицированные (уточненные) имена: <имя записи>   .    <имя поля>

Аналогом селектора  записи в массивах является индекс.

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

В отношении оператора  присоединения существует несколько  особенностей.

1.  Идентификатор поля  в операторе присоединения обозначает компоненту комбинированной переменной из ближайшего объемлющего оператора присоединения, в котором указана переменная с таким полем.

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

Над значениями комбинированного типа не определено никаких операций, кроме x := у, где x и у — переменные одного типа.

Информация о работе Шпаргалка по "Языкам программирования"