Из чего состоит программа разветвленного программирования

Обновлено: 07.07.2024

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

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

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’);

readln(C, D, H, A);

while x <= D do

if x > A then y:= x*cos(A*x)

elsey:=sin(x) + A*a;

writeln (‘y= ‘,y:10:2, ‘ x= ‘,x:10:2);

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

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

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

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

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

Программа

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

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

readln(C,D,H,A);

ifx > A then y:= x*cos(A*x)

else y:= sin(x) + A*a;

writeln (‘y= ‘,y:10:2, ‘ x= ‘,x:10:2);

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

Существует два варианта оператора цикла с параметром.

1. for i:= a1 to a2 do

2. for i:= a1 downto a2 do

где: i - параметр цикла, являющийся переменной порядкового типа; а1 - выражение, определяющее начальное значение параметра цикла; а2 - выражение, определяющее конечное значение параметра цикла.

Цикл действует следующим образом. Вначале вычисляются и запоминаются начальное и конечное значения параметра цикла. Далее параметру i цикла присваивается начальное значение. Затем значение параметра i цикла сравнивается со значением а2. Пока параметр цикла остается меньше или равен конечному значению а2 (в первом варианте) и больше или равен конечному значению а2 (во втором варианте) выполняется в очередной раз операторы из тела цикла. В противном случае происходит выход из цикла.

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

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

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

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

readln(C,D,H,A);

for i:=C to D do begin ifx > A then y:= x*cos(A*x)

elsey:=sin(x) + A*a;

writeln (‘y= ‘,y:10:2, ‘ x= ‘,x:10:2);

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

Borland Pasсal.

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

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

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

А : array[1..10] of real;

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

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

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

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

Программа.

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

writeln(‘Введите Р(20)’);

for i:=1 to 20 do

for i:=1 to 20 do

ifP[i] > 0 then

for i:=1 to20 do

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

for i:=1 to 20 do

write (P[i]:6:2);

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

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

for i:=1 to20 do

write (p1[i]:6:2);

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

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

А : array[1..3, 1..5] of real;

В : 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)’);

for i:=1 to 4 do

for j:=1 to 5 do

writeln (‘A(‘,i,’,’,j,’)=’); readln (a[i,j])

for i:=1 to 4 do

for j:=1 to 5 do

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 (‘Матрица А’);

for i:=1 to 4 do

forj:=1 to 5 do

write (A[i,j]:8:3); 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 с.

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

Для него характерны следующие особенности:

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

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

Рис. 9. Схема смешанной программы [по: Sime М. The Elements of а Teaching System. В.: К. Austwick (red.). Teaching Machines and Programming. Oxford—London—Edinburgh. 1964, Pergamon Press]: M — информация (знания и основные умения); 5 — корректирующая информация, связанная с содержанием основной информации; R — корректирующая информация, не связанная непосредственно с основной информацией; Т — вопросы, касающиеся содержания основной информации

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

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

• Содержание отдельных рамок дифференцируется применительно к способностям, проявляемым учениками, а также к степени их продвинутости в учебе по данному

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

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

Структура смешанной программы в шеффилдском варианте графически изображена на рисунке 9.

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

Закрепляющий блок

Смешанная программа (шеффилдский вариант)

3. Величина шагов в шеффилдской программе (различна, одинакова)

темп и содержание

5. Настоящая программа представляет пример линейной (переходите к рамке 6), разветвленной (рамка 7), смешанной программы в шеффилдском варианте (рамка 8).

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

7. Ваш ответ: «Изучаю разветвленную программу». Но разве можно считать первую рамку типичной для разветвленной программы?

Вернитесь к рамке 5 и найдите правильный ответ.

8. Ответ: «Изучаю смешанную программу в шеффилдском варианте». Очень хорошо. Переходите к рамке 9.

Конец шеффилдской программы

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

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

Введение

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

Команды ветвления

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

  1. Команды условных переходов (условные операторы).
  2. Команды выбора или команды вариантов.
  3. Команды безусловного перехода (безусловные операторы).

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

GOTÒ считается резервным выражением, выполняющим переход на метку. Метка в Turbo Pascal выполняет идентификацию в произвольном формате, что даёт возможность задать наименование необходимому оператору и далее выполнять обращение к этому оператору посредством ссылок. В качестве метки можно использовать и целые числа без знака. Метка обязана помещаться непосредственно перед оператором, который она помечает, и отделяется от него символом двоеточия. Перед использованием метки в программе, она должна быть описана. Описывать метку следует посредством резервного слова LÀBEL (что переводится как метка), а затем следует перечисление меток. К примеру, так:

Готовые работы на аналогичную тему

Получить выполненную работу или консультацию специалиста по вашему учебному проекту Узнать стоимость

Задача оператора GOTÒ заключается в передаче управления оператору, определённому меткой. При использовании меток, необходимо соблюдать следующие правила:

  1. Указанные оператором GOTÒ метки, должны обязательно присутствовать в описаниях.
  2. Описанные непосредственно в функции метки, могут применяться только локально.

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

В этом выражении IF, THEN, ÈLSE считаются резервными словами, которые переводятся как «если», «то», «иначе», это выражение, имеющее тип логики, , это операторы Turbo Pascal.

Запись ÈLSE , которая считается как часть условного оператора, применяется не каждый раз и её можно пропустить. Организация разветвлённой структуры приведена ниже:

Организация разветвлённой структуры. Автор24 — интернет-биржа студенческих работ

Рисунок 1. Организация разветвлённой структуры. Автор24 — интернет-биржа студенческих работ

Приведём конкретный пример. Необходимо разработать программу, которая определяет самое большое из пары чисел x и y, а его величину сохранить в переменной maх:

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

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

Рассмотрим конкретное использование оператора варианта. Необходимо помнить, оператор варианта следует применять при выполнении ввода или вывода значений используемых данных скалярного типа. Рассмотрим пример фрагмента программы, в котором требуется с внешнего носителя задать объектный порядковый номер из списка значений COLÒR. Оператор CPSÈ пишет необходимое значение для переменной CLR. Таким же образом выводится величина CLR при помощи оператора варианта:

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

Составные операторы следует использовать тогда, когда по синтаксическим правилам Турбо Паскаля можно записать только один оператор, а требуется исполнить несколько операторов. Различные операторы, заключённые в тело составных операторов, нужно разделять точкой с запятой. Но символику ènd можно не выделять при помощи точки с запятой, так как она не является отдельным оператором. Но если знак точка с запятой всё-таки стоит, то программой это воспринимается как пустой оператор, а именно оператор, не выполняющий никаких действий. Сама программа, состоящая из набора операторов, также является составным оператором, так как заключена в операторные скобки BÈGIN . . . ÈND, а в его теле располагается операторный комплект, разделяемый точкой с запятой.

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

В алгоритме разветвленной структуры (ветвлении) в зависимости от истинности или ложности некоторого условия выбирается одна из двух серий команд.

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

Блок-схема Программа на языке Pascal
program choice; var a, b, c, d: real; begin readln(a, b, c); d := b * b - 4 * a * c; if d < 0 then writeln('корней нет') else writeln('корни есть'); end.

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

В том случае, если при ложности условия никаких действий не выполняется, на блок-схеме на стрелке «НЕТ» не чертят никаких блоков, а в записи условного оператора пропускают «else».

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

if x > 0

Then begin

End

else z := z + x;

Если в программе есть ветвление, нужно.

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

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

3. Если вариантов больше двух, выбрать последовательность проверки условий. При необходимости построить блок-схему.

4. Записать алгоритм на языке программирования.

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

Операции сравнения

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

Операция Обозначение Пример записи
Равно? = d = 0
Больше? > x + y > 100
Меньше? < z < 5 * x
Больше либо равно? >= sin(a) >= 0.5
Меньше либо равно? <= v <= 60
Не равно? <> y <> 0

Результатом операции сравнения всегда будет логическое значение — либо false (ложь), либо true (истина).

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

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

Читайте также: