Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика 3.doc
Скачиваний:
21
Добавлен:
12.11.2018
Размер:
520.7 Кб
Скачать

Вопрос 11 Конструкция типа ”выбор” (”вариант”)

  1. Пример программирования на языке Паскаль с использованием конструкции ”ВЫБОР” .

{...}

program casep;

const c=10;

var n1,n2:integer;

begin

write('Введите n1,n2:'); readln(n1,n2);

writeln('Исходные данные: n1=',n1,' n2=',n2,' c=',c);

writeln('n1+n2=',n1+n2);

write('Результат: ');

case n1+n2 of

2: writeln('n1+n2=2');

1,3: writeln('n1+n2=1 OR 3');

4..9: writeln('4<=n1+n2<=9');

c: writeln('n1+n2=',c);

-5..0,11..15: writeln('-5<=n1+n2<=0 OR 11<=n1+n2<=15')

else writeln('n1+n2<-5 OR 15<n1+n2')

end{case};

readln

end.

  1. Реализация конструкции Выбор на языке програмирования.

Case выражение of

совокупность констант1 : ООС1;

совокупность констант2 : ООС2;

совокупность констант … : ООС…;

else оператор простой или серия операторов

end; {Case}

  1. Комментарий к фрагменту программы реализующему конструкцию Выбор:

а) выполняется только тот оператор одиночный или составной (ООС), константа которого равна значению выражения;

б) в случае, если в указанные совокупности констант не входит ни одна константа равная значению выражения, то выполняется else часть.

В случае, если в else ÷не входит не один оператор, то else часть может быть опущена, точно также как и в неструктурируемой форме оператора ЕСЛИ - ТО.

в) тип выражения и констант должен совпадать, и не должен быть типа real и string, он может быть, например типа integer;

г) совокупность констант может задаваться в виде одного или нескольких диапазонов.

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

  1. Схема конструкции выбор.

ООС1

ООС2

ООС3

ООС3

Оператор одиночный или серия операторов

вход

да

нет

да

нет

да

нет

выход

Вопрос 12

Программирование ветвления на Си++

Лекция 5 составление и реализация циклических алгоритмов

Вопрос 1

Варианты конструкции «ПОВТОРЕНИЕ»

При программировании циклических алгоритмов используются три варианта конструкции «ПОВТОРЕНИЕ»: с предварительным условием (предусловием), с последующим условием (постусловием) и с параметром.

Вопрос 2

Конструкция повторение с предусловием (while …do) («ПОКА»)

В этой конструкции используются служебные слова языка Паскаль:

  • While – пока;

  • do – делай

  1. Запись конструкции в виде схемы с использованием блока решение.

  1. Описание работы конструкции.

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

  1. Запись конструкции на языке Паскаль:

while условие выполнения цикла do begin серия операторов

end;

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

  1. Пример решения задачи с использованием конструкции повторение с предусловием (while…do)

    1. Условие задачи (табулирования заданной функции)

Составить программу для расчета значений функции y=ax+b при изменении х в диапазоне от хн до хк с шагом , где хнк, а Dх>0.

    1. Список идентификаторов используемых в схеме:

а, b – параметры заданного выражения функции;

х, хн, хк, – текущее, начальное и конечное значения аргумента функции, а также шаг его изменения;

у – текущее значение функции.

    1. Схема алгоритма решения задачи.

    1. Описание схемы алгоритма решения задачи в словесной форме.

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

В блоке 1 вводятся значения переменных: а, b, начального хн и конечного хк значений параметра цикла х, а также шаг изменения параметра цикла Dх. В блоке 2 параметру цикла присваивается его начальное значение. В блоке 3 проверяется условие выполнения цикла: параметр цикла меньше или равен конечному значению параметра цикла? В случае невыполнения этого условия осуществляется выход из цикла и прекращение работы алгоритма. Если условие выполняется, то осуществляются следующие действия: в блоке 4 переменной у присваивается значение выражения ах+b; в блоке 5 производится вывод значений переменных х и у; в блоке 6 значение параметра цикла увеличивается на величину значения шага параметра цикла. Таким образом, в случае истинности логического выражения х£ хк, выполняется тело цикла, включающее в себя блоки 4, 5 и 6.

Вместо термина параметр цикла часто используют эквивалентный ему термин – переменная цикла.

Приведенное описание использует терминологию программирования (цикл, параметр цикла, и т. д.). Можно описать работу алгоритма, используя вместо терминологии программирования термины задачи, например, вместо словосочетания параметр цикла – аргумент заданной в условии задачи функции и т.д. Для опытного программиста по сравнению со словесным описанием алгоритма более предпочтительной является использование схемы, как более компактной и наглядной формы представления алгоритма. Итак схема алгоритма позволяет понять, в какой последовательности выполняются отдельные операции по нахождению решения задачи. Но она не содержат ответа на вопрос, почему указанный алгоритм позволяет найти правильное решение. Поэтому и целесообразно при разработке алгоритмов, более сложных, чем приведенный алгоритм, прилагать к схеме пояснение, служащее для ответа на указанный вопрос.

    1. Протокол испытания схемы алгоритма.

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

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

a=2; b=1; xn=-1; xk=2; dx=1;

x:=xn (x=-1);

х£ хк (-1 £ 2 – выражение истинно);

y:=ax+b (y=2*(-1)+1=-1); вывод: х=-1 у=-1;

х£ хк (-1 £ 2 – выражение истинно);

y:=ax+b (y=2*(-1)+1=-1); вывод: х=-1 у=-1;

х£ хк (-1 £ 2 – выражение истинно);

y:=ax+b (y=2*(-1)+1=-1); вывод: х=-1 у=-1;

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

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

    1. Таблица соответствия обозначений в схеме алгоритма и программе.

В схеме алгоритма

В программе

dx

хн

xn

хк

xk

    1. Программа на языке Паскаль.

{...}

program whilep;

var

a,b,x,y,xn,xk,dx:real;

begin

write('введите значения переменных a,в,xn,xk,dx: '); readln(a,b,xn,xk,dx);

writeln('Исходные данные: a=',a:4:2,' b=',b:4:2,' xn=',xn:4:2,

' xk=',xk:4:2,’ dx=',dx:4:2);

writeln('Результат табулирования функции y=ax+b: ');

x:=xn;

while x<=xk do

begin

y:=a*x+b;

writeln(' x=',x:6:2,' y=':20,y:4:2);

x:=x+dx

end;

readln

end.

    1. Анализ соответствия схемы алгоритма и программы.

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

    1. Особенности конструкции while:

а) Поскольку используется предусловие, то тело цикла может быть не выполнено ни разу;

б) В качестве предусловия записывается условие выполнения цикла, а не выхода из него;

в) Тип и значение параметра цикла являются произвольными;

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