Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programmirovanie!!!.doc
Скачиваний:
4
Добавлен:
22.12.2018
Размер:
186.37 Кб
Скачать

Применение

Традиционным применением булева типа данных являются значения «да»/«нет» в отношении результата более сложных операций.

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

Pascal

Описание переменных

var a,b:boolean

Операции

Арифметических нет. Допустимы следующие логические операции: Not, And, Or, Xor и операции отношения =, <> Допустимые функции: Ord, Pred, Succ

var

A, B: Byte;

C, D, E, F: Boolean;

begin

A := Ord(False); {A=0}

B := Ord(True); {B=1}

C := Pred(False);{ошибка}

D := Pred(True); {D=False}

E := Succ(False); {E=True}

F := Succ(True); {ошибка}

end.

Вопрос№17.

Данные перечисляемого типа.

Перечисляемый тип (сокращённо перечисле́ниеангл. enumeration, enumerated type) — в программировании тип данных, чьё множество значений представляет собой ограниченный список идентификаторов.

Перечисления представляют собой упорядоченный список символьных «значений»:

Type

Rainbow = (red, orange, yellow, green, aqua, blue, purple);

Var

Col: rainbow;

В программе переменной col может быть присвоено одно из перечисленных значений:

Col: = green;

По описанию перечисления компилятор присваивает каждому мнемоническому «значению» числовой порядковый номер, начиная с 0 (red=0, orange=1, yellow=2 и т.д.). В принципе, над мнемоническими «значениями» можно производить такие же операции, как и над целыми числами(если это имеет смысл). Например:

Col := orange + green; // аналог 1+3

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

Вопрос№18. Символьные данные

К данным типа char относятся объекты, представленные в оперативной памяти восьмибитовыми двоичными кодами от 0 до 255

Первую группу таких объектов с кодами от 0 до 31 относят к группе управляющих символов. Среди управляющих символов чаще других используются следующие:

* «пусто» (символ NIL с кодом 0)

* «звуковой сигнал» (символ BEL с кодом 8)

* «табулярный пропуск» (символ Tab с кодом 9)

* «конец строки» (символ LF с кодом 9)

* «перевод каретки» (символ CR с кодом 10)

* «отмена» (символ Esc с кодом 27)

Вторую группу составляют так называемые отображающие символы. При их выводе на экран каждый объект занимает одно знакоместо, в котором отображаются буква, цифра, скобка, знаки операций и препинания. Символ «пробел» с кодом 32 не миеет на экране видимого графического отображения , но он занимает знакоместо , используемое для разделения «слов» - цепочек видимых символов. Среди отображаемых символов присутствует единственный управляющий символ «забой» (backspace с кодом 127), назначение которого – стереть на экране предшествующий символ .

Вопрос№19.

Вывод данных на экран или файл в языке программирования Pascal осуществляется с помощью процедур write и writeln. Здесь будет рассмотрен вывод только на экран.

Допустим, нам требуется отобразить на экране пару фраз. Если мы хотим, чтобы каждая из них начиналась с новой строки, то надо использовать writeln, если нет – то write.Ввод данных с клавиатуры

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

Когда данные вводятся в память, то надо к ним в дальнейшем как-то обращаться, и знать, где они там лежат. За это все отвечает механизм переменных. Поэтому, когда в программе на Pascal используется процедура read (или readln), то в качестве фактического параметра (аргумента) ей передается имя переменной, которая будет связана с вводимыми данными.

При вводе данных их разделяют пробелом или переходом на новую строку (Enter).

Вопрос№20.

Строки. Строковый тип данных.

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

Для обработки строковой информации в Паскаль введен строковый тип данных. Строкой в Паскале называется последовательность из определенного количества символов. Количество символов последовательности называется длиной строки. Синтаксис: var s: string[n]; var s: string; n - максимально возможная длина строки - целое число в диапазоне 1..255. Если этот параметр опущен, то по умолчанию он принимается равным 255. Строковые константы записываются как последовательности символов, ограниченные апострофами. Допускается формирование строк с использованием записи символов по десятичному коду (в виде комбинации # и кода символа) и управляющих символов (комбинации ^ и некоторых заглавных латинских букв). Пример: 'Текстовая строка' #54#32#61 'abcde'^A^M Пустой символ обозначается двумя подряд стоящими апострофами. Если апостроф входит в строку как литера, то при записи он удваивается.

Вопрос№21.

В Паскале подпрограммы делятся на процедуры и функции:

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

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

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

Процедуры отличаются от функций тем, что функции возвращают какое-либо значение, а процедуры — нет.

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

Вопрос№22.

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

Наиболее широкими возможностями по преобразованию данных разного типа в их символьное представление обладает функция Format. Её идеология заимствована из языков C,C++. В упрошенном варианте обращение к функции Format Выглядит следующим образом:

s:=format (‘форматные указатели’, [список значений])

Квадратные скобки, выделяющие второй аргумент, здесь является обязательным элементом синтаксической конструкции. Функция Format возвращает результат преобразования в виде значения типа string.

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

Program format 1;

Uses sysutils;

Var

I:integer=123;

F:single=pi;

Ch:=char=’A’;

S:string=’Hello, world’;

Begin

Writeln (format(‘i=%5d f=%8.2 ch=%s s=%s’,[I,f,ch,s]);

Readln;

End.

Вопрос№23.

Статические и динамические массивы

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

Пример:

Const

A=3

K=2

Type

Mat = array[1..a,1..k]

var

x: Array [3…10]

y: mat

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

Пример:

SetLenght(da1,100) - такое обращение эквивалентно статическому

описанию вида x: Array [0…99] of integer

Вопрос№24.

Длина и размер массива. Длина и размер массива - это объем оперативной памяти в байтах, занятых элементами массива. Для определения этой характеристики обычно прибегают к функции SizeOf. Каждый элемент массива занимает 8 байт. Аоскольку в массиве оъем объявлено 13 элементов, то для хранения их значений компилятор отведет 8х13=104 байта. Размер одномерного статического массива совпадает с количеством его элементов. И для определения этой характеристики обычно прибегают к функции Length: Length (sa1) = 13 В языке Паскаль предусмотрены еще две функции - Low и High для определения минимального и максимального значения индекса одномерного и статического массиваю Например: Low (sa1) = 3 High (sa1) = 15 Результат функции SizeOf(da1) иногда равен 4. Фактически, это объем памяти, занимаемый указателем da1 на соответсвующие данные. Функции Length выдает фактическое значение, равное текущему количеству элементов динамического массива, и пока обращение к процедуре SetLength еще не было, эта характеристика равна 0.  Для двумерного массива q размером nxm компилятор заводит n указателей. Первый из них имеет для q0 совпадающее с именем массива. Он является указателем на начало массива и одновременно на первую строку массива. Если минимальное значение первого индекса равно k, то указатель q[k] тоже "смотрит" на первую строку массива (т.е. q и q[k] - это два имение одного и того же указателя). Следующий указатель с именем q[k+1] "смотрит" на вторую строку массива и т.д.

Вопрос№25.

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

Оформление процедур.

PROCEDURE имя (формальные параметры);

раздел описаний

BEGIN

раздел операторов

END;

Вызывается процедура по имени:

имя (фактические параметры);

Вопрос№26.

Алгоритм

Алгоритм программирования на языке Pascal – это есть последовательность операторов Паскаль, с помощью которых мы пришли к решению задачи. Она выглядит так:

Program ... ; { Заголовок программы }

Uses ... ; { Подключение модулей } – если они есть

Label ... ; { Раздел объявления меток } – если они есть

Const ... ; { Раздел объявления констант } – если они есть

Type ... ; { Раздел объявления новых типов }– если они есть

Var ... ; { Раздел объявления переменных }– если они есть

Procedure ... ; { Описание своих процедур }– если они есть

Function ... ; { Описание своих функций }– если они есть

Begin { начало основной программы }

...;

{ Операторы }

...;

End.

Обязательной частью является лишь тело программы, которое начинается словом begin, а заканчивается словом end с точкой. Операторы в Паскале разделяются точкой запятой. Заголовок программы является хотя и необязательным, но желательным элементом и состоит из зарезервированного слова program и идентификатора - имени программы, за котором следует точка с запятой. Порядок объявлений и описаний не регламентируется.

Вопрос№27.

Следование-действие идёт друг за другом

Вопрос№28.

Выбор

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

Структура оператора выбора в Паскале такова:

Case <ключ_выбора> of  <список_выбора> [else <оператор_иначе>] end

Здесь case, of, else, end – зарезервированные слова (случай, из, иначе, конец);

  • <ключ_выбора> - выражение порядкового типа;

  • <список_выбора> - одна или более конструкций вида:

    • <константа_выбора>: <оператор>;

  • <константа_выбора> - константа того же типа, что и выражение

    • <ключ_выбора>;

<операторы> - произвольные операторы Паскаля.

Оператор выбора Паскаля работает следующим образом. Вначале вычисляется значение выражения <ключ_выбора>, а затем в последовательности <список_выбора> отыскивается константа, равная вычисленному значению. Выполняется оператор, который следует за найденной константой, после чего оператор выбора завершает работу. Если в списке выбора не будет найдена константа, соответствующая вычисленному значению ключа выбора, управление передается операторам, стоящим за словом else. Часть else <оператор_иначе> можно опустить, тогда при отсутствии в списке выбора нужной константы не будет выполнено никаких действий, и оператор выбора просто завершит свою работу.

Например, составим программу, которая по номеру дня недели выводит на экран его название:

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

Любому из операторов списка выбора может предшествовать не одна, а несколько констант выбора, разделенных запятыми. Например, следующая программа при вводе одного из символов ‘ y’ или ‘ Y’ выведет на экран «Да», а при вводе ‘ n’ или ‘ N’ – слово «Нет».

Вопрос№29.

Цикл

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

Эта последовательность как раз и является телом любого цикла.

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

Какие бывают циклы? Сейчас мы рассмотрим все возможные варианты циклов по порядку.

1) Безусловные (бесконечные) циклы.

Такие циклы создаются с помощью конструкций, предназначенных для создания обычных (или условных) циклов. Для обеспечения бесконечного повторения проверка условия в таком цикле либо отсутствует, либо заменяется константным значением (while true do …).

2) Цикл с предусловием.

Цикл с предусловием — цикл, который выполняется пока истинно некоторое условие. Это условие проверяется до выполнения тела цикла, поэтому тело может быть не выполнено ни разу. Реализуется такой цикл оператором while. На языке Pascal цикл с предусловием имеет следующий вид:

while <условие> do

begin

<тело цикла>

end;

3) Цикл с постусловием.

Цикл с постусловием — цикл, в котором условие проверяется после выполнения тела цикла. Отсюда следует, что тело всегда выполняется хотя бы один раз. Реализует цикл оператор repeat..until.

repeat

<тело цикла>

until <условие>

Т.е цикл завершается, когда его условие выполнено.

4) Цикл с выходом из середины.

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

Но в языке pascal таких конструкций не предусмотрено, поэтому для выхода из середины цикла используется оператор безусловного перехода goto.Он позволяет изменить порядок выполнения команд.

Goto n;

1:write(x);

n:write(y);

Где n – метка, по которой определяется, в какую часть программы следует перейти при определённых условиях.

5) Цикл со счётчиком.

Цикл со счётчиком — цикл, в котором некоторая переменная изменяет своё значение от заданного начального значения до конечного значения с некоторым шагом, и для каждого значения этой переменной тело цикла выполняется один раз. Реализуется оператором for, в котором указывается счётчик (так называемая «переменная цикла»), требуемое количество проходов (или граничное значение счётчика) и, возможно, шаг, с которым изменяется счётчик.

n := 100;

for i := 1

to n do

begin

... тело цикла

end;

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

То есть в конструкции for сначала пишется произвольное предложение инициализации цикла, затем — условие продолжения и, наконец, выполняемая после каждого тела цикла некоторая операция.

6) Вложенные циклы.

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

begin

If K then D

Else

Begin

If R then M

Else P;

End;

End;

Здесь в условный оператор вложен еще один условный оператор, что создаёт вложенный цикл.

С вышеперечисленными циклами можно выполнять определённые операции, для усовершенствования их функционала.

Бывают ситуации, когда необходимо сделать досрочный выход из цикла по определённым причинам (ошибка в теле цикла и т.д.). Для решения таких проблем существует команда break, а её действие аналогично действию команды безусловного перехода (goto) на команду, непосредственно следующую за циклом, внутри которого эта команда находится. Этот оператор прерывает работу того цикла, в котором он непосредственно находится.

If S then V

Else

Break;

Вопрос№30.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]