АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Case k of

1: x:=x+5;

2: x:=x+10;

3: x:=x+20;

else x:=0

end;

В данном условном операторе в роли переменной-селектора выступает целочисленная переменная k. Если k имеет значение равное 1, то текущее значение другой целочисленной переменной x увеличивается на 5, если k имеет значение равное 2, то текущее значение x увеличивается на 10, если k имеет значение 3, то значение x увеличивается на 20, если же переменная-селектор принимает любое другое значение, то переменная x обнуляется. Каждое из указанных после двоеточия действий производится простым оператором присваивания. Составные операторы внутри данного оператора case отсутствуют.

Возможности, предоставляемые программисту оператором case, мы используем в программе, которая имитирует работу простейшего электронного калькулятора. По запросу пользователя программа выполняет одно из четырех основных арифметических действий над любыми двумя введенными им с клавиатуры целыми числами. В начале программы-калькулятора пользователю предлагается ввести с клавиатуры два целых числа, над которыми будет произведена одна из арифметических операций. Затем, после ввода чисел операторами readln на экран компьютера операторами writeln выводится текст программного меню. Этот текст сообщает пользователю программы, нажатие какой клавиши соответствует выполнению какой арифметической операции. Например, нажатие клавиши с цифрой 1 производит сложение введенных чисел, 2 – вычитание и т. д.

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

 


 


Рис. 7.5.6. Программа - калькулятор и результаты ее работы

 

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

Мы сперва подсчитаем результат деления, присвоим его вещественной переменной d, а затем в списке вывода оператора writeln выведем значение переменной d в отформатированном виде, обеспечив таким образом точность выведенного вещественного числа - результата до третьего знака после запятой. Текст программы и результаты ее работы приведены на рис. 7.5.6.

Рассмотренный нами вариант оператора case является несколько упрощенным. В нем каждому варианту действий соответствует только одно значение переменной-селектора. Возможна и другая форма того же оператора, когда каждому варианту действий соответствует какая – либо группа значений селектора. Эта группа значений, находящаяся в операторе перед двоеточием, может представлять собой как несколько отдельных значений, перечисленных через запятую, так и целый диапазон значений. В последнем случае в соответствующем разделе оператора указывается только начальное и конечное значение диапазона, а между ними ставятся две горизонтальные точки.

Поясним сказанное на следующем примере. Перед нами фрагмент программы с условным оператором case, в котором переменной y присваиваются различные значения, представляющие собой степени x. Какое именно значение будет присвоено переменной y, зависит от значения переменной-селектора n:

case n of:

3,5,7: y:=x*x;

10..20: y:=x*x*x;

30..40: y:=x*x*x*x;

else y:=x

end;

В случае если переменная n принимает значение равное числам 3, 5 или 7, то значение y будет равно квадрату x. Если n примет любое целочисленное значение из диапазона от 10 до 20 (10,11, 12 и так далее до 20 включительно), то y будет присвоено значение равное кубу x. Если же n примет любое значение из диапазона от 30 до 40, то y получит значение, равное четвертой степени x. Наконец, если n не примет ни одно из вышеуказанных значений, то y будет равно первой степени x.

 

7.5.4. Безусловный оператор перехода Goto

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

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

Общий вид оператора безусловного перехода имеет вид:

goto <имя_метки>;

где goto – служебное слово, означающее в переводе с английского «перейти к», а <имя_метки> – имя метки, ранее описанное в разделе label. Имя метки это идентификатор или целое число без знака.

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

В общем виде, описание метки выглядит следующим образом:

label <имя_метки>;

где label – служебное слово, означающее в переводе «метка»,

Строка, содержащая метку должна выглядеть следующим образом:

<имя_метки>: < оператор >;

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

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

 

7.6. Операторы цикла

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

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

В общем виде цикл состоит из двух основных блоков:

1. Заголовок цикла. В заголовке цикла содержится некоторое условие, которое определяет число повторений цикла.

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

Всего в языке Паскаль используется три типов циклов:

Цикл с заранее заданным числом повторений. Его также называют циклом со счетчиком. (цикл for..to);

Цикл с предусловием (цикл while);

Цикл с постусловием (цикл repeat..until).

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

Общим для всех этих операторов является то, что они включают в себя управляющие конструкции (в операторах for..to и while – это строка заголовка, а в операторе repeat..until – строка заголовка и завершающая строка) и тело цикла.

Если количество повторений тела цикла заранее известно, то рекомендуется использовать оператор цикла for..to. В другом случае нужно использовать оператор repeat..until (если для решения поставленной задачи требуется, чтобы тело цикла выполнялось хотя бы один раз), либо оператор while (в этом случае перед выполнением тела цикла проверяется, есть ли вообще необходимость в его выполнении). Рассмотрим подробно каждый из этих видов цикла.

 

7.6.1. Оператор For

Общий вид данного оператора следующий:

for i:= n1 to n2 do

< тело цикла >;

где i – управляющая переменная цикла, называемая также счетчиком цикла, n1 – начальное значение счетчика цикла, n2 – конечное значение счетчика цикла, for, to и do – служебные слова (for в данном случае означает «для», to – «до», do – «делать, выполнять»). Весь текст заголовка можно расшифровать таким образом: для i, изменяющего значение от n1 до n2 выполнить. Имеется в виду выполнение тела цикла. При этом конечное значение счетчика цикла должно быть больше, чем начальное. В ходе работы данного оператора значение счетчика при каждом выполнении тела цикла увеличивается на единицу и таким образом принимает все целочисленные значения от n1 до n2, а тело цикла всего выполняется n2-n1+1 раз. Следует обратить внимание на то, что между заголовком цикла и телом цикла не ставится точка с запятой.

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

for c:=1 to 50 do

Begin

kg:=c*100;


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.007 сек.)