Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

для телефона

.pdf
Скачиваний:
8
Добавлен:
14.05.2015
Размер:
562.74 Кб
Скачать

пространства имён. Это позволяет существовать двум файлам с одинаковыми именами (пока они находятся в разных каталогах). В некоторых языках программирования (например, C++, Python) идентификаторы имён пространств сами ассоциированы с соответствующими пространствами. Поэтому в этих языках пространства имён могут вкладываться друг в друга, формируя дерево пространств имён. Корень такого дерева называется глобальным пространством имён.

23.Pascal. Переменные и константы

Переменные

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

Переменные имеют тип и объявляются в специальном разделе Var (от англ.Variable – переменная):

Var <имя переменной>: <тип данных>;

Локальные и глобальные переменные в Turbo Pascal'e.

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

Указанные трудности в Паскале устраняются благодаря ПРИНЦИПУ ЛОКАЛИЗАЦИИ, суть которого состоит в том, что вводимые (описываемые) в какой-либо процедуре программные объекты (метки, константы, переменные, процедуры и функции, используемые для внутри-процедурных потребностей) существуют только в пределах данной процедуры.

Имена, используемые для описания переменных, констант и других программных объектов внутри подпрограммы, называются ЛОКАЛЬНЫМИ для данной подпрограммы. Программные объекты, описанные в основной

программе, называются ГЛОБАЛЬНЫМИ.

Основные правила работы с глобальными и локальными именами можно сформулировать так:

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

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

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

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

24Константы

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

Константы подразделяются на два вида - истинные (true constants)

и типизированные (typed). Истинные константы - собственно и есть константы в чистом виде. Типизированные константы - константы которые могут содержать типизированные значения. Например можно объявить массив-константу или запись-константу.

Главное и наиболее полезное свойство констант, это то что они неизменны на протяжении всего времени выполнения программы. Программа в которой производится попытка изменить значение константы просто не скомпилируется. Константы, так-же как переменные и типы данных, объявляются в своей секции объявления констант которая начинается с зарезервированного слова const. Объявление типизированной константы больше похоже на объявление переменной и отличается от него только тем что переменной не присвоено изначально никакое значение, а константе изначально присвоено конкретное значение определенное в коде программы. Формат объявления типизированной константы:

ConstantIdent:DataType=ConstantExpression; ConstantIdent - идентификатор константы.

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

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

Пример объявления констант: const

A=10;

B='Linux must die'; E:Real=2.71; C=A+5;

D:array[0..4] of Integer=(5, A, 1, C, 123)

Константы могут быть встроенными и определяемыми, к слову константа Pi встроенная и для того чтобы использовать число 3,1415… в расчетах, нужно присвоить встроенную константу Pi переменной типа Real или просто

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

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

25. Оформление программы в ЯП.

Общая структура программы на языке Pascal имеет вид Program Имя программы;

Uses Подключаемые библиотеки (модули); Label Список меток основной программы; Const Введение констант;

Type Описание новых типов;

Var Описание переменных и их типов; Определение процедур; Определение функций;

Begin

Тело основной программы; End.

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

Uses – в Паскале вспомогательные готовые программы собранные в библиотеки (модули). Например, процедуры рисования точек, линий, окружностей на экране содержатся в модуле graph. Модули объявляются в этом блоке. Если подключать дополнительные библиотеки не нужно, блок отсутствует. Большинство важнейших ключевых системных библиотек подключаются автоматически (по умолчанию).

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

Const – блок описания простых и типизированных констант. Может отсутствовать если константы в программе не предусмотрены.

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

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

Begin - end. – служебные слова, обрамляющие тело основной программы, где находятся исполняемые операторы. Т.о. Begin начинает исполняемую часть программы, а end. (точка в конце обязательна) – ее завершает. Т.о. теоретически в минимально возможном наборе программа может состоять только из пустого тела begin end.

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

Общий вид оператора присваивания: Имя_переменной:=арифметическое выражение;

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

Например:x:=3.14 Переменной х присвоить значение 3.14 . a:=b+c Из ячеек b и c считываются заранее помещенные туда данные, вычисляется сумма,

результат записывается в ячейку а , i:=i+1

Значение переменной

увеличивается на единицу

 

Для типов переменной слева и арифметического выражения справа от знака присваивания существуют ограничения:

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

2)если переменная слева целого типа, то арифметическое выражение только целочисленное.

Это означает, что можно, например, вещественной переменной присвоить целое значение.

Операторы языка Pascal

1. Составной и пустой операторы Составной оператор - это последовательность произвольных операторов

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

Begin ... Begin ... Begin ... End; End;End; Наличие ; перед End - пустой оператор.

2. Операторы ветвлений. Условный оператор

IF <условие> THEN <оператор1> [ELSE <оператор2>]

Условие – значение типа BOOLEAN или логическая операция. Если условие верно, выполняется оператор, или блок операторов, следующий за THEN, в противном случае выполняется блок операторов после ELSE, если он есть.

Условия могут быть вложенными и в таком случае, любая встретившаяся часть ELSE соответствует ближайшей к ней "сверху" части THEN.

3. Операторы повторений. Цикл с предопределенным числом повторений. For <переменная цикла>:=<начальное значение> To(DownTo) <конечное значение> Do <блок операторов>

Переменная должна быть целого или перечислимого типа. При исполнении цикла переменная цикла изменяется от начального до конечного значения с шагом 1. Если стоит to, то переменная увеличивается, если downto – уменьшается.

Условия выполнения цикла проверяются перед выполнением блока операторов. Если условие не выполнено, цикл For не выполняется. Следующая программа подсчитывает сумму чисел от 1 до введенного:

Условный цикл с проверкой условия перед исполнением блока операторов. While <условие> Do <блок операторов>

Блок операторов будет исполняться, пока условие имеет значение true. Необходимо, чтобы значение условия имело возможность изменения при исполнении блока операторов, иначе исполнение цикла не закончится никогда (в DOS это приведет к зависанию компыютера). Если условие зарание ложно, блок операторов не исполнится ни разу.

Оператор выбора одного из вариантов.

Case <ключ выбора> Of <список выбора> Else <оператор> End; <ключ выбора> - выражение любого перечислимого типа,

<список выбора> - одна или более конструкций вида <значение ключа>:<блок операторов>.

Оператор безусловного перехода на строку с меткой. Goto <метка> Метка, должна быть описана в разделе описаний. Метка, описанная в

процедуре (функции) локализуется в ней, поэтому передача управления извне процедуры (функции) на метку внутри нее невозможна.

26.Реализация ветвления в ЯП. Оператор условного перехода Оператор условного перехода в Турбо Паскаль имеет вид:

if условие then оператор 1 else оператор 2;

условие - это логическое выражение, в зависимости от которого выбирается одна из двух альтернативных ветвей алгоритма. Если значение условия истинно (TRUE), то будет выполняться оператор 1, записанный после ключевого слова then. В противном случае будет выполнен оператор 2, следующий за словом else, при этом оператор 1 пропускается. После выполнения указанных операторов программа переходит к выполеннию команды, стоящей непосредственно после оператора if.

Необходимо помнить, что перед ключевым словом else точка с запятой никогда не ставится!

else - часть в операторе if может отсутствовать: if условие then оператор 1;

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

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

27.Реализация выбора в ЯП. Оператор выбора

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

такой выбор можно организовать с помощью оператора if .. then, удобнее воспользоваться специальным оператором выбора. Его формат:

case выражение of вариант : оператор;

...

вариант : оператор; end;

или

case выражение of вариант : оператор;

...

вариант : оператор; else оператор

end;

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

28.Реализация цикла с предусловием в ЯП.

Цикл – это многократно повторяющиеся фрагменты программ. Алгоритм циклической структуры – это алгоритм, содержащий циклы.

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

Оператор цикла с предусловием в Паскале.

Оператор цикла с предусловием реализует следующую базовую конструкцию: Формат записи: While L do OP; где: While - пока не; do – выполнить; L – выражение логического типа; OP – тело цикла; оператор (простой или составной).

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

где: C=2,7; n=2; a=0.5; 0<t<1; Dt=0,1. Program Ex_2;

Uses crt;

Var y, C, a, t :real; n :integer;

Begin clrscr;

Writeln('Введите C, a, n'); Read(C, a, n); Writeln('Результат:');

Writeln('t’:5,’y’:15);

t:=0;

While t<1 do Begin

y:=C*exp(a*t)*cos(n*t); Writeln(t:4:1,’ ‘:5, y:10); t:=t+0.1;

End;

End.

29.Реализация цикла с постусловием в ЯМ

Цикл – это многократно повторяющиеся фрагменты программ. Алгоритм циклической структуры – это алгоритм, содержащий циклы. В ТР существует три оператора цикла:цикл с предусловием, цикл с постусловием, цикл с параметром. Для всех циклов характерны следующие особенности:значения переменных используемых в цикле, и не изменяющиеся в нем д.б. определены до входа в цикл;вход в цикл возможен только через его начало;выход их цикла осуществляется как в результате его естественного окончания, так и с помощью операторов перехода.

Оператор цикла с постусловием в языке Паскаль. Оператор цикла с постусловием реализует следующую конструкцию:

Формат записи: Repeat OP Until L;

где: Repeat - повторять; Until – пока не;L – выражение логического типа;OP

– тело цикла; оператор (простой или составной).

Работа оператора: Выполняется оператор OP после чего вычисляется значение логического выражения L, если вычисленное значение False, то снова выполняется оператор OP в противном случае осуществляется выход из цикла. Вычисление значения логического выражения следует после выполнения операторов тела цикла, поэтому этот оператор цикла называется циклом с постусловием.

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

Воператоре цикла с постусловием ключевые слова Repeat и Until играют роль операторных скобок.

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

где: C=2,7; n=2; a=0.5; 0<t<1; Dt=0,1. Program Ex_2;

Uses crt;

Var y, C, a, t :real;

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