Remkomplekty.ru

IT Новости из мира ПК
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Условный переход паскаль

Условный переход паскаль

В языке Паскаль используется два оператора для реализации условных переходов — IF и CASE, а также оператор безусловного перехода GOTO. Они позволяют нарушить последовательный порядок выполнения инструкций программы.

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

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

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

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

else — часть в операторе if может отсутствовать:

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

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

Оператор выбора

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

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

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

Помимо операторов условного перехода существует также оператор безусловного перехода goto. Формат:

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

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

Учтите! Само понятие структурного программирования и общепринятый стиль программирования на структурных языках НЕ ПРИВЕТСТВУЕТ применение меток и операторов перехода в программах. Это затрудняет понимание программы как автором, так и потребителями, кроме того, применение меток отрицательно сказывается на эффективности генерируемого кода.

Волгоградский государственный педагогический университет
Кафедра алгебры, геометрии и информатики

Организация условного перехода. Оператор IF.

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

Сокращенная форма (Алгоритм: блок-схема – рисунок 3.а, структурограмма – рисунок 4.а):
IF
THEN ;
В качестве условия можно использовать переменную или выражение логического типа. В этой конструкции оператор выполняется в том случае, когда логическое выражение принимает значение TRUE. Вторая ветвь процесса, содержащая пустой оператор и в явном виде не описываемая, соответствует значению условия FALSE.
Другая, полная форма этого оператора имеет синтаксическую структуру (Алгоритм: блок-схема – рисунок 3.б, структурограмма – рисунок 4.б):
IF
THEN
ELSE ;
Здесь обе ветви процесса значимы. При значении логического выражения (переменной) TRUE выполняется Оператор 1, который всегда располагается за ключевым словом THEN, при FALSE – выполняется Оператор 2 (ветвь ELSE). Если в одну из ветвей требуется включить более одного оператора, то их следует объединить составным оператором BEGIN. END.

Вложенная конструкция операторов условного перехода используется в случае, если существует более двух ветвей в вычислительном процессе. В случае вложенной конструкции Оператор 1, или Оператор 2, или оба вместе представляют собой также операторы условного перехода. В этих случаях легко запутаться при отладке программы. Но следует помнить, что ELSE всегда относится к ближайшему слева THEN.
Пример 9. Для заданного с клавиатуры значения X вычислить Y по формуле:

Эту задачу можно решить двумя способами. Первый способ предусматривает использование трех операторов IF сокращенной формы. Алгоритм решения достаточно прост (структурограмма на рисунке 5.а). Последовательно проверяется три взаимно исключающих друг друга условия, образующих полную группу событий. Для любого X только одно условие примет значение TRUE, остальные два условия равны FALSE. Таким образом, оператор присвоения выполнится только один раз и этот оператор будет соответствовать условию, имеющему значение TRUE. Программная реализация — PR9_1.
Второй способ предусматривает использование двух вложенных операторов IF полной формы. Алгоритм этого способа реализован в виде блок-схемы на рисунке 5.б. Программная реализация — PR9_2.
Сравнительный анализ этих двух способов показывает, что первый проще в понимании и легче в отладке. Второй способ более сложный, однако более компактный и более быстрый.
Конечно, при одной реализации вычислительного процесса это преимущество не столь существенно, но если таких реализаций десятки тысяч, то несколько секунд можно сэкономить.

Читать еще:  Пирамидальная сортировка паскаль

PROGRAM PR9_1;
VAR X, Y: REAL;
BEGIN
WRITELN(‘ВВЕДИТЕ X’);
READLN(X);
IF X>= 1
THEN Y:= EXP(LN(X)/3)/2;
IF (X>0) AND (X

PROGRAM PR9_2;
VAR X, Y: REAL;
BEGIN
WRITELN(‘ВВЕДИТЕ X’);
READLN(X);
IF X = 1
THEN Y:= EXP(LN(X)/3)/2
ETSE Y:=X*X*0.33;
WRITELN(‘Y=’, Y)
END.

Пример 10. Составить программу, которая по введенному значению X вычисляет и выводит значение Y- F(X), где F(X) задана графически на рисунке 6.

Эта задача отличается от задачи, описанной в предыдущем примере, только тем, что нужно самому составить формулу для функции F(X). В предыдущей задаче эта формула была задана в качестве исходных данных. Таким образом, от вас требуют сделать формальную, математическую постановку задачи, которая в данном случае сводится к составлению по графику формулы.
Глядя на график, нетрудно увидеть, что на нем изображена кусочно-линейная функция, содержащая три прямых линии. Первая прямая имеет уравнение Y=-X-1 и определена для X 1. С учетом вышесказанного искомая формула будет иметь вид:

Текст программы составим по аналогии с программой PR9_2, которая подробно описана в предыдущем примере.
PROGRAM PR10;
VAR X,Y: REAL;
BEGIN
WRITELN(‘BBEДИTE X’); READLN(X);
IF X =1 THEN Y:= 0
ELSE Y:=X- 1;
WRITELN(Y=’, Y)
END.

Пример 11. Найти расстояние от внешней, произвольной точки М с координатами (X, Y) до контура геометрической фигуры, изображенной на рисунке 7.

В этом задании нужно рассмотреть чертеж геометрической фигуры. Нетрудно заметить, что во втором квадранте декартовой системе координат изображен сектор круга, центр которого расположен в центре системы координат. Радиус сектора равен R. Для решения поставленной задачи требуется выделить области и для каждой из них написать уравнение, с помощью которого можно вычислить расстояние D до контура фигуры. На чертеже выделено шесть областей, в каждой из которых поставлена одна произвольная точка Мк. Номер точки К соответствует номеру области. Любая точка в области М1, имеет кратчайшее расстояние до дуги сектора, вычисляемое по формуле:

Вторая область, помеченная точкой М2, имеет кратчайшее расстояние до точки с коорди-натами (-R, 0). Это расстояние можно найти по формуле:

Третья область, помеченная точкой М3, имеет кратчайшее расстояние равное расстоянию до оси абсцисс. Это расстояние легко найти по формуле:

Четвертая область, которой соответствует точка M4, имеет кратчайшее расстояние равное расстоянию до начала координат. Это расстояние находится по формуле:

Пятая область, помеченная точкой М5, имеет кратчайшее расстояние равное расстоянию до оси ординат. Это расстояние легко найти по формуле:

Последняя шестая область, помеченная точкой М6, имеет кратчайшее расстояние до верхней точки сектора с координатами (0, R). Это расстояние можно найти по формуле:

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

Учитывая приведенные выше формулы, можно найти кратчайшее расстояние до контура фигуры по формуле:

Теперь, когда формальная постановка задачи сделана и найдены формулы, можно перейти к этапу алгоритмизации (Самостоятельно) и написания программы:
PROGRAM PR11;
VAR
X, Y, R, D: REAL;
BEGIN
WRITELN(‘BBEДИТЕ РАДИУС СЕКТОРА R’);
READLN(R);
WRITELN(‘BBEДИТЕ КООРДИНАТЫ ТОЧКИ X, Y’);
READLN(X, Y);
IF (X 0) AND (SQRT(X*X + Y*Y) =0)
THEN D:= SQRT(X*X + Y*Y)-R;
IF (X =-R) AND (Y =0) AND (Y =0) AND (Y =0)
THEN D:= X;
IF (X>=0) AND (Y>=R)
THEN D:= SQRT(X*X + SQR(Y-R))
END;
WRITELN(‘PACCTOMHHE ДО КОНТУРА СЕКТОРА D=’, D:5:2)
END.

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

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

Большинство программистов считают использование в программе оператора безусловного перехода, знаком дурного тона и редко используют его. Но, не смотря на это, знать его надо, так как может оказаться, что Вы не сможете придумать альтернативного решения проблемы. Имя данного оператора Goto , смысловое значение в программе «перейти к …», а его общий вид такой:

m – метка, заранее заданная в разделе описания меток. Следующая программа показывает как работает оператор безусловного перехода.

В этой программе нет никаких условий, но именно о них будет идти далее речь.

Условный оператор (IF..THEN..ELSE)

В Паскале проверить какую-то часть программы для определения дальнейшего пути, по которому ей следует идти, есть оператор If . В зависимости от выполнения логического условия он указывает, какой блок выполниться следующим. Существует две формы записи: полная и краткая. Вторая отличается от первой тем что в ней имеется ветвь Else (иначе).

Читать еще:  Метод хорд паскаль

Общий вид краткой формы:

Общий вид полной формы:

В краткой форме выполняется оператор 1 тогда, когда условие A истинно, иначе управление переходит к следующему оператору. В полной форме если условие A истинно, то выполняется оператор 1, иначе выполняется оператор 2. Следует запомнить, что перед else точка с запятой не ставится.

Простейший пример:
If a>b Then a:=a+b Else b:=b+a;

Оператор IF проверяет правда ли, что a больше b . Если правда, то выполняем присвоение после THEN a:=a+b , в противном случае (если ложь) выполняем то, что следует после ELSE — b:=b+a .

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

Пример программы с условным оператором, записанным в краткой форме:

Пример программы с условным оператором, записанным в полной форме:

В Паскале можно вкладывать один условный оператор в другой, причем делать это можно множество раз. При этом следует отметить, что каждому Then соответствует ближайшее Else .

Еще один пример — перевод килограммов в фунты.

Оператор выбора

Когда количество альтернатив больше двух применяется оператор выбора Case . Его вид:

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

Кнопка 1 — Coca-Cola
Кнопка 2 — Fanta
Кнопка 3 — Sprite
Кнопка 4 — Aqua Minerale
Кнопка 5 — Тархун

Т.е. когда Вы нажмете кнопку 3, то автомат выдаст Вам Sprite, конечно если Вы заплатили до этого =). По подобному принципу работает оператор CASE. Приведу пример программы для автомата с напитками.

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

1) перечислением: 1, 10, 100, 1000

2) диапазоном: ‘d’..’k’

3) перечислением и диапазоном: 1..10, 20, 30, 50, 70..100

Выполнятся в операторе выбора, может только одна ветка (идущая раньше), даже когда селектор совпадает с несколькими значениями. Также, в отличие от If в Case можно ставить точку с запятой перед Else .

Пример программы выбора напитков:

Программа выполняется в зависимости от значения переменной button . Не обращайте внимания на #13 , #10 — это всего лишь спецсимволы перевода строки и возврата каретки, я их использовал просто для красивого вывода списка напитков.

Другой пример использования оператора case на pascal — программа, выбора валюты:

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

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

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

Большинство программистов считают использование в программе оператора безусловного перехода, знаком дурного тона и редко используют его. Но, не смотря на это, знать его надо, так как может оказаться, что Вы не сможете придумать альтернативного решения проблемы. Имя данного оператора Goto, смысловое значение в программе «перейти к …», а его общий вид такой:

Goto m;

m – метка, заранее заданная в разделе описания меток. Следующая программа показывает как работает оператор безусловного перехода.

В этой программе нет никаких условий, но именно о них будет идти далее речь.

Условный оператор:

В Паскале проверить какую-то часть программы для определения дальнейшего пути, по которому ей следует идти, есть оператор If. В зависимости от выполнения логического условия он указывает, какой блок выполниться следующим. Существует две формы записи: полная и краткая. Вторая отличается от первой тем что в ней имеется ветвь Else (иначе).

Общий вид краткой формы:

Общий вид полной формы:

В краткой форме выполняется оператор 1 тогда, когда условие A истинно, иначе управление переходит к следующему оператору. В полной форме если условие A истинно, то выполняется оператор 1, иначе выполняется оператор 2. Следует запомнить, что перед else точка с запятой не ставится.

Пример программы с условным оператором, записанным в краткой форме:

Пример программы с условным оператором, записанным в полной форме:

В Паскале можно вкладывать один условный оператор в другой, причем делать это можно множество раз. При этом следует отметить, что каждому Then соответствует ближайшее Else.

Оператор выбора:

Когда количество альтернатив больше двух применяется оператор выбора Case. Его вид:

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

1) перечислением: 1, 10, 100, 1000

Читать еще:  Табулирование функции паскаль примеры

2) диапазоном: ‘d’..’k’

3) перечислением и диапазоном: 1..10, 20, 30, 50, 70..100

Выполнятся в операторе выбора, может только одна ветка (идущая раньше), даже когда селектор совпадает с несколькими значениями. Также, в отличие от If в Case можно ставить точку с запятой перед Else.

Рассмотрим программу, в которой условия проверяет оператор выбора.

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

Урок 6. Условный оператор if

Урок из серии: «Язык программирования Паскаль»

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

В языке Паскаль имеются два условных оператора: if (оператор ветвления) и case (оператор выбора). Оператор if обеспечивает выбор из двух альтернатив, оператор выбора case позволяет сделать выбор из произвольного числа имеющихся вариантов.

На этом уроке рассмотрим оператор If.

Условный оператор If (оператор ветвления)

Полная формы условного оператора называется If-then-else, имеет вид:

Если в качестве оператора должна выполняться серия операторов, то они объединяются в операторные скобки Begin-End.

Слова if (если) и Then (то) – зарезервированные.

Замечание. Перед ключевым словом else (иначе) точка с запятой не ставится, она ставиться после всего оператора If.

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

На рисунке показана блок-схема полной формы оператора.

Алгоритм выполнения полного условного оператора:

  1. Проверяется значение логического выражения, записанного в условии после слова If
  2. Если условие истинно (значение выражения условие равно True), то выполняется оператор 1, указанный после слова Then
  3. Если условие ложно, то выполняется оператор 2, записанный после слова Else.

Неполная форма условного оператора называется if-then, имеет вид:

Если в качестве оператора должна выполняться серия операторов, то они объединяются в операторные скобки Begin-End.

В неполном ветвлении ветвь Else отсутствует.
На рисунке показана блок схема оператора if-then.

Алгоритм выполнения неполного условного оператора

  1. Проверяется значение логического выражения, записанного в условии после слова If
  2. Если условие истинно (значение выражения условие равно True), то выполняется операторы, указанный после слова Then
  3. Если условие ложно, то ничего делать не надо. Происходит переход к следующему оператору.

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

Применение условного оператора if рассмотрим на примерах.

Пример 1. С клавиатуры ввести два различных числа. Найти большее из них и вывести его на экран.

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

Пример 2. Даны три отрезка. Можно ли из них построить треугольник?

Решение. Для любого треугольника сумма его двух сторон должна быть больше третьей стороны (неравенство треугольника). Если a, b, c – стороны предполагаемого треугольника, то нужно сравнить длину каждого отрезка с суммой двух других. Если хотя бы в одном случае отрезок окажется больше суммы двух других, то треугольник из таких отрезков не построить.

Для решения этой задачи используется оператор ifthenelse со сложным условием.

Задачи для самостоятельного выполнения

  1. Найти наибольшее из трех данных чисел.
  2. Запишите условный оператор, в котором значение переменной вычисляется по формуле: a + b, если a — нечетное и a*b, если a — четное.
  3. Вывести на экран номер четверти, которой принадлежит точка с координатами (x, y), при условии, что x и y отличны от 0.
  4. После выполнения операторов
    a := 0;
    If a<>0 Then; a := 2
    значение переменной равно двум. Объясните почему.
  5. Если целое число M делится нацело на целое число N, то вывести на экран частное от деления, в противном случае — сообщение »M на N нацело не делится».

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

Проверь себя!

Видеоурок на тему «Условный оператор» от проекта INFOUROK.RU (Игорь Жаборовский).

Понравился видеоурок? Еще 25 видеоуроков Игоря Жаборовского вас ждут здесь!

Ссылка на основную публикацию
Adblock
detector