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

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

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

1. Что такое алгоритм разветвляющей структуры?

2. Какие виды разветвления вы знаете?

3. Когда используется оператор безусловного перехода?

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

5. Когда используется оператор выбора?

6. Из чего состоит оператор выбора (варианта)?

7. Что такое метка?

Задачи:

1. Составить программу вычисления функции при изменении аргумента x в интервале с шагом h=0,1.

2. Написать программу вычисления функции , для которой . Значение y изменяется в интервале с шагом .

3. Написать программу вычисления пары функций z и y: , . Значение x изменяется в интервале с шагом .

4. Составить программу вычисления и печати среднего арифметического положительных значений функции . Аргумент x изменяется в интервале с шагом .

5. Рассчитать и выдать на печать таблицу значений функции . Шаг аргумента 0,1.

6. Найти минимальную ординату функции в интервале , с шагом 0,1 и зафиксировать ее абсциссу.

7. Составить программу вычисления сумму функции . Шаг аргумента 0,1.

8. Составить программу вычисления функции при изменении аргумента x в интервале , с шагом . Печатать те значения y, которые удовлетворяют условию .

9. Найти сумму тех членов последовательности , которое по абсолютной величине больше 0,5; x и h задать вводом.

10. Вычислить .

Для с шагом 0,5. b=3,5: c=1,8.

11. Вычислить . Значения a произвольны.

12. Составить программу вычисления функций и при изменении аргумента x в интервале [1,5…2,5] с шагом 0,1. Найти сумму тех значений z, которые удовлетворяют условию z

13. Составить программу вычисления переменной z по одной из формул: . Значения y рассчитываются по формуле для с шагом 0,5.

14. Вычислить . Параметр a изменяется в интервале [1..12] с шагом 1,0.

15. Вычислить сумму значений функции , если известно, что аргумент x в интервале [0..1] изменяется с шагом 0,1, а в интервале [1..2] с шагом 0,2.

16. Для произвольных чисел a, b подсчитать и напечатать , где с наибольшее по абсолютной величине из чисел a и b.

17. Найти все значения функции в промежутке с шагом 0,1.

18. Для 10 произвольных значений x подсчитать сумму всех чисел меньше 2.

19. Составить программу вычисления суммы значений функции y, которые удовлетворяют условию y5z, где , . Аргумент x изменяется в интервале [1,5…3,5] с шагом h=0,1.

20. Вычислить для с шагом h=0,5.

Литературы:

Основная литература:

1. Глушаков С.В. TURBO PASCAL Харьков, «Фолио» 2002 г.-492 с.

2. Епанешников А.М. TURBO PASCAL 7.0 .М: «Диалог» 2002 г.-367 с.

3. Манежный О.А. TURBO PASCAL М: «Диалектика» 2001г.-446 с.

4. Климова Л.М. PASCAL 7.0/ Практическое программирование. Решение типовых задач- М: «КУДИЦ-ОБРАЗ»,2002 г.-517 с.

5. Немнюгин С.А. TURBO PASCAL 7.0/Учебник. С-П: 2001 г.-491 с.

6. Калдыбаев С.У., Ахмедиярова А.Т. Курс лабораторных работ по программированию на языке Паскаль. Алматы,2003 г. 43 с.

7. Рапаков Г.Г. TURBO PASCAL 7.0 Учебный курс. М: 2002 г.-349 с.

Дополнительная литература:

1. Епанешников В. Программирование в среде Турбо Паскаль 7.0. — М.: ДИАЛОГ-МИФИ, 1993. — 288 с.

2. Матчо Дж., Культин Н. TURBO PASCAL в задачах и примерах. Киев-2002 г.-256 с.

3. Йенсен К., Вирт Н. Паскаль. Руководство для пользователя и описание языка: Пер. с англ. — М.: Финансы и статистика, 1982. — 151 с.

4. Пестриков В.М., Маслобоев А.М. TURBO PASCAL 7.0 изучаем на примерах. М: 2002 г.-456 с.

5. Форсайт Р. Паскаль для всех: Пер. с англ.- М.: Машиностроение, 1986. — 288 с.

6. Фаронов В.В. TURBO PASCAL 7.0/Практика программирования. Учебное пособие.С-П:-2003 г.-1033 с.

7. Юркин А.Г. Задачник по программированию. С-П: «Питер»-2002 г.

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

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

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

ifthenelse ;

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

Пример:пусть требуется найти число m=max(a,b). Этой задаче соответствует следующий фрагмент программы на Паскале:

if ab then m:=a else m:=b;

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

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

case Выражение of

Вариант1: Оператор1;

Вариант2: Оператор2;

ВариантN: ОператорN;

[else ОператорN1;]

end;

Квадратные скобки означают то, что часть else может отсутствовать.

Выражение в простейших случаях может быть целочисленным или символьным. В качестве вариантов можно применять:

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

2. Интервал, например: 1..5, ‘a’..’z’.

3. Список значений или интервалов, например: 1,3,5..8,10,12.

Выполняется оператор case следующим образом: вычисляется выражение после слова case и по порядку проверяется, подходит полученное значение под какой-либо вариант, или нет. Если подходит, то выполняется соответствующий этому варианту оператор, иначе — есть два варианта. Если в операторе case записана часть else, то выполняется оператор после else, если же этой части нет, то не происходит вообще ничего.

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

Каждая метка, которая представляет собой целое число без знака, должна быть объявлена в разделе объявления меток до того, как она появится в тексте программы. На Паскале они объявляется в разделе описания переменных (через запятую) label 1,2,3.

Метка – натуральное число от 1 до 9999. Метка должна быть описана в разделе описания меток.

Решение одного варианта:Написать программу вычисления функции , для которой . Значение y изменяется в интервале с шагом .

Блок-схема: Описание блок-схемы:1-блок – начало алгоритма2-блок – ввод начальное значение интервала y=0 и шаг 3-блок – проверка условий, если y=0,5 то происходит передача управление к 6-блоку, иначе выполняется 5-блок5-блок и 6-блок – вычисление значение функции x в зависимости от значения аргумента y7-блок — вычисление значение функции z в зависимости от значения x8-блок – печать полученного результата, значение z.9-блок — нахождение следующего значения y. После нахождения следующего значения происходит передача управления к 3-блоку, т.е. проверяем, находится ли полученное значение в данной отрезке.10-блок — конец алгоритма

Программа:

Program PRS;

Label 1;

Var z,x,y,h:real;

Begin

y:=0; h:=0.05;

1: if y

if y=0.5 then x:=sqr(y)+y+1

else x:=y-1;

z:=2*x-7;

write (‘z=’,z);

y:=y+h; goto 1;

end;

end.

Лабораторная работа №4

Операторы цикла с параметром (со счетчиком)

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

1. Как называются алгоритмы, в основе которых лежит структура повторения?

2. Сколько операторов цикла вам известно?

3. С помощью каких служебных слов записывается цикл с параметром?

4. Верно ли, что цикл с параметром применяется в тех случаях, когда заранее известно число повторений?

5. Какой тип должен иметь параметр цикла в цикле с параметром?

6. Какой тип должны иметь начальное и конечное значения в цикле с параметром?

Задачи:

Составить программу вычисления суммы некоторых числовых радов:

1. (ответ: e).

2. (ответ: 1/e).

3. (ответ: ln2).

4. (ответ: 2).

5. (ответ: 2/3).

6. (ответ: /4).

7. (ответ: 1).

8. (ответ: 1/2).

9. (ответ: 3/4).

10. (ответ:1/2- /8).

11. (ответ: 1/4).

12. (ответ: ).

13. (ответ: ).

14. (ответ: ).

15. (ответ: ).

16. (ответ: ).

17. (ответ: ).

18. (ответ: ).

19. (ответ: ). При k=1 значение .

20. (ответ: ). При k=1 значение .

Литературы:

Основная литература:

1. Глушаков С.В. TURBO PASCAL Харьков, «Фолио» 2002 г.-492 с.

2. Епанешников А.М. TURBO PASCAL 7.0 .М: «Диалог» 2002 г.-367 с.

3. Манежный О.А. TURBO PASCAL М: «Диалектика» 2001г.-446 с.

4. Климова Л.М. PASCAL 7.0/ Практическое программирование. Решение типовых задач- М: «КУДИЦ-ОБРАЗ»,2002 г.-517 с.

5. Немнюгин С.А. TURBO PASCAL 7.0/Учебник. С-П: 2001 г.-491 с.

6. Калдыбаев С.У., Ахмедиярова А.Т. Курс лабораторных работ по программированию на языке Паскаль. Алматы,2003 г. 43 с.

7. Рапаков Г.Г. TURBO PASCAL 7.0 Учебный курс. М: 2002 г.-349 с.

Дополнительная литература:

1. Епанешников В. Программирование в среде Турбо Паскаль 7.0. — М.: ДИАЛОГ-МИФИ, 1993. — 288 с.

2. Матчо Дж., Культин Н. TURBO PASCAL в задачах и примерах. Киев-2002 г.-256 с.

3. Йенсен К., Вирт Н. Паскаль. Руководство для пользователя и описание языка: Пер. с англ. — М.: Финансы и статистика, 1982. — 151 с.

4. Пестриков В.М., Маслобоев А.М. TURBO PASCAL 7.0 изучаем на примерах. М: 2002 г.-456 с.

5. Форсайт Р. Паскаль для всех: Пер. с англ.- М.: Машиностроение, 1986. — 288 с.

6. Фаронов В.В. TURBO PASCAL 7.0/Практика программирования. Учебное пособие.С-П:-2003 г.-1033 с.

7. Юркин А.Г. Задачник по программированию. С-П: «Питер»-2002 г.

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

В реальных задачах часто требуется выполнять одни и те же операторы несколько раз. Возможны различные варианты: выполнять фрагмент программы фиксированное число раз, выполнять, пока некоторое условие является истинным, и т. п. Цикл – такая форма организации действий, при которой одна и та же последовательность действий совершается несколько раз (или ни разу) до тех пор, пока выполняется некоторое условие. Операторы цикла определяют действия, которые надо выполнить многократно, и количество их повторений. В связи с наличием вариантов в Паскале существует 3 типа циклов: For, While и Repeat. Если количество повторений заранее известно, то целесообразно использовать оператор For. А если количество повторений определяется условиями – операторы While или Repeat.

Цикл с параметром (со счетчиком) записывается так:

for управляющая переменная:= todo ;

Вместо to возможно слово downto.

Пример: требуется вывести на экран таблицу квадратов натуральных чисел от 2 до 20.

var i: integer;

begin

for i:=2 to 20 do

writeln(i,’ ‘,sqr(i));

end.

При выполнении цикла происходит следующее: переменной i присваивается начальное значение (2), затем выполняется оператор (простой или составной), после этого к i прибавляется 1, и проверяется, не стало ли значение i равно конечному (20). Если нет, то вновь выполняется оператор, добавляется 1, и т. д. В случае, когда вместо to используется downto, все происходит наоборот: единица не прибавляется, а вычитается. Например, следующий цикл выведет ту же таблицу, но в обратном порядке:

for i:=20 downto 2 do writeln(i,’ ‘,sqr(i));

Решение одного варианта:Написать программу, которая вычисляет сумму первых n целых положительных чисел. Количество суммируемых чисел должно вводиться во время работы программы.

Блок-схема: Описание блок-схемы:1-блок – начало алгоритма2-блок – ввод количество чисел (n)3-блок – начальное значение суммы Summ=0 (только тогда при первом прохождении тела цикла мы получим значение переменной Summ равное первому слагаемому).4-блок – начало цикла. Счетчик изменяется на единицу при каждом следующем исполнении оператора цикла.5-блок – сумма постепенно накапливается. При выходе из цикла значение счетчика совпадает с конечным значением, т.е. 6-блок – печать полученного результата7-блок – конец алгоритма

program summa;

var n: integer;

summ: integer;

i: integer;

begin

write (‘введите количество суммируемых чисел’);

readln (n);

summ:=0;

for i:=1 to n do

summ:=summ+i;

write(‘сумма первых‘,n,’целых положительных чисел’);

writeln (‘равна’,Summ);

end.

Лабораторная работа №5

Статьи к прочтению:

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


Похожие статьи: