Letysite.ru

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

Программирование разветвляющихся процессов

Программирование разветвляющихся процессов

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

Условный оператор имеет следующие формы записи:

1. if логическое выражение then оператор1 else оператор 2;

2. if логическое выражение then

begin группа операторов 1 end
else

begin группа операторов 2 end;

3. if логическое выражение then оператор;

4. if логическое выражение then

begin группа операторов end.

Если логическое выражение истинно, тогда выполняется опе­ратор 1 или группа операторов 1, иначе выполняется оператор 2, или группа операторов 2, или оператор if пропускается и выполняется следующий за ним оператор.

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

A, X, Y: real; Описание вещественных переменных

begin Начало программы

writeln (‘Введите А, Х’); Вывод на экран фразы “Введите А,Х”

readl (А, X); Ввод значений переменных

Y := А + SQRT (X — А) Вычисление Y по первой формуле

Y := LN (ABS (X+A)) +SIN(X)* SIN(X); Вычисление Y по второй формуле

writeln (‘Y= ‘Y:1Q:2, ‘ X= ‘, X:5:2); ВыводY,X

end. Конец программы

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

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

Виды операторов цикла.

1. Оператор цикла с предварительным условием.

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

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

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

Форма записи оператора цикла с предусловием:

while логическое выражение do

begin операторы циклической части программы (тело цикла) end;

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

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

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

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

Пример. Вычислить значения функции Y при изменении X от С до D с шагом Н.

Программа

X, A. Y, C, D, H : real;

writeln (‘Введите С, D, H, A’);

while x A then y:= x*cos(A*x)

Оператор цикла с последующим условием имеет следующую форму записи:

тело цикла (выполняемые операторы)

until логическое выражение.

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

Пример. Вычислить значения функции Y при изменении X от С до D с шагом Н.

Программа

X, A. Y, C, D, H : real;

writeln (‘Введите С, D, H, A’);

until x A then y:= x*cos(A*x)

Лабораторная работа 10 (2 часа)

Borland Pasсal.

Одномерные массивы

Массив — это множество однотипных элементов.

При описа­нии массива необходимо указать общее число входящих в массив элементов и тип этих элементов. Например:

В : array [1..5] of integer;

Из описания массивов следует, что одномерный массив А состоит из 10 вещественных чисел, а одномерный массив В состоит из 5 элементов целого типа.

При работе с массивами выполняются циклические дейст­вия.

Пример. В массиве Р(20) найти количество положительных элементов и сформировать новый массив Р1, каждый элемент которого полу­чается делением соответствующего элемента массива Р на найден­ное количество.

Программа.

Р, Р1 : array [1..20] оf real;
К, I: integer;

writeln (‘Исходный массив Р’);

writeln (‘Количество положительных элементов = ’,k);

writeln (‘Новый массив Р1’);

Двумерные массивы

При описании двумерных массивов (матриц) необходимо указать границы изменения двух индексов и тип элементов матри­цы. Например:

В : array[1. .2,1. .2] of integer;

В данном примере матрица А состоит из трех строк и пяти столбцов. Все элементы матрицы А являются вещественными числами. Матрица В состоит из двух строк и двух столбцов. Все элементы матрицы В являются целыми числами.

Пример. Составить программу, которая в матрице А(4,5) определит сумму элементов каждой строки, выберет среди этих сумм наи­большую и выведет на экран дисплея матрицу А, суммы строк, наибольшую сумму и номер строки с наибольшей суммой.

А : array[1..4,1..5] of real; C, N, I, J : integer; max : real;

writeln (‘Введите матрицу А(4,5)’);

writeln (‘Строка № ‘,i:10, ‘сумма элементов = ‘, C:10:2);

ifi=1 then begin max:= C; n:= i end;

if c > max then begin max:= C; n:= I end

writeln (‘Матрица А’);

writeln (‘Максимальная сумма: ’,S:8:3);

writeln(‘Номер строки: ‘,N:3)

1. Глушаков С. В. Персональный компьютер: Учеб. курс / С. В. Глушаков, И. В. Мельников. – Харьков; Ростов-на-Дону: Фолио: Феникс, 2000. – 520 с.

2. Информатика: Базовый курс, 2-е издание / Под ред. С. В. Симоновича.: Питер, 2007. – 640 с.

3. Кукарникова Т. Э. Информатика: Учеб. пособие. – Воронеж: Изд-во Воронеж. гос. ун-та, 2000. – 317 с.

4. Степаненко О. С. Персональный компьютер: Учеб. курс – 2-е изд. пересмотр. и доп. – М. и др.: Диалектика, 2001. – 383 с.

5. Левин А. Самоучитель Левина. Windows XP и Vista. – Спб.: Питер, 2008. – 624 с.

Груздев Владислав Николаевич

Часть 2. Приложения Word, CorelDraw, MathCad, Pascal

ПРОГРАММИРОВАНИЕ ПРОЦЕССОВ с разветвляющейся структурой

Цель работы: овладение практическими навыками разработки алгоритмов и программ с разветвляющейся структурой на языках Turbo Pascal и С.

Теоретический материал

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

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

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

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

Стандартные блок-схемы разветвляющегося алгоритма приведены ниже:

Условные конструкции в ТР.

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

Читать еще:  Важнейшие аспекты информационной безопасности

1) Оператор безусловного перехода GOTO позволяет изменять последовательность выполнения операторов в программе.

Формат записи оператора:

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

Имя метки должно быть предварительно описано в разделе описания меток Label.

Неправильное использование в программе оператора GOTO усложняет читаемость программы.

2) Составной оператор ( begin … end ) представляет собой совокупность последовательно выполняемых операторов, заключенных в операторные скобки begin … end.

Этот оператор записывается следующим образом:

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

Отдельные операторы внутри составного оператора отделяются друг от друга точкой с запятой.Перед символом end точку с запятой можно не ставить, т. к. это слово не является отдельным оператором. Если же « ; » будут поставлены, то они будут рассматриваться как пустой оператор, т. е. оператор не выполняющий никакого действия.Сам блок операторов программы является ( можно считать ) составным оператором, т. к. он тоже заключен в операторные скобки BEGIN . . . END, внутри которых располагается последовательность операторов, разделенных « ; ».

3) Условный оператор IF обеспечивает в зависимости от условия выбор одного из возможных действий.

Существует два варианта записи оператора:

a) Полный вариант:

If S then A else B ;

b) Укороченный вариант:

где: S – условие (логическое выражение), которое проверяется на истинность.

A – оператор (только один!), выполняющейся, если выражение S – истинно.

B – оператор (только один!), выполняющейся, если выражение S – ложно.

Если вместо A или B требуется использовать несколько операторов, то применяется составной оператор (BEGIN . . . END).

Примеры использования оператора IF приведены в Приложении 1.

4) Оператор выбора варианта Case … of … end.

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

Существует две формы записи этого оператора:

где S – выражение порядкового типа, значение которого вычисляется;

сl,c2. сN—это константы или метки, с которыми сравниваются значения выражения селектора (S). Они должны быть одного гита с селектором.

Выбор оператора определяется совпадением значения селектора S и константы (метки сl,c2. cN), стоящей перед оператором.

, , — один оператор, либо составной оператор (begin. end),

— оператор, который выполнится, если значение выражения S не совпадет ни с одной из меток (констант) сl,c2. cN.

Примеры использования оператора IF.

a) IF p>0.5 THEM GOTO 15;

b) IF (x>0) AND (x 0 THEN Z:=sin(x)/cos(x) ELSE Z:=cos(x);

Ключевое слово ELSE всегда относится к ближайшему ему IF.

Пример 1. Вычислить и вывести на экран значение заданной функции

Уроки 27 — 28
§ 3.4. Программирование разветвляющихся алгоритмов

Ключевые слова:

• условный оператор
• неполный условный оператор
• составной оператор
• вложенные ветвления

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

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

if then else

Для записи неполных ветвлений используется неполная форма условного оператора:

if then

Слова if — then — else переводятся с английского языка на русский как если — то — иначе, что полностью соответствует записи ветвления на алгоритмическом языке.

Перед else знак «;» не ставится.

В качестве условий используются логические выражения:

• простые — записанные с помощью операций отношения;
• сложные — записанные с помощью логических операций.

Пример 1. Запишем на языке Паскаль рассмотренный в п. 2.4.2 (пример 8) алгоритм определения принадлежности точки х отрезку [а, b].

Пример 2. Воспользуемся неполным условным оператором для записи на языке Паскаль рассмотренного в п. 2.4.2 (пример 9) алгоритма присваивания переменной у значения наибольшей из трёх величин а, b и с.

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

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

В условном операторе и после then, и после else можно использовать только один оператор. Если при некотором условий требуется выполнить определённую последовательность операторов, то их объединяют в один составной оператор.

begin end называется составным оператором.

Пример. Алгоритм решения квадратного уравнения вам хорошо известен. Запишем соответствующую программу на языке Паскаль.

3.4.3. Многообразие способов записи ветвлений

В качестве оператора после then и else можно использовать условный оператор. Например, возможна следующая конструкция:

if then

if then

else

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

Пример. Воспользуемся вложенным ветвлением для записи на языке Паскаль рассмотренного в п. 2.4.2 (пример 10) алгоритма решения линейного уравнения.

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

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

if then else

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

if then

САМОЕ ГЛАВНОЕ

При записи на языке Паскаль разветвляющихся алгоритмов используют условный оператор:

if then else

Для записи неполных ветвлений используется неполный условный оператор:

if then

Если при некотором условии требуется выполнить определённую последовательных операторов, то их объединяют в один составной оператор, имеющий вид:

begin end

Вопросы и задания

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

2. Как на языке Паскаль записывается полное и неполное ветвление?

3. Является ли условным оператором следующая последовательность символов?

а) if х =у then х:=0; у:=0 else write (z)
в) if x b then с:=1;
if a>b then d:=2;
if a 5 then с: =2

else с:=3

Какое значение имеет переменная а, если в результате выполнения условного оператора переменной с присваивается значение 3?

13. Напишите программу, вычисляющую значение функции:

14. Составьте программу для решения задачи № 21 к § 2.4 (определение дня недели).

15. Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит 8. Напишите программу, которая по введённым координатам двух полей (k, l) и (m, n) определяет, имеют ли эти поля один цвет.

16. Напишите программу, в которой пользователю предлагается дополнить до 100 некоторое целое число а (а — случайное число, меньшее 100). Ответ пользователя проверяется и комментируется.

Читать еще:  Защитные мероприятия по безопасности труда

Презентация по теме «Программирование разветвляющихся процессов»

Как организовать дистанционное обучение во время карантина?

Помогает проект «Инфоурок»

Описание презентации по отдельным слайдам:

Тема 1 Основы алгоритмизации и программирования Лекция 1.4. Программирование разветвляющихся процессов

Основная: Подбельский В.В., Фомин С.С. Программирование на языке Си: Учеб. пособие. – М.: Финансы и статистика, 2004. Дополнительная: С/C ++ Структурное программирование. Практикум. Программирование на языке высокого уровня. Питер, 2004. Юркин А. Задачник по программированию. Гриф МО. Учебное пособие, Питер, 2002. Шмидт Г. Самоучитель Си++. СПб.: БХВ – Петербург, 2004. Литература

Вопросы: 1. Логические значения и выражения. 2. Условный оператор. 3. Метки и оператор перехода. 4. Пример программирования разветвляющихся процессов.

1. Логические значения и выражения

Логические значения: true – истина; false – ложь. В языке Си логический тип данных отсутствует, Обычно: true кодируется как 1 (любое целое число, отличное от нуля); false как 0. Логические операции выполняются над арифметическими операндами (числами, переменными, выражениями) или отношениями, результат соответствует целочисленному значению 1 (истина) или 0 (ложь).

Логические операции сравнения Равно == Не равно != Меньше, чем Больше или равно >=

Примеры записи операций сравнения Z = = 3.1416 X > 0 A1 != b1 Операции = = и != имеют более низкий ранг, по сравнению с другими операциями сравнения, например, конструкция F = ros эквивалентна записи (F =ros)

Логические операции && — конъюнкция, | | — дизъюнкция. Результаты выполнения логических операций А B && | | false false false false true false false true false true false true true true true true

Примеры записи логических операций: (ozenka >= 2)&&(ozenka = 2) && (y1 3.14) && (r 0)&&(a =0) else ; Перед закрывающей операторной скобкой символ «;» записывается обязательно. После операторных скобок перед else символ «;» не ставится. Условные операторы можно вкладывать друг в друга.

3. Метки и оператор перехода

Метки Метка представляет собой идентификатор, который отделяется от оператора двоеточием. Пометить можно и пустой оператор. Примеры записи Met1: a=1.0; rur1:; Специально объявлять метки не нужно, они объявляются своим появлением в тексте программы.

Оператор перехода обеспечивает изменение порядка выполнения команд программы и имеет вид goto метка; Все символы оператора перехода записываются без пробелов. Пример записи оператора перехода goto Met1; Оператор перехода goto

4. Пример программирования разветвляющихся процессов

printf («nVvedite koeffiz ‘b’= «); scanf(«%lf»,&b); printf («nVvedite koeffiz ‘c’= «); scanf(«%lf»,&c); d=b*b-4*a*c; if (d 0) && (x 3) && (x 5) z=2; printf(«nz=%lfn»,z); >

1. Логические значения. 2. Логические операции и выражения. 3. Порядок выполнения логических операций. 4. Назначение и структура условного оператора. 5. Назначение и форма записи оператора безусловной передачи управления. Вопросы для самоподготовки

Задания к практическому занятию. 1) заданы длины трех отрезков х1, х2 и х3. Составить алгоритм и программу, которая по результатам анализа вводимых длин отрезков выводит на экран сообщение: разносторонний треугольник; равнобедренный треугольник; равносторонний треугольник; построить треугольник нельзя. 2) Составить программу проверки соблюдения неравенства для любых значений х1 и х2 для функции f(x) = x2. Значения х1 и х2 задаются вводом.

3) Составить алгоритм и программу, которая определяет, принадлежит ли точка с заданными пользователем координатами (х, у), к заштрихованной области рисунка. Ограничения: (a – A)

  • Коренькова Татьяна Николаевна
  • Написать
  • 217
  • 02.02.2018

Номер материала: ДБ-1114473

Добавляйте авторские материалы и получите призы от Инфоурок

Еженедельный призовой фонд 100 000 Р

  • 02.02.2018
  • 196
  • 02.02.2018
  • 381
  • 02.02.2018
  • 85
  • 02.02.2018
  • 1608
  • 02.02.2018
  • 201
  • 02.02.2018
  • 296
  • 02.02.2018
  • 117
  • 02.02.2018
  • 3153

Не нашли то что искали?

Вам будут интересны эти курсы:

Все материалы, размещенные на сайте, созданы авторами сайта либо размещены пользователями сайта и представлены на сайте исключительно для ознакомления. Авторские права на материалы принадлежат их законным авторам. Частичное или полное копирование материалов сайта без письменного разрешения администрации сайта запрещено! Мнение редакции может не совпадать с точкой зрения авторов.

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

Тема 2. Программирование разветвляющихся процессов

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

5.1. Методические указания

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

1 этап – выполнение операторов, общих для всех ветвей программы (блок 1);

2 этап – принятие решений (логический блок 2), проверяется некоторое логическое условие и в зависимости от его значения False (Ложь) или True (Истина) осуществляется выбор одной из ветвей программы;

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

4 этап – независимо от пути решения задачи осуществляется возвращение к общему линейному участку 2 (блок 5).

С учётом названных особенностей алгоритм вычисления действительных корней уравнения ax2 + bx + c = 0 имеет вид (рис. 5.2).

Переходы от одного блока к другому называются условными, если они осуществляются только при выполнении некоторого условия. В рассмотренном алгоритме – это переходы от блока 3 к блокам 4 и 6. После выполнения всех действий в любой из ветвей осуществляется переход к блоку 7. Этот переход называется безусловным. Для реализации различных переходов в программе используются специальные операторы передачи управления: оператор безусловного перехода Goto, условный оператор If и оператор отбора Case.

5.2. Условный оператор If и составной оператор Begin … End

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

в которой If…Then…Else – зарезервированные слова языка, означающие соответственно ЕСЛИ…ТО…ИНАЧЕ, квадратные скобки означают, что часть Else может отсутствовать. Условный оператор может быть записан в одну строку, однако рекомендуется придерживаться требований структурированной записи программы.

Читать еще:  Каноническая форма задачи линейного программирования

Если логическое выражение принимает значение ИСТИНА (True), то выполняется оператор 1, если же оно принимает значение ЛОЖЬ (False), то выполняется оператор 2. В любом случае далее выполняется оператор, стоящий в программе за условием.

Например, оператор, вычисляющий Y = |X|, будет иметь следующий вид:

Условный оператор может не иметь конструкции Else, тогда он называется сокращённым условным оператором. Если логическое выражение принимает значение ЛОЖЬ (False), сразу выполняется оператор, следующий за условием.

Рассмотрим подробнее составные части условного оператора.

Логическим выражением (булевым) называется выражение, имеющее значение типа Boolean, т.е. True или False.

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

В языке PASCAL допустимы следующие операции отношения:

Отношение принимает значение True, если оно справедливо для входящих в него операндов и False в противном случае. Например, 10>7 имеет значение истина, а 5 =5) Or Not (11 b, то значения переменных увеличить на 6. Алгоритм и программа имеют следующий вид:

Program AANOB;

Var

Begin

WriteLn (‘Введите A, B’);

Read (A, B);

End

Else Begin

End;

End.

Результаты выполнения программы

Введите A, B

4 2

В ветви Then внешнего разветвления содержится ещё один оператор. Конструкция Elseво внешнем ветвлении отсутствует. Ветвь Else относится к ближайшему If, не имеющему Else. Структурированный вид программы предполагает написание соответствующих If…Then…Else друг под другом. Операторы, ограниченные операторными скобками Begin … End, записывают также друг под другом и следуют относительно Beginи End.

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

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

1: Write (‘ОПЕРАТОР С МЕТКОЙ’);

Метки, используемые в Turbo Pascal, могут быть двух типов:

· целым числом (в пределах от 0 до 9999);

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

Label 1, 2, 3, A, B, X2;

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

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

В общем случае конструкция оператора отбора имеет вид:

End;

В этой структуре: Case … Of … [Else …] End – зарезервированные слова языка PASCAL, которые можно перевести соответственно как ВЫБОР … ИЗ … [ИНАЧЕ …] КОНЕЦ;

C1, C2,…, CN – константы, с которыми сравнивается значение выражения «селектор»;

оператор 1, оператор 2,…, оператор N – операторы, из которых выполняется тот, с константой которого совпадает значение выражения «селектор»;

оператор (N+1) – оператор, который выполняется, если значение выражения «селектор» не совпадает ни с одной из констант C1, …, CN.

Ветвь оператора ELSEявляется необязательной. Если она отсутствует и значение выражения «селектор» не совпадает ни с одной из перечисленных констант, то выполняется оператор, стоящий за End. В отличие от оператора If перед словом Else точку с запятой можно ставить.

Если для нескольких констант нужно выполнить один и тот же оператор, их можно перечислить через запятую (или даже указать диапазон, если возможно), сопроводив их одним оператором. Например:

0, 2, 4, 6, 8: WriteLn (‘Четная цифра’);

1, 3, 5, 7, 9: WriteLn (‘Нечетная цифра’);

10…100: WriteLn (‘Число от 10 до 100’);

WriteLn (‘Отрицательное число или больше 100’)

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

Покупатель в 2002 году, имея 100 рублей, заплатил за покупку 23 рубля. Определить минимальное количество купюр в наборе, которое он получит в качестве сдачи. (Возможные купюры: 5 руб., 10 руб., 50 руб.).

Один из вариантов программы решения этой задачи выглядит так:

В блоке 1 вводим имеющуюся сумму А и сумму за покупку B в рублях. Далее в блоке 2 находим оставшуюся сумму N и обнуляем счётчик купюр K. Затем проверяем в блоке 3 больше ли оставшееся сумма, чем 50 (руб.), если да, то селектору R присваиваем значение 2, и осуществляем переход в блок 10, где оператор выбора передаёт управление блоку 11.

В нём из оставшейся суммы N вычитаем 50 (руб.) и в блоке 14 увеличиваем счётчик купюр на 1. После этого возвращаемся к блоку 3 и сравниваем оставшуюся сумму N с достоинством трёх купюр, т.о. процесс повторяется до тех пор, пока оставшаяся сумма не станет меньше 5 руб. Как результат вычислений печатаем значение счётчика купюр K.

Program MONEY;

Label 1, 7;

Var

A, B, N, K, R: Integer;

Begin

Write (‘Исходная сумма’); ReadLn (A);

Write (‘Потраченная сумма’); ReadLn (B);

1: If N >= 50 Then R := 2 Else

If (N = 10) Then R := 3 Else

If (N = 5) Then R := 4 Else

Begin

WriteLn (‘Минимальное количество купюр = ’, K);

Goto 7

End;

Case R Of

End;

Goto 1;

End.

Результат выполнения программы

Исходная сумма 100

Потраченная сумма 23

Минимальное количество купюр = 4

5.4. Контрольные вопросы

1. Какой процесс называется разветвляющимся?

2. Из каких блоков состоит схема разветвляющегося процесса в общем случае?

3. Какие переходы называются условными, безусловными?

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

5. Какую структуру имеет условный оператор IF?

6. Дайте определение логического выражения.

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

8. Какие логические функции вам известны? Приведите примеры логических выражений с ними.

9. Каков порядок вычисления значения логического выражения?

10. Какие побитовые операции реализуются в языке Turbo Pascal?

11. Что такое составной оператор?

12. Существуют ли какие-либо ограничения на количество разветвлений в алгоритмах?

13. Для каких целей используют оператор безусловного перехода GOTO?

14. Каким образом описывают и используют метки в программе?

15. Что позволяет делать оператор отбора CASE? Какова его конструкция?

16. Какой тип должен иметь селектор отбора и метки?

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