Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование(лекции).pdf
Скачиваний:
183
Добавлен:
14.02.2015
Размер:
1.89 Mб
Скачать

П.П.Кудрявцев. Курс лекций по дисциплине: "Информатика и программирование"

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

Логические операции

В языке Паскаль определены следующие логические операции:

not логическое НЕ ; or логическое ИЛИ ; and логическое И ;

xor исключающее ИЛИ .

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

Лекция 4. Опера торы языка Паскаль

Опера тор присваивания

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

переменная := выражение

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

Опера торы ввода-вывода

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

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

Процедура ввода с клавиатуры (обращение к стандартной процедуре ввода) имеет следующий формат:

Read(<список ввода>) ,

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

20

Лекция 4. Операторы языка Паскаль

исходных данных могут отделяться друг от друга пробелами и нажатием клавиш табуляции и

Enter.

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

Другой вариант оператора ввода с клавиатуры имеет вид: ReadLn(<список ввода>)

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

Оператор вывода на экран (обращение к стандартной процедуре вывода) имеет следующий формат:

Write(<список вывода>)

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

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

Второй вариант процедуры вывода на экран: WriteLn(<список вывода>)

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

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

Форма представления значений в поле вывода соответствует типу переменных и выражений: величины целого типа выводятся как целые десятичные числа, действительного типа - как действительные десятичные числа с десятичным порядком, символьного типа и строки - в виде символов, логического типа - в виде логических констант TRUE и FALSE.

Оператор вывода позволяет задать ширину поля вывода для каждого элемента списка вывода. В этом случае элемент списка вывода имеет вид А:К, где А - выражение или строка, К - выражение либо константа целого типа. Если выводимое значение занимает в поле вывода меньше позиций, чем К, то перед этим значением располагаются пробелы. Если выводимое значение не помещается в ширину поля К, то для этого значения будет отведено необходимое количество позиций. Для величин действительного типа элемент списка вывода может иметь вид А:К:М, где А - переменная или выражение действительного типа, К - ширина поля вывода, М - число цифр дробной части выводимого значения. К и М - выражения или константы целого типа. В этом случае действительные значения выводятся в форме десятичного числа с фиксированной точкой.

Опера тор безусловного перехода

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

21

П.П.Кудрявцев. Курс лекций по дисциплине: "Информатика и программирование"

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

Оператор перехода имеет вид:

GOTO <метка>

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

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

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

Сос тавной опера тор

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

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

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

Опера тор условного перехода

Алгоритмическая структура ветвления программируется в Паскале с помощью условного оператора. Структура условного оператора имеет следующий вид:

If <условие> Then <оператор1> Else <оператор2>;

где <условие> - произвольное выражение логического типа;

<оператор1>, <оператор2> - любые операторы языка Паскаль.

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

22

Лекция 4. Операторы языка Паскаль

выражение <условие>. Если результат есть True (истина), то выполняется <оператор1>, а <оператор2> пропускается; если результат есть False (ложь), наоборот, <оператор1> пропускается, а выполняется <оператор2>.

Кроме того, возможно использование неполной формы условного оператора: If <условие> Then <оператор>;

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

23

П.П.Кудрявцев. Курс лекций по дисциплине: "Информатика и программирование"

Лекция 5. Опера торы циклов. Опера тор вариан та

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

Оператор цикла с пост-условием применяется если во время написания программы количество повторений неизвестно.

Общий вид этого оператора таков:

repeat

<операторы>; until <условие>;

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

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

Исполнение цикла повторяется до того момента, когда <условие> станет истинным.

При составлении цикла с пост-условием необходимо принимать во внимание три момента:

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

Условие окончания должно в конце концов быть удовлетворено.

Изображение цикла с пост-условием на блок-схеме приведено на рисунке 1.

Рисунок 1 Цикл с пост условием-

24

Лекция 5. Операторы циклов. Оператор варианта

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

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

while <условие> do

<оператор>;

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

Исполнение цикла повторяется до тех пор, пока <условие> истинно.

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

При практическом программировании оператор цикла с пред-условием оказывается гораздо полезнее оператора цикла с пост-условием. Это связано с тем фактом, что во многих случая необходимо вначале установить, не следует ли пропустить цикл целиком. Если возникают сомнения при выборе операторов цикла с пред-условием и пост-условием, рекомендуется сначала использовать оператор цикла с пред-условием.

Изображение цикла с пред-условием на блок-схеме приведено на рисунке 2.

Рисунок 2 Цикл с пред условием-

25

П.П.Кудрявцев. Курс лекций по дисциплине: "Информатика и программирование"

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

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

for <уп> := <выражение 1> to <выражение 2> do <оператор>;

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

Ключевое слово to оператора цикла с параметром можно заменить словом downto. Оператор будет иметь вид:

for <уп> := <выражение 1> downto <выражение 2> do <оператор>;

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

Выполнение оператора for в первом варианте (to) происходит по следующей схеме:

1.Вычисляются значения выражения 1 и выражения 2. Это производится лишь один раз, перед входом в цикл, и поэтому границы цикла не могут изменяться операторами, стоящими внутри цикла.

2.Параметру цикла присваивается значение выражения 1.

3.Значение параметра цикла сравнивается со значением Выражения 2. Если параметр цикла меньше или равен этому значению, то выполняется тело цикла, в противном случае выполнение цикла заканчивается.

4.Значение параметра цикла изменяется на следующее значение в его в типе (для целых чисел увеличивается на единицу );происходит возврат к пункту 3.

При работе с оператором с параметром, нужно соблюдать следующие правила:

параметр цикла может иметь только порядковый тип;

в теле цикла нельзя изменять переменную «параметр цикла»;

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

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

Изображение цикла с параметром на блок-схеме приведено на рисунке 3.

26

Лекция 5. Операторы циклов. Оператор варианта

Рисунок 3 Цикл с параметром

Опера торы завершения цикла

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

Для досрочного завершения какого-либо оператора зацикливания (for, while или repeat. .until) предусмотрена команда Break.

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

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

Опера тор вариан та (опера тор выбора)

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

Формат оператора варианта: case <селектор> of <константа> : <оператор>;

...

<константа> : <оператор> else <оператор>

end;

Здесь <селектор> это выражение любого порядкового типа ;<константа> - постоянная величина того же типа, что и селектор, представляет собой различные значения, которые

27

П.П.Кудрявцев. Курс лекций по дисциплине: "Информатика и программирование"

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

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

else.

Изображение оператора варианта на блок-схеме приведено на рисунке 4.

Рисунок 4 Оператор варианта

Лекция 6. Перечисляемый т ип, т ип-диапазон

Перечисляемый т ип

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

type

Colors = (red, white, blue);

Days = (Mon, Tue, Wed, Thu, Fri, Sat, Sun);

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

Переменные любого перечисляемого типа можно объявлять без предварительного описания этого типа, например:

28