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

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

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

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

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

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

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

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

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

Задачи:

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

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

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

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

5. Рассчитать и выдать на печать таблицу значений функции Программирование алгоритмов разветвляющей структуры - student2.ru . Шаг аргумента 0,1.

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

7. Составить программу вычисления сумму функции Программирование алгоритмов разветвляющей структуры - student2.ru . Шаг аргумента 0,1.

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

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

10. Вычислить Программирование алгоритмов разветвляющей структуры - student2.ru .

Для Программирование алгоритмов разветвляющей структуры - student2.ru с шагом 0,5. b=3,5: c=1,8.

11. Вычислить Программирование алгоритмов разветвляющей структуры - student2.ru . Значения a произвольны.

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

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

14. Вычислить Программирование алгоритмов разветвляющей структуры - student2.ru . Параметр a изменяется в интервале [1..12] с шагом 1,0.

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

16. Для произвольных чисел a, b подсчитать и напечатать Программирование алгоритмов разветвляющей структуры - student2.ru , где с наибольшее по абсолютной величине из чисел a и b.

17. Найти все значения функции Программирование алгоритмов разветвляющей структуры - student2.ru в промежутке Программирование алгоритмов разветвляющей структуры - student2.ru с шагом 0,1.

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

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

20. Вычислить Программирование алгоритмов разветвляющей структуры - student2.ru для Программирование алгоритмов разветвляющей структуры - student2.ru с шагом 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 передачи управления). Они позволяют выбрать для выполнения один из простых или составных операторов или не выбрать ни одного в зависимости от условия разветвления.

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

if <условие> then <оператор1> else <оператор2>;

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

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

if a>b 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. Метка должна быть описана в разделе описания меток.

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

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

Программа:

Program PRS;

Label 1;

Var z,x,y,h:real;

Begin

y:=0; h:=0.05;

1: if y<1 then begin

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. Программирование алгоритмов разветвляющей структуры - student2.ru (ответ: e).

2. Программирование алгоритмов разветвляющей структуры - student2.ru (ответ: 1/e).

3. Программирование алгоритмов разветвляющей структуры - student2.ru (ответ: ln2).

4. Программирование алгоритмов разветвляющей структуры - student2.ru (ответ: 2).

5. Программирование алгоритмов разветвляющей структуры - student2.ru (ответ: 2/3).

6. Программирование алгоритмов разветвляющей структуры - student2.ru (ответ: Программирование алгоритмов разветвляющей структуры - student2.ru /4).

7. Программирование алгоритмов разветвляющей структуры - student2.ru (ответ: 1).

8. Программирование алгоритмов разветвляющей структуры - student2.ru (ответ: 1/2).

9. Программирование алгоритмов разветвляющей структуры - student2.ru (ответ: 3/4).

10. Программирование алгоритмов разветвляющей структуры - student2.ru (ответ:1/2- Программирование алгоритмов разветвляющей структуры - student2.ru /8).

11. Программирование алгоритмов разветвляющей структуры - student2.ru (ответ: 1/4).

12. Программирование алгоритмов разветвляющей структуры - student2.ru (ответ: Программирование алгоритмов разветвляющей структуры - student2.ru ).

13. Программирование алгоритмов разветвляющей структуры - student2.ru (ответ: Программирование алгоритмов разветвляющей структуры - student2.ru ).

14. Программирование алгоритмов разветвляющей структуры - student2.ru (ответ: Программирование алгоритмов разветвляющей структуры - student2.ru ).

15. Программирование алгоритмов разветвляющей структуры - student2.ru (ответ: Программирование алгоритмов разветвляющей структуры - student2.ru ).

16. Программирование алгоритмов разветвляющей структуры - student2.ru (ответ: Программирование алгоритмов разветвляющей структуры - student2.ru ).

17. Программирование алгоритмов разветвляющей структуры - student2.ru (ответ: Программирование алгоритмов разветвляющей структуры - student2.ru ).

18. Программирование алгоритмов разветвляющей структуры - student2.ru (ответ: Программирование алгоритмов разветвляющей структуры - student2.ru ).

19. Программирование алгоритмов разветвляющей структуры - student2.ru (ответ: Программирование алгоритмов разветвляющей структуры - student2.ru ). При k=1 значение Программирование алгоритмов разветвляющей структуры - student2.ru .

20. Программирование алгоритмов разветвляющей структуры - student2.ru (ответ: Программирование алгоритмов разветвляющей структуры - student2.ru ). При k=1 значение Программирование алгоритмов разветвляющей структуры - student2.ru .

Литературы:

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

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 управляющая переменная:=<начальное значение> to <конечное значение> do <оператор>;

Вместо 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 целых положительных чисел. Количество суммируемых чисел должно вводиться во время работы программы.

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

Наши рекомендации